Pick the right download
There are two Linux packages on the factorio.com downloads page. The ordinary Linux download is the full game. The headless package leaves out everything a pure server does not need, including graphics and sounds, and is not linked against libraries a bare server may not have, such as Xlib, libGL or libasound. If you are running on somebody else's hardware, the headless package is the one to take.
One requirement is easy to miss: the wiki notes that Factorio now needs glibc 2.31, which older enterprise distributions do not ship. Check that before you spend an evening on the rest.
Make the save first
A dedicated server requires a save file to be handed to it. Create one from the command line rather than from the menus:
./bin/x64/factorio --create ./saves/my-save.zip./bin/x64/factorio --start-server ./saves/my-save.zip
If you want a custom world, the map settings have to be applied at creation time. The wiki is explicit that --map-gen-settings and --map-settings must be used with --create, so:
./bin/x64/factorio --create saves/my-save.zip --map-gen-settings my-map-gen-settings.json --map-settings my-map-settings.json
Those two files control map generation, which is width, height, ore patch frequency and size, and world behaviour, which is pollution spread, biter expansion and evolution. Example files ship in the data subdirectory and are also published in Wube's factorio-data repository.
What headless mode changes
Started with --start-server, the game behaves differently in several documented ways. Graphics are never initialised, so it starts faster and works on a machine with no display at all. It loads the save it was given and begins immediately. The server has no character in the world. And the game pauses whenever no players are connected, unless you switch that off with the no-auto-pause option in server-settings.json.
That last one is a design choice, not a bug. A paused server does not burn processor time on an empty factory. Turn it off only if you want production to continue overnight.
server-settings.json
Starting the server requires you to name a settings file, which lives in the Factorio data folder by default. The recommended approach is to copy data/server-settings.example.json and edit the copy. A typical launch line loads the newest save:
./bin/x64/factorio --start-server-load-latest --server-settings ./data/server-settings.json
| Setting | What it does |
|---|---|
| Name | How the server appears in the browser. |
| Description | Up to 5000 characters. |
| Tags | A list of game tags. |
| Max Players | Set max_players to 0 for no limit. |
| Visibility | public, lan or hidden. |
| Credentials | Username with a password or an authentication token. Only needed for a public listing. |
game_password | The join password. |
On credentials, take the wiki's own advice: prefer the authentication token over the password, because the file is stored as plain text. Its warning that the token is itself sensitive still applies, so treat that file the way you would treat a key.
Set visibility to public and the server appears in the public list, which requires those credentials to be filled in. Set it to lan and it shows only on your local network. Set it to hidden and players must connect by address.
Ports, and the router setting that breaks them
Factorio uses port 34197, and it uses UDP only. The game builds its own reliable delivery layer on top of UDP, so there is no TCP port to open and no point looking for one. Forward 34197 on your router, and make sure no firewall or antivirus is dropping the packets.
There is one router behaviour that will defeat an otherwise correct setup, and it is the reason a lot of Factorio servers look unreachable for no visible cause. Some routers randomise the source port on packets leaving 34197, and Factorio does not survive that. If everything else checks out, look for a static port option in your router before you rebuild anything.
Since 1.1.67 the game also reads DNS SRV records, using the service name _factorio over _udp. That lets you hand friends a plain subdomain instead of a subdomain and a port number, which is genuinely useful if you run more than one server on one address.
Where the files live
Saves, mods, scenarios, settings and logs are all in the user data directory: %appdata%\Factorio on Windows, ~/.factorio on Linux, ~/Library/Application Support/factorio on macOS. Inside it, ./saves holds your worlds as zip files, ./mods holds mods, and config/config.ini holds local settings. Log files sit at the top of the same folder as factorio-current.log.
The wiki's own advice on updates is the right advice: back up that directory, saves and config included, before installing a new version. Nothing else in this guide will matter if the world is gone.
To give yourself admin rights, create server-adminlist.json in the same directory as factorio-current.log, containing a plain list of names, like [ "user1", "user2" ]. Promoting a player from the console creates the file for you.
The rule that causes most join failures
Every instance needs exactly the same game version and exactly the same mods. Factorio calculates mod checksums at startup and compares them when a player joins, specifically to catch local edits that would otherwise cause desyncs. A player who cannot join a working server is usually a player with one extra mod, one missing mod, or a locally modified copy of a shared one.
Self-hosting or renting
Factorio is one of the least demanding servers to self-host, and the pause-when-empty behaviour means an idle server costs almost nothing. If you have a machine that stays on, this is a good thing to run at home, and plenty of groups should.
The honest costs are the ordinary ones. The machine has to be awake when people want to play. Some home connections cannot accept incoming connections at all, and the source-port randomisation problem above is real and hard to spot. Every update means every player updates too, in step. And a factory that took months is one zip file you have not copied anywhere.
Renting moves those chores rather than removing them. The mod list, the map settings and the backups you actually keep are still yours to manage.
Where RadarHost fits
RadarHost rents Factorio servers hosted in Beauharnois, Quebec, Canada. There are three plans, Standard, Premium and Diamond, priced in Canadian dollars, with no setup fee and cancel any time. Renting changes who keeps the machine on, not how the game runs or how the settings above work. After payment, our team reviews the order and emails setup details or next steps within 24 hours. Current plans and prices are on the Factorio availability page.