How to Host a Factorio Headless Server (Linux)
This guide walks through standing up a Factorio dedicated server on Linux. There are two install paths: the headless tarball from Wube Software (no graphics or sounds, smaller download) and SteamCMD (Steam app 427520, full game files but starts headless when given --start-server flags).
Two valid install methods: the headless package is more efficient for a server-only host. SteamCMD downloads the full game data but behaves identically as a server when launched with --start-server. Pick whichever fits your workflow.
Method A: Headless Tarball (Recommended for Server-Only Hosts)
Wube Software publishes a Linux headless package at factorio.com/download/headless. Download, extract, run.
mkdir -p /opt/factorio && cd /opt/factorio
wget https://factorio.com/get-download/stable/headless/linux64 -O factorio_headless.tar.xz
tar -xJvf factorio_headless.tar.xz
Method B: SteamCMD
If you prefer SteamCMD or want a single-tool flow:
steamcmd +force_install_dir /opt/factorio +login anonymous +app_update 427520 validate +quit
The downloaded build is the full game (with graphics/sounds), but it starts in headless mode when you pass --start-server at launch — same behavior as the dedicated headless package.
Step 2: Generate or Bring a Save
Factorio's dedicated server runs from a save file. Either:
- Copy an existing single-player save into
/opt/factorio/saves/ - Or generate a new server-side save:
./bin/x64/factorio --create ./saves/my-save.zip
Step 3: Launch the Server
cd /opt/factorio
./bin/x64/factorio --start-server ./saves/my-save.zip
Run ./bin/x64/factorio --help for the full list of command-line arguments. Common useful ones:
| Flag | Purpose |
|---|---|
--start-server SAVE.zip | Start headless with the named save |
--start-server-load-latest | Auto-pick the most recent save in saves/ |
--server-settings server-settings.json | JSON file with server name, password, visibility, autosave, etc. |
--server-adminlist server-adminlist.json | JSON file with admin usernames |
--server-banlist server-banlist.json | JSON file with banned usernames |
--server-whitelist server-whitelist.json | JSON file with whitelisted usernames |
--port N | UDP port (default 34197) |
--rcon-port N | RCON port (TCP) |
--rcon-password PASS | RCON password |
Step 4: Edit server-settings.json
Factorio ships a data/server-settings.example.json template. Copy it and edit:
cp data/server-settings.example.json server-settings.json
Key fields:
name— server display name in the public browserdescription— short description shown to browsing playerstags— discoverability tagsgame_password— connect password (empty for open)visibility.public— whether to advertise on the Factorio public browservisibility.lan— LAN announceautosave_interval— autosave every N minutesautosave_slots— how many rotating autosave slots to keepafk_autokick_interval— kick idle players after N minutesauto_pause— pause when no players online
Step 5: Open the Port
Default Factorio port is UDP 34197. Forward that port on your router/firewall. If you want public browser visibility, the server announces itself to the Factorio matchmaker — no inbound DNS work needed.
If you also enable RCON, open the configured RCON port (TCP).
Step 6: Mods
Mods are downloaded automatically when set in the save. Server-side mod installation:
- Subscribe to the mods on mods.factorio.com with the username/password your server uses (in
server-settings.json'susername+tokenfields). - Server downloads selected mods on first start.
- For modded saves, players need the same mods installed client-side — Factorio's matchmaker compares mod lists at connect time.
First Boot Verification
- Watch the log for
Hosting game at IP ADDRESS(es) and portline — that's the green light. - The server should appear in the public browser within a couple of minutes if visibility is set to public.
- Test connect from your client: paste IP:port directly, or browse the public list.
Common Boot Failures
| Symptom | Fix |
|---|---|
| "Save file not found" | Verify save path is correct (relative paths are relative to the factorio binary's cwd) |
| Server doesn't appear in public browser | Check visibility.public in server-settings.json; verify username + token |
| Mods don't download | username / token in server-settings missing or wrong; subscribe to mods on the website with that account first |
| "Different version" rejection | Server version doesn't match save's mod versions; update the server with SteamCMD or re-download headless |
Hardware Notes
Factorio is single-thread heavy on the server side. Late-game megabases stress the simulation tick rate; large factories with many trains and complex circuit logic will cap your single-thread CPU before they cap your RAM. NVMe storage helps with autosave write times.
Related Reading
- Official: Factorio Wiki — Multiplayer
- Official: Factorio headless package download
Quick Start with Supercraft
Supercraft hosts Factorio dedicated servers with the headless package pre-installed, server-settings.json exposed via panel form fields, autosave + autosave-slots tuned, mod auto-install wired to your factorio.com credentials. RCON is pre-configured.