My Factorio Info

From Got Opinion Wiki
Jump to navigation Jump to search

Factorio Headless Setup

These steps were done with Ubuntu 22.04.3 LTS

Resources:

Check that your version of glibc is >= 2.18 using ldd --version

$ ldd --version
ldd (Ubuntu GLIBC 2.35-0ubuntu3.7) 2.35
Copyright (C) 2022 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.107 as of this writing)

$ sudo wget https://factorio.com/get-download/stable/headless/linux64
[sudo] password for anon: 
Sorry, try again.
[sudo] password for anon: 
--2024-05-04 16:59:05--  https://factorio.com/get-download/stable/headless/linux64
Resolving factorio.com (factorio.com)... 2606:4700:20::ac43:47c5, 2606:4700:20::681a:f58, 2606:4700:20::681a:e58, ...
Connecting to factorio.com (factorio.com)|2606:4700:20::ac43:47c5|:443... failed: No route to host.
Connecting to factorio.com (factorio.com)|2606:4700:20::681a:f58|:443... failed: No route to host.
Connecting to factorio.com (factorio.com)|2606:4700:20::681a:e58|:443... failed: No route to host.
Connecting to factorio.com (factorio.com)|104.26.15.88|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.factorio.com/releases/1.1.107_01hv6kd1ctem7tvfd5tbq1vtw8/factorio_headless_x64_1.1.107.tar.xz?secure=_GqQEFiF6ELNO_2x-zqWdg,1714845555 [following]
--2024-05-04 16:59:15--  https://dl.factorio.com/releases/1.1.107_01hv6kd1ctem7tvfd5tbq1vtw8/factorio_headless_x64_1.1.107.tar.xz?secure=_GqQEFiF6ELNO_2x-zqWdg,1714845555
Resolving dl.factorio.com (dl.factorio.com)... 2a02:6ea0:f900::3, 109.61.86.69
Connecting to dl.factorio.com (dl.factorio.com)|2a02:6ea0:f900::3|:443... failed: No route to host.
Connecting to dl.factorio.com (dl.factorio.com)|109.61.86.69|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 57164752 (55M) [application/octet-stream]
Saving to: ‘linux64’

linux64                        100%[=================================================>]  54.52M  51.3MB/s    in 1.1s    

2024-05-04 16:59:19 (51.3 MB/s) - ‘linux64’ saved [57164752/57164752]

Rename file to match version (1.1.87 in this example)

$ sudo mv linux64 factorio_headless_x64_1.1.107.tar.xz

Extract archived and zipped file

$ sudo tar -xJf factorio_headless_x64_1.1.107.tar.xz
$ ls -l
total 55832
drwxr-xr-x 4 root root     4096 May  4 17:07 factorio
-rw-r--r-- 1 root root 57164752 Apr 11 13:40 factorio_headless_x64_1.1.107.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.107.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 with ls -ld /opt/factorio

$ ls -ld /opt/factorio/
drwxr-xr-x 4 factorio factorio 4096 May  4 17:07 /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 2024-05-04 17:53:44; Factorio 1.1.107 (build 62234, linux64, headless)
   0.020 Operating system: Linux (Ubuntu 22.04)
   0.020 Program arguments: "/opt/factorio/bin/x64/factorio" "--start-server" "savename" 
   0.020 Config path: /opt/factorio/config/config.ini
   0.020 Read data path: /opt/factorio/data
   0.020 Write data path: /opt/factorio [1763296/1874134MB]
   0.020 Binaries path: /opt/factorio/bin
   0.024 System info: [CPU: 13th Gen Intel(R) Core(TM) i9-13900K, 32 cores, RAM: 64055 MB]
   0.024 Environment: DISPLAY=<unset> WAYLAND_DISPLAY=<unset> DESKTOP_SESSION=<unset> XDG_SESSION_DESKTOP=<unset> XDG_CURRENT_DESKTOP=<unset> __GL_FSAA_MODE=<unset> __GL_LOG_MAX_ANISO=<unset> __GL_SYNC_TO_VBLANK=<unset> __GL_SORT_FBCONFIGS=<unset> __GL_YIELD=<unset>
   0.024 Running in headless mode
   0.046 Loading mod core 0.0.0 (data.lua)
   0.062 Loading mod base 1.1.107 (data.lua)
   0.152 Loading mod base 1.1.107 (data-updates.lua)
   0.182 Checksum for core: 607699937
   0.182 Checksum of base: 1054619811
   0.277 Prototype list checksum: 3034860339
   0.299 Info PlayerData.cpp:78: Local player-data.json unavailable
   0.299 Info PlayerData.cpp:83: Cloud player-data.json unavailable
   0.301 Factorio initialised
   0.302 Info ServerSynchronizer.cpp:29: nextHeartbeatSequenceNumber(0) initialized Synchronizer nextTickClosureTick(0).
   0.302 Info ServerMultiplayerManager.cpp:814: updateTick(4294967295) changing state from(Ready) to(PreparedToHostGame)
   0.302 Info ServerMultiplayerManager.cpp:814: updateTick(4294967295) changing state from(PreparedToHostGame) to(CreatingGame)
   0.304 Loading map /opt/factorio/savename
   0.305 Error ServerMultiplayerManager.cpp:92: MultiplayerManager failed: "File /opt/factorio/savename does not exist."
   0.305 Info ServerMultiplayerManager.cpp:814: updateTick(4294967295) changing state from(CreatingGame) to(InitializationFailed)
   0.305 Info CommandLineMultiplayer.cpp:219: Exit point.
   0.306 Info ServerMultiplayerManager.cpp:154: Quitting multiplayer connection.
   0.306 Info ServerMultiplayerManager.cpp:814: updateTick(4294967295) changing state from(InitializationFailed) to(Closed)
   0.321 Info UDPSocket.cpp:233: Closing socket
   0.322 Goodbye

At this point you can load up saved games or create some games.


Publish game on Factorio matching server

Copy /opt/factorio/data/server-settings.example.json to /opt/factorio/data/server-settings.json.

$ sudo cp /opt/factorio/data/server-settings.example.json /opt/factorio/data/server-settings.json

Edit appropriate server-settings.json values.

I used _comment_token versus password value. The appropriate value is located in %appdata%\Factorio\player-data.json under the key name "service-token". The service-token is populated after you've browsed the multiplayer servers via your Factorio game client.

My player-data.json for user "anon" on Windows was located at C:\Users\anon\AppData\Roaming\Factorio.

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 factorio:factorio factorio

launch game, example with saved game called "spoon.zip":

/opt/factorio/bin/x64/factorio --start-server /opt/factorio/saves/spoon.zip

Gaming