{"id":22092482,"url":"https://github.com/goofball222/factorio","last_synced_at":"2026-04-13T21:06:24.836Z","repository":{"id":41253036,"uuid":"71163264","full_name":"goofball222/factorio","owner":"goofball222","description":"Factorio headless server Docker container","archived":false,"fork":false,"pushed_at":"2025-03-24T18:16:12.000Z","size":262,"stargazers_count":65,"open_issues_count":2,"forks_count":20,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-03-30T19:11:05.177Z","etag":null,"topics":["docker-container","factorio","factorio-headless-server"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/goofball222.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-10-17T17:22:31.000Z","updated_at":"2025-03-24T18:13:57.000Z","dependencies_parsed_at":"2023-10-17T04:38:12.772Z","dependency_job_id":"87473808-3359-472f-bc6d-c90ff82e5ac4","html_url":"https://github.com/goofball222/factorio","commit_stats":{"total_commits":416,"total_committers":14,"mean_commits":"29.714285714285715","dds":0.09615384615384615,"last_synced_commit":"a534a927ae3bc3c5438737fcdd58f6a2bcacbf19"},"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goofball222%2Ffactorio","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goofball222%2Ffactorio/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goofball222%2Ffactorio/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/goofball222%2Ffactorio/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/goofball222","download_url":"https://codeload.github.com/goofball222/factorio/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247550691,"owners_count":20956987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker-container","factorio","factorio-headless-server"],"created_at":"2024-12-01T03:09:37.810Z","updated_at":"2026-04-13T21:06:24.830Z","avatar_url":"https://github.com/goofball222.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Containerized Factorio Headless Server\n\n[![Latest Build Status](https://github.com/goofball222/factorio/actions/workflows/build-latest.yml/badge.svg)](https://github.com/goofball222/factorio/actions/workflows/build-latest.yml) [![Docker Pulls](https://img.shields.io/docker/pulls/goofball222/factorio.svg)](https://hub.docker.com/r/goofball222/factorio/) [![Docker Stars](https://img.shields.io/docker/stars/goofball222/factorio.svg)](https://hub.docker.com/r/goofball222/factorio/) [![License](https://img.shields.io/github/license/goofball222/factorio.svg)](https://github.com/goofball222/factorio)\n\n| Docker Tag | Factorio Version | Description | Release Date |\n| --- | :---: | --- | :---: |\n| [latest, stable](https://github.com/goofball222/factorio/blob/main/stable/Dockerfile) | [2.0.76](https://forums.factorio.com/132893) | Factorio headless server stable release | 2026-03-19 |\n| [experimental](https://github.com/goofball222/factorio/blob/main/experimental/Dockerfile) | [2.0.76](https://forums.factorio.com/132893) | Factorio headless server experimental release | 2026-03-19 |\n| [2.0.76](https://github.com/goofball222/factorio/releases/tag/2.0.76) | [2.0.76](https://forums.factorio.com/132893) | Factorio headless server stable static release | 2026-03-19 |\n\n---\n\n* [Recent changes, see: GitHub CHANGELOG.md](https://github.com/goofball222/factorio/blob/main/CHANGELOG.md)\n* [Report any bugs, issues or feature requests on GitHub](https://github.com/goofball222/factorio/issues)\n\n---\n\nFor security/attack surface reduction the container is configured to run the Factorio headless server with an internal user \u0026 group `factorio` having a pre-set UID \u0026 GID of 999.\nThe container will attempt to adjust permissions on mapped volumes and data to match before dropping privileges to start the Factorio server processes.\nIf the container is being run with a different Docker --user setting permissions may need to be fixed manually.\n\nIE: `chown -R 999:999 factorio`\n\nA custom UID and GID can be configured for the container internal factorio user and group. For more information see the \"Environment variables\" section in this document.\n\n---\n\n**Always stop the existing container and make a VERIFIED backup copy of your Factorio save data before installing newer images.**\n\n---\n\n## Usage\n\n**The container has a single volume `/factorio` with the following structure:**\n\n    factorio\n    |-- config\n    |   |-- map-gen-settings.json\n    |   |-- map-gen-settings.example.json\n    |   |-- map-settings.json\n    |   |-- map-settings.example.json\n    |   |-- RCON.pw\n    |   |-- server-adminlist.json\n    |   |-- server-banlist.json\n    |   |-- server-settings.json\n    |   `-- server-whitelist.json\n    |-- mods\n    |   `-- mod.zip\n    |-- saves\n    |   `-- save.zip\n    `-- scenarios\n        `-- scenario.zip\n\n**The container exposes two ports:**\n* `27015/tcp`: Factorio RCON port\n* `34197/udp`: Factorio default server port\n\n---\n\n**The most basic way to run this container:**\n\n```bash\n$ docker run --name factorio -d \\\n    -p 34197:34197/udp \\\n    goofball222/factorio\n```\n\n---\n\n**Recommended: run via [Docker Compose](https://docs.docker.com/compose/):**\n\nHave the container store the config, mods, saves, and scenarios on a local file-system or in a specific, known data volume (recommended for persistence and troubleshooting) and expose the RCON port for admin:\n\n```bash\n\nversion: '3'\n\nservices:\n  factorio:\n    image: goofball222/factorio\n    container_name: factorio\n    restart: unless-stopped\n    ports:\n      - \"27015:27015\"\n      - \"34197:34197/udp\"\n    volumes:\n      - /etc/localtime:/etc/localtime:ro\n      - .:/factorio\n    environment:\n      - TZ=UTC\n\n```\n\n[Example basic `docker-compose.yml` file](https://raw.githubusercontent.com/goofball222/factorio/main/examples/docker-compose.yml)\n\n---\n\n**Logs are available directly from the running container, IE: \"docker logs factorio\"**\n\n---\n\n**Environment variables:**\n\n| Variable | Default | Description |\n| :--- | :---: | --- |\n| `DEBUG` | ***false*** | Set to *true* for extra container verbosity for debugging |\n| `FACTORIO_OPTS` | ***unset*** | Add custom command line options to factorio server executable at runtime |\n| `FACTORIO_PORT` | ***unset*** | Override server default port for game client connections |\n| `FACTORIO_RCON_PASSWORD` | ***unset*** | Specify the server RCON password |\n| `FACTORIO_RCON_PORT` | ***27015*** | Specifies the server RCON admin port |\n| `FACTORIO_SCENARIO` | ***unset*** | Specifies a scenario name for the server to run |\n| `PGID` | ***999*** | Specifies the GID for the container internal factorio group (used for file ownership) |\n| `PUID` | ***999*** | Specifies the UID for the container internal factorio user (used for process and file ownership) |\n| `RUN_CHOWN` | ***true*** | Set to *false* to disable the container automatic `chown` at startup. Speeds up startup process on overlay2 Docker hosts. **NB/IMPORTANT:** It's critical that you insure directory/data permissions on all mapped volumes are correct before disabling this or Factorio will not start. |\n| `RUNAS_UID0` | ***false*** | Set to *true* to force the container to run the Factorio server process as UID=0 (root) - **NB/IMPORTANT:** running with this set to \"true\" is insecure |\n\n---\n\nDuring the first launch of the container the server-settings.json and map-gen-settings.json config files will be populated with the Factorio sample/defaults if they don't already exist. It is highly recommended to edit these files and relaunch the container afterwards or provide pre-setup copies in the config directory prior to first launch. The config sample files are available in the headless server tar.gz file in the \"data\" folder. The container will also generate a default map / save.zip in the saves folder if one is not found on launch.\n\nThe RCON password can be set via the FACTORIO_RCON_PASSWORD ENV flag or loaded from `/factorio/config/RCON.pwd` each time the container is started. If the FACTORIO_RCON_PASSWORD ENV var is not set or the RCON.pwd file is not present a random RCON password will be generated and saved in `/factorio/config/RCON.pwd`. The active RCON password can also be found at the start of the container log file at each launch.\n\n---\n\n## Optional config examples\n\n`config/server-whitelist.json` - **if present only the configured Factorio users will be allowed access**\n\n    [\n        \"user1\",\n        \"user2\",\n        \"user3\"\n    ]\n\n`config/server-banlist.json` - if present the configured Factorio user IDs will be denied access\n\n    [\n        \"banneduser1\",\n        \"banneduser2\",\n        \"banneduser3\",\n        \"banneduser4\"\n    ]\n\n`config/server-adminlist.json` - if present the configured Factorio user IDs will have admin access\n\n    [\n        \"adminuser1\",\n        \"adminuser2\"\n    ]\n\n[//]: # (Licensed under the Apache 2.0 license)\n[//]: # (Copyright 2019 The Goofball - goofball222@gmail.com)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoofball222%2Ffactorio","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgoofball222%2Ffactorio","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgoofball222%2Ffactorio/lists"}