Difference between revisions of "My Factorio Info"
(initial page creation) |
|||
Line 14: | Line 14: | ||
Written by Roland McGrath and Ulrich Drepper.</pre> | Written by Roland McGrath and Ulrich Drepper.</pre> | ||
Output of ldd command confirms glibc version 2. | Output of ldd command confirms glibc version >2.18. | ||
Switch to <code>/opt</code> directory and download latest Factorio stable headless version ( | Switch to <code>$ cd /opt</code> directory and download latest Factorio stable headless version (1.1.87 as of this writing) | ||
<pre> | |||
<pre>$ 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’ | Saving to: ‘linux64’ | ||
linux64 100%[==========================================================>] | linux64 100%[==========================================================>] 56.13M 32.9MB/s in 1.7s | ||
2023-09-04 14:28:11 (32.9 MB/s) - ‘linux64’ saved [58853524/58853524]</pre> | |||
Rename file to match version (1.1. | Rename file to match version (1.1.87 in this example) | ||
<pre> | <pre>$ sudo mv linux64 factorio_headless_x64_1.1.87.tar.xz</pre> | ||
Extract archived and zipped file | Extract archived and zipped file | ||
<pre> | <pre>$ sudo tar -xJf factorio_headless_x64_1.1.87.tar.xz | ||
$ ls -l | |||
total | total 57480 | ||
drwxr-xr-x 8 steamy steamy 4096 | drwxr-xr-x 8 steamy steamy 4096 Sep 4 14:32 factorio | ||
-rw-r--r-- 1 root root | -rw-r--r-- 1 root root 58853524 Jul 4 05:36 factorio_headless_x64_1.1.87.tar.xz</pre> | ||
Remove file (save space, you can always download 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. | <pre>robot01@apu01:/opt$ sudo rm factorio_headless_x64_1.1.87.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 | ||
<pre> | <pre>$ sudo useradd factorio | ||
$ sudo chown -R factorio:factorio /opt/factorio/</pre> | |||
Verify permissions show factorio for both user and group | Verify permissions show factorio for both user and group | ||
<pre> | <pre>$ ls -l /opt/factorio</pre> | ||
Line 56: | Line 61: | ||
No directory, logging in with HOME=/ | No directory, logging in with HOME=/ | ||
$</pre> | $</pre> | ||
As factorio user create <code>/opt/factorio/</code> saves directory. I used saves directory. | |||
<pre>$ mkdir /opt/factorio/saves</pre> | |||
Start server and look for something like "File /savename does not exist." | Start server and look for something like "File /savename does not exist." | ||
Line 90: | Line 98: | ||
2.065 Goodbye</pre> | 2.065 Goodbye</pre> | ||
At this point you can load up saved games or create some games. Before that, I want to install Factorio init script | |||
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 from factorio user back to sudo account | ||
Line 100: | Line 105: | ||
Switch to <code>/opt</code> directory | Switch to <code>/opt</code> directory | ||
<pre> | <pre>$ cd /opt</pre> | ||
I had to install git on my Ubuntu system | |||
<pre>$ sudo apt install git</pre> | |||
Clone Factorio init script from github | Clone Factorio init script from github | ||
<pre> | <pre>$ sudo git clone https://github.com/Bisa/factorio-init.git | ||
Cloning into 'factorio-init'... | Cloning into 'factorio-init'... | ||
remote: Counting objects: | remote: Enumerating objects: 1028, done. | ||
remote: Total | remote: Counting objects: 100% (145/145), done. | ||
Receiving objects: 100% ( | remote: Compressing objects: 100% (71/71), done. | ||
Resolving deltas: 100% ( | 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</pre> | |||
Validate factorio-init directory exists | |||
<pre>$ 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</pre> | |||
Change ownership to Factorio user | |||
<pre>$ sudo chown -R steamy:steamy /opt/factorio-init/</pre> | |||
Edit config.example and add your Factorio users. | |||
<pre>$ sudo vi /opt/factorio-init/config.example</pre> | |||
Here are my edits to config.example after making edits | |||
<pre>$ grep -i steamy factorio-init/config.example | |||
USERNAME=steamy | |||
USERGROUP=steamy</pre> | |||
Edit factorio.service.example with your default values | |||
<pre>$ sudo vi /opt/factorio-init/extras/factorio.service.example</pre> | |||
Here are my edits to factorio.service.example after making edits | |||
<pre>$ grep -i steamy /opt/factorio-init/extras/factorio.service.example | |||
User=steamy | |||
Group=steamy</pre> | |||
Make Factorio start on operating system boot and restart if failure (configurable - I kept defaults for now) | Make Factorio start on operating system boot and restart if failure (configurable - I kept defaults for now) | ||
<pre> | <pre>$ sudo cp /opt/factorio-init/extras/factorio.service.example /etc/systemd/system/factorio.service | ||
$ sudo systemctl daemon-reload</pre> | |||
Sysvinit | Sysvinit | ||
<pre> | <pre>$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio | ||
$ sudo chmod +x /opt/factorio-init/factorio</pre> | |||
Show help | Show help | ||
<pre> | <pre>$ service factorio help | ||
Usage: /etc/init.d/factorio COMMAND | Usage: /etc/init.d/factorio COMMAND | ||
Available commands: | 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</pre> | |||
Setup Autocompletion | Setup Autocompletion | ||
<pre> | <pre>$ 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</pre> | |||
Copy example server settings (make any changes you want to copy) | Copy example server settings (make any changes you want to copy) | ||
<pre> | <pre>$ sudo cp /opt/factorio/data/server-settings.example.json /opt/factorio/data/server-settings.json</pre> | ||
Copy example configuration (make any changes you want to copy) | Copy example configuration (make any changes you want to copy) |
Revision as of 12:34, 4 September 2023
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