My Factorio Info
Factorio Headless Setup
Resources:
- Multiplayer Factorio wiki
- Stable Factorio headless server
Check that your version of glibc is >= 2.18.
robot01@apu01:~$ ldd --version ldd (Ubuntu GLIBC 2.23-0ubuntu10) 2.23 Copyright (C) 2016 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper.
Output of ldd command confirms glibc version >2.18.
Switch to $ cd /opt
directory and download latest Factorio stable headless version (1.1.87 as of this writing)
$ sudo wget https://factorio.com/get-download/stable/headless/linux64 --2023-09-04 14:28:09-- https://factorio.com/get-download/stable/headless/linux64 Resolving factorio.com (factorio.com)... 2606:4700:20::681a:f58, 2606:4700:20::ac43:47c5, 2606:4700:20::681a:e58, ... Connecting to factorio.com (factorio.com)|2606:4700:20::681a:f58|:443... connected. HTTP request sent, awaiting response... 302 Found Location: https://dl.factorio.com/releases/factorio_headless_x64_1.1.87.tar.xz?secure=4g154TPABPYOpo7oo2Cnvw,1693859289 [following] --2023-09-04 14:28:09-- https://dl.factorio.com/releases/factorio_headless_x64_1.1.87.tar.xz?secure=4g154TPABPYOpo7oo2Cnvw,1693859289 Resolving dl.factorio.com (dl.factorio.com)... 2a02:6ea0:d800::2, 212.102.46.8 Connecting to dl.factorio.com (dl.factorio.com)|2a02:6ea0:d800::2|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 58853524 (56M) [application/octet-stream] Saving to: ‘linux64’ linux64 100%[==========================================================>] 56.13M 32.9MB/s in 1.7s 2023-09-04 14:28:11 (32.9 MB/s) - ‘linux64’ saved [58853524/58853524]
Rename file to match version (1.1.87 in this example)
$ sudo mv linux64 factorio_headless_x64_1.1.87.tar.xz
Extract archived and zipped file
$ sudo tar -xJf factorio_headless_x64_1.1.87.tar.xz $ ls -l total 57480 drwxr-xr-x 8 steamy steamy 4096 Sep 4 14:32 factorio -rw-r--r-- 1 root root 58853524 Jul 4 05:36 factorio_headless_x64_1.1.87.tar.xz
Remove file (save space, you can always download the file again, if needed)
robot01@apu01:/opt$ sudo rm factorio_headless_x64_1.1.87.tar.xz
Add a new user to run factorio and assign ownership of /opt/factorio
directory to same user
$ sudo useradd factorio $ sudo chown -R factorio:factorio /opt/factorio/
Verify permissions show factorio for both user and group
$ ls -l /opt/factorio
Test Factorio binary by switching to factorio user then start server
robot01@apu01:/opt$ sudo su - factorio No directory, logging in with HOME=/ $
As factorio user create /opt/factorio/
saves directory. I used saves directory.
$ mkdir /opt/factorio/saves
Start server and look for something like "File /savename does not exist."
$ /opt/factorio/bin/x64/factorio --start-server savename 0.000 2018-05-01 21:20:47; Factorio 0.16.36 (build 36253, linux64, headless) 0.260 Operating system: Linux (Ubuntu 16.04) 0.260 Program arguments: "/opt/factorio/bin/x64/factorio" "--start-server" "savename" 0.260 Read data path: /opt/factorio/data 0.260 Write data path: /opt/factorio [103696/111098MB] 0.260 Binaries path: /opt/factorio/bin 0.304 System info: [CPU: AMD G-T40E Processor, 2 cores, RAM: 3550 MB] 0.304 Environment: DISPLAY=<unset>, WAYLAND_DISPLAY=<unset> 0.305 Running in headless mode 0.316 Error GlobalModSettings.cpp:107: Failed to migrate mod settings file: Error when opening /opt/factorio/mods/mod-settings.json for reading: No such file or directory 0.322 Loading mod core 0.0.0 (data.lua) 0.388 Loading mod base 0.16.36 (data.lua) 1.063 Loading mod base 0.16.36 (data-updates.lua) 1.313 Checksum for core: 1316978547 1.313 Checksum of base: 4140083139 2.006 Info PlayerData.cpp:67: Local player-data.json unavailable 2.006 Info PlayerData.cpp:72: Cloud player-data.json unavailable 2.012 Custom inputs active: 0 2.015 Factorio initialised 2.016 Info ServerSynchronizer.cpp:29: nextHeartbeatSequenceNumber(0) initialized Synchronizer nextTickClosureTick(0). 2.016 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(Ready) to(PreparedToHostGame) 2.016 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(PreparedToHostGame) to(CreatingGame) 2.017 Loading map /savename 2.017 Error ServerMultiplayerManager.cpp:96: MultiplayerManager failed: "File /savename does not exist." 2.017 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(CreatingGame) to(InitializationFailed) 2.017 Info GlobalContext.cpp:694: Waiting for child processes to exit: 2.020 Info ServerMultiplayerManager.cpp:142: Quitting multiplayer connection. 2.020 Info ServerMultiplayerManager.cpp:698: mapTick(4294967295) changing state from(InitializationFailed) to(Closed) 2.062 Info UDPSocket.cpp:206: Closing socket 2.065 Goodbye
At this point you can load up saved games or create some games. Before that, I want to install Factorio init script
Exit from factorio user back to sudo account
$ exit logout
Switch to /opt
directory
$ cd /opt
I had to install git on my Ubuntu system
$ sudo apt install git
Clone Factorio init script from github
$ sudo git clone https://github.com/Bisa/factorio-init.git Cloning into 'factorio-init'... remote: Enumerating objects: 1028, done. remote: Counting objects: 100% (145/145), done. remote: Compressing objects: 100% (71/71), done. remote: Total 1028 (delta 70), reused 121 (delta 60), pack-reused 883 Receiving objects: 100% (1028/1028), 265.92 KiB | 2.95 MiB/s, done. Resolving deltas: 100% (584/584), done. anon@steamnuc00:/opt$ git --version git version 2.25.1
Validate factorio-init directory exists
$ ls -l /opt drwxr-xr-x 8 steamy steamy 4096 Sep 4 14:53 factorio drwxr-xr-x 5 root root 4096 Sep 4 15:00 factorio-init
Change ownership to Factorio user
$ sudo chown -R steamy:steamy /opt/factorio-init/
Edit config.example and add your Factorio users.
$ sudo vi /opt/factorio-init/config.example
Here are my edits to config.example after making edits
$ grep -i steamy factorio-init/config.example USERNAME=steamy USERGROUP=steamy
Edit factorio.service.example with your default values
$ sudo vi /opt/factorio-init/extras/factorio.service.example
Here are my edits to factorio.service.example after making edits
$ grep -i steamy /opt/factorio-init/extras/factorio.service.example User=steamy Group=steamy
Make Factorio start on operating system boot and restart if failure (configurable - I kept defaults for now)
$ sudo cp /opt/factorio-init/extras/factorio.service.example /etc/systemd/system/factorio.service $ sudo systemctl daemon-reload
Sysvinit
$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio $ sudo chmod +x /opt/factorio-init/factorio
Show help
$ service factorio help Usage: /etc/init.d/factorio COMMAND Available commands: start Starts the server stop Stops the server restart Restarts the server status Displays server status players-online Shows online players players Shows all players cmd [command/message] Open interactive commandline or send a single command to the server log [--tail|-t] Print the full server log, optionally tail the log to follow in real time chatlog [--tail|-t] Print the current chatlog, optionally tail the log to follow in real time new-game name [map-gen-settings] [map-settings] Stops the server and creates a new game with the specified name using the specified map gen settings and map settings json files save-game name Stops the server and saves game to specified save load-save name Stops the server and loads the specified save install [tarball] Installs the server with optional specified tarball (omit to download and use the latest headless server from Wube) update [--dry-run] Updates the server invocation Outputs the invocation for debugging purpose listcommands List all init-commands listsaves List all saves version Prints the binary version mod Manage mods (see /etc/init.d/factorio mod help for more information) help Shows this help message
Setup Autocompletion
$ sudo ln -s /opt/factorio-init/extras/bash_autocomplete /etc/bash_completion.d/factorio $ sudo ln -s /opt/factorio-init/factorio /usr/local/bin/factorio
Copy example server settings (make any changes you want to copy)
$ sudo cp /opt/factorio/data/server-settings.example.json /opt/factorio/data/server-settings.json
Copy example configuration (make any changes you want to copy)
robot01@apu01:/opt/factorio$ sudo cp /opt/factorio-init/config.example /opt/factorio-init/config
Make any changes to config ini
robot01@apu01:/opt/factorio$ sudo vi /opt/factorio/config/config.ini
Update headless server
download latest headless version
unzip and untar
sudo tar -xJf linux64
change permissions to your dedicated factorio user
sudo chown -R steamy:steamy factorio
launch game