FROM debian:bookworm-slim

ARG FACTORIO_VERSION

ENV FACTORIO_HOME=/opt/factorio \
    FACTORIO_DATA=/factorio

RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        xz-utils \
        libstdc++6 \
        libgcc-s1 \
        sudo; \
    rm -rf /var/lib/apt/lists/*; \
    test -n "${FACTORIO_VERSION}"; \
    mkdir -p /opt; \
    curl -fL \
        "https://factorio.com/get-download/${FACTORIO_VERSION}/headless/linux64" \
        -o /tmp/factorio.tar.xz; \
    tar -xJf /tmp/factorio.tar.xz -C /opt; \
    rm -f /tmp/factorio.tar.xz; \
    useradd \
        --create-home \
        --uid 1000 \
        --shell /bin/bash \
        factorio; \
    mkdir -p \
        "${FACTORIO_DATA}/saves" \
        "${FACTORIO_DATA}/mods" \
        "${FACTORIO_DATA}/config"; \
    chown -R factorio:factorio \
        "${FACTORIO_HOME}" \
        "${FACTORIO_DATA}"


COPY entrypoint.sh /
RUN chmod +x /entrypoint.sh && chown factorio:factorio /entrypoint.sh

WORKDIR ${FACTORIO_DATA}

USER factorio

VOLUME ["/factorio"]

EXPOSE 34197/udp
EXPOSE 27015/tcp

ENTRYPOINT ["/entrypoint.sh"]

CMD ["--start-server", "/factorio/saves/world.zip", "--server-settings", "/factorio/config/server-settings.json"]
