My Factorio Info: Difference between revisions

From GotOpinion
Jump to navigation Jump to search
m added updating section
Line 1: Line 1:
== Factorio Headless Setup ==
== Factorio Headless Setup ==


'''These steps were done with Ubuntu 22.04.3 LTS'''
Updated 2025/07/17
 
'''These steps were done with Ubuntu 22.04.5 LTS'''


Resources:
Resources:
Line 18: Line 20:
Output of ldd command confirms glibc version >2.18.
Output of ldd command confirms glibc version >2.18.


Switch to <code>$ cd /opt</code> directory and download latest Factorio stable headless version (1.1.107 as of this writing)
Switch to <code>$ cd /opt</code> directory and download latest Factorio stable headless version (factorio-headless_linux_2.0.60.tar.xz as of this writing)


<pre>$ sudo wget https://factorio.com/get-download/stable/headless/linux64
<pre>$ sudo wget https://factorio.com/get-download/stable/headless/linux64
[sudo] password for anon:  
[sudo] password for anon:  
Sorry, try again.
--2025-07-18 04:05:32--  https://factorio.com/get-download/stable/headless/linux64
[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, ...
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::ac43:47c5|:443... connected.
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
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]
Location: https://dl.factorio.com/releases/2.0.60_01jzstqsxke8ps56mn0dey7p0n/factorio-headless_linux_2.0.60.tar.xz?secure=SjqildnfMJuxr6sjrEH0Fw,1752818732 [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
--2025-07-18 04:05:32--  https://dl.factorio.com/releases/2.0.60_01jzstqsxke8ps56mn0dey7p0n/factorio-headless_linux_2.0.60.tar.xz?secure=SjqildnfMJuxr6sjrEH0Fw,1752818732
Resolving dl.factorio.com (dl.factorio.com)... 2a02:6ea0:f900::3, 109.61.86.69
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)|2a02:6ea0:f900::3|:443... connected.
Connecting to dl.factorio.com (dl.factorio.com)|109.61.86.69|:443... connected.
HTTP request sent, awaiting response... 200 OK
HTTP request sent, awaiting response... 200 OK
Length: 57164752 (55M) [application/octet-stream]
Length: 56693436 (54M) [application/octet-stream]
Saving to: ‘linux64’
Saving to: ‘linux64’


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


2024-05-04 16:59:19 (51.3 MB/s) - ‘linux64’ saved [57164752/57164752]</pre>
2025-07-18 04:05:33 (54.1 MB/s) - ‘linux64’ saved [56693436/56693436]</pre>


Rename file to match version (1.1.87 in this example)
Rename file to match version (1.1.87 in this example)
<pre>$ sudo mv linux64 factorio_headless_x64_1.1.107.tar.xz</pre>
<pre>$ sudo mv linux64 factorio-headless_linux_2.0.60.tar.xz</pre>


Extract archived and zipped file
Extract archived and zipped file
<pre>$ sudo tar -xJf factorio_headless_x64_1.1.107.tar.xz
<pre>$ sudo tar -xJf factorio-headless_linux_2.0.60.tar.xz
$ ls -l
$ ls -l
total 55832
total 55832
Line 55: Line 51:


Remove file (save space, you can always download the file again, if needed)
Remove file (save space, you can always download the file again, if needed)
<pre>robot01@apu01:/opt$ sudo rm factorio_headless_x64_1.1.107.tar.xz</pre>
<pre>robot01@apu01:/opt$ sudo rm factorio-headless_linux_2.0.60.tar.xz</pre>


Add a new user to run factorio and assign ownership of <code>/opt/factorio</code> directory to same user
Add a new user to run factorio and assign ownership of <code>/opt/factorio</code> directory to same user
Line 141: Line 137:


<pre>/opt/factorio/bin/x64/factorio --start-server /opt/factorio/saves/spoon.zip</pre>
<pre>/opt/factorio/bin/x64/factorio --start-server /opt/factorio/saves/spoon.zip</pre>
== Updating Factorio ==
# Download the latest copy of the headless server using the steps above.
# Move and rename the headless server following the steps above.
# Assign ownership of <code>/opt/factorio</code> directory to factorio user used above.


[[Gaming]]
[[Gaming]]

Revision as of 23:12, 17 July 2025

Factorio Headless Setup

Updated 2025/07/17

These steps were done with Ubuntu 22.04.5 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 (factorio-headless_linux_2.0.60.tar.xz as of this writing)

$ sudo wget https://factorio.com/get-download/stable/headless/linux64
[sudo] password for anon: 
--2025-07-18 04:05:32--  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... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.factorio.com/releases/2.0.60_01jzstqsxke8ps56mn0dey7p0n/factorio-headless_linux_2.0.60.tar.xz?secure=SjqildnfMJuxr6sjrEH0Fw,1752818732 [following]
--2025-07-18 04:05:32--  https://dl.factorio.com/releases/2.0.60_01jzstqsxke8ps56mn0dey7p0n/factorio-headless_linux_2.0.60.tar.xz?secure=SjqildnfMJuxr6sjrEH0Fw,1752818732
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... connected.
HTTP request sent, awaiting response... 200 OK
Length: 56693436 (54M) [application/octet-stream]
Saving to: ‘linux64’

linux64                        100%[=================================================>]  54.07M  54.1MB/s    in 1.0s    

2025-07-18 04:05:33 (54.1 MB/s) - ‘linux64’ saved [56693436/56693436]

Rename file to match version (1.1.87 in this example)

$ sudo mv linux64 factorio-headless_linux_2.0.60.tar.xz

Extract archived and zipped file

$ sudo tar -xJf factorio-headless_linux_2.0.60.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_linux_2.0.60.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

Updating Factorio

  1. Download the latest copy of the headless server using the steps above.
  2. Move and rename the headless server following the steps above.
  3. Assign ownership of /opt/factorio directory to factorio user used above.

Gaming