How to Set Up a Headless Factorio Server on a VPS
Run a Factorio headless server the right way: direct download (no SteamCMD needed), port 34197, mod syncing, and why this is the game where RAM barely matters.
Factorio's multiplayer shines on a dedicated headless server — no graphics, minimal overhead, and rock-solid uptime. It's also refreshingly different from other survival servers: you don't need SteamCMD, RAM barely matters, and the real bottleneck is single-thread CPU. This guide sets one up cleanly.
What you need
- A Linux VPS: Ubuntu 22.04/24.04. Factorio is light on RAM — 4 GB is plenty for most games. What matters is a fast CPU core (see below).
- Open port: UDP 34197 (Factorio's default).
Step 1: Create a user and download the headless server
Factorio's headless server is distributed directly by the developers — no SteamCMD required:
sudo adduser --disabled-password --gecos "" factorio
sudo su - factorio
cd ~
curl -sL "https://factorio.com/get-download/stable/headless/linux64" -o factorio.tar.xz
tar -xf factorio.tar.xz
This extracts a factorio/ directory with the bin/x64/factorio binary. To update later, just download the new archive and extract it over the top.
{{SCREENSHOT}}
Step 2: Create a map (save file)
The headless server runs from a save file, which you generate once:
cd ~/factorio
./bin/x64/factorio --create ./saves/myworld.zip
Step 3: Set up server settings
Copy the example settings and edit them:
cp data/server-settings.example.json data/server-settings.json
nano data/server-settings.json
Set name, description, max_players, visibility (public/LAN), and a game_password if you want it private. If you want the server to appear in the public browser, add your Factorio.com username and token.
Step 4: Open the firewall
sudo ufw allow 34197/udp
sudo ufw reload
Open UDP 34197 on any provider firewall too.
Step 5: Run it as a systemd service
Create /home/factorio/start.sh:
#!/bin/bash
cd /home/factorio/factorio
./bin/x64/factorio --start-server ./saves/myworld.zip \
--server-settings ./data/server-settings.json
chmod +x /home/factorio/start.sh
# /etc/systemd/system/factorio.service
[Unit]
Description=Factorio Headless Server
After=network-online.target
[Service]
Type=simple
User=factorio
ExecStart=/home/factorio/start.sh
Restart=on-failure
RestartSec=10
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now factorio
sudo journalctl -u factorio -f
Step 6: Mods (everyone must match)
Factorio mods live in the mods/ folder as .zip files, listed in mod-list.json. Drop the mod zips in, enable them in mod-list.json, and restart. The unbreakable rule: every player must run the exact same mods and versions as the server, or they can't join. Factorio helpfully offers to sync mods to clients on connect.
Why RAM barely matters (and CPU is everything)
Factorio is the classic example of a UPS/CPU-bound game. UPS (updates per second) is the server's simulation rate, and it drops when a "megabase" has too much going on for a single CPU core to keep up — because Factorio's core simulation is largely single-threaded. A 4 GB box runs enormous factories fine on memory; what limits you is per-core clock speed. If your UPS drops below 60, you need a faster CPU, not more RAM. This makes Factorio the opposite of ARK or Palworld — a useful contrast covered in how much RAM and CPU a game server needs.
Admin (RCON) and backups
Factorio supports RCON for remote administration — add --rcon-port 27015 --rcon-password yourpassword to the start command, then connect any RCON client to run console commands or Lua. In-game, admins listed in server-adminlist.json can promote others, ban players, and adjust settings.
The server autosaves periodically to the saves/ folder, but keep your own rotation too — a megabase is irreplaceable:
# nightly backup, keep two weeks
0 4 * * * tar -czf /home/factorio/backups/fac-$(date +\%F).tar.gz /home/factorio/factorio/saves && find /home/factorio/backups -name 'fac-*' -mtime +14 -delete
See how to back up your game server automatically for a fuller routine that works across every game you host.
FAQ
What port does a Factorio server use?
UDP 34197 by default. Open it on the OS and provider firewalls.
Do I need SteamCMD for a Factorio server?
No. Factorio's headless server is downloaded directly from factorio.com — no SteamCMD involved. Updating means downloading the new archive.
How much RAM does a Factorio server need?
Very little — 4 GB handles most games comfortably. Factorio is CPU-bound, not RAM-bound, so invest in a fast CPU core rather than more memory.
Why does my Factorio server's UPS drop on a big base?
Because the simulation is largely single-threaded and a huge factory overwhelms one CPU core. The fix is a higher-clock CPU; adding RAM won't help UPS.
Factorio rewards fast cores over big memory — compare high-clock plans on our pricing page or launch on game server hosting.