Difference between revisions of "My Factorio Info"

From Got Opinion Wiki
Jump to navigation Jump to search
(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.23.
Output of ldd command confirms glibc version >2.18.


Switch to <code>/opt</code> directory and download latest Factorio stable headless version (0.16.36 as of this writing)
Switch to <code>$ cd /opt</code> directory and download latest Factorio stable headless version (1.1.87 as of this writing)
<pre>robot01@apu01:~$ cd /opt
 
robot01@apu01:/opt$ sudo wget https://factorio.com/get-download/stable/headless/linux64
<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%[==========================================================>]  54.53M 52.4MB/s    in 1.0s    
linux64                          100%[==========================================================>]  56.13M 32.9MB/s    in 1.7s    


2022-04-09 09:36:49 (52.4 MB/s) - ‘linux64’ saved [57178436/57178436]</pre>
2023-09-04 14:28:11 (32.9 MB/s) - ‘linux64’ saved [58853524/58853524]</pre>


Rename file to match version (1.1.57 in this example)
Rename file to match version (1.1.87 in this example)
<pre>robot01@apu01:/opt$ sudo mv linux64 factorio_headless_x64_1.1.57.tar.xz</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>robot01@apu01:/opt$ sudo tar -xJf factorio_headless_x64_1.1.57.tar.xz
<pre>$ sudo tar -xJf factorio_headless_x64_1.1.87.tar.xz
robot01@apu01:/opt$ ls -l
$ ls -l
total 55844
total 57480
drwxr-xr-x 8 steamy steamy    4096 Apr 9 09:38 factorio
drwxr-xr-x 8 steamy steamy    4096 Sep 4 14:32 factorio
-rw-r--r-- 1 root  root  57178436 Mar 29 08:42 factorio_headless_x64_1.1.57.tar.xz</pre>
-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.57.tar.xz</pre>
<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>robot01@apu01:/opt$ sudo useradd factorio
<pre>$ sudo useradd factorio
robot01@apu01:/opt$ sudo chown -R factorio:factorio /opt/factorio/</pre>
$ 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>robot01@apu01:/opt$ ls -l
<pre>$ ls -l /opt/factorio</pre>
total 4
drwxr-xr-x 4 factorio factorio 4096 May  1 21:12 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>


As factorio user create <code>/opt/factorio/</code> saves directory
At this point you can load up saved games or create some games. Before that, I want to install Factorio init script
<pre>$ mkdir /opt/factorio/saves</pre>
 
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>robot01@apu01:/opt/factorio$ cd /opt</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>robot01@apu01:/opt$ sudo git clone https://github.com/Bisa/factorio-init.git
<pre>$ sudo git clone https://github.com/Bisa/factorio-init.git
Cloning into 'factorio-init'...
Cloning into 'factorio-init'...
remote: Counting objects: 484, done.
remote: Enumerating objects: 1028, done.
remote: Total 484 (delta 0), reused 0 (delta 0), pack-reused 484
remote: Counting objects: 100% (145/145), done.
Receiving objects: 100% (484/484), 109.47 KiB | 0 bytes/s, done.
remote: Compressing objects: 100% (71/71), done.
Resolving deltas: 100% (276/276), done.
remote: Total 1028 (delta 70), reused 121 (delta 60), pack-reused 883
Checking connectivity... done.</pre>
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>robot01@apu01:/opt$ sudo cp /opt/factorio-init/factorio.service.example /etc/systemd/system/factorio.service
<pre>$ sudo cp /opt/factorio-init/extras/factorio.service.example /etc/systemd/system/factorio.service
robot01@apu01:/opt$ sudo systemctl daemon-reload</pre>
$ sudo systemctl daemon-reload</pre>


Sysvinit
Sysvinit
<pre>robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio
<pre>$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio
robot01@apu01:/opt/factorio$ sudo chmod +x /opt/factorio-init/factorio</pre>
$ sudo chmod +x /opt/factorio-init/factorio</pre>


Show help
Show help
<pre>robot01@apu01:/opt/factorio$ service factorio help
<pre>$ service factorio help
Usage: /etc/init.d/factorio COMMAND
Usage: /etc/init.d/factorio COMMAND


Available commands:
Available commands:
  start                                 Starts the server
  start                                                 Starts the server
  stop                                 Stops the server
  stop                                                   Stops the server
  restart                               Restarts the server
  restart                                               Restarts the server
  status                               Displays server status
  status                                                 Displays server status
  players-online                       Shows online players
  players-online                                         Shows online players
  players                               Shows all players
  players                                               Shows all players
  cmd [command/message]                 Open interactive commandline or send a single command to the server
  cmd [command/message]                                 Open interactive commandline or send a single command to the server
  chatlog [--tail|-t]                   Print the current chatlog, optionally tail the log to follow in real time
  log [--tail|-t]                                        Print the full server log, 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
  chatlog [--tail|-t]                                   Print the current chatlog, optionally tail the log to follow in real time
  save-game name                       Stops the server and saves game to specified save
  new-game name [map-gen-settings] [map-settings]       Stops the server and creates a new game with the specified
  load-save name                       Stops the server and loads the specified save
                                                        name using the specified map gen settings and map settings json files
  install [tarball]                     Installs the server with optional specified tarball (omit to download and use the latest headless server from Wube)
  save-game name                                         Stops the server and saves game to specified save
  update [--dry-run]                   Updates the server
  load-save name                                         Stops the server and loads the specified save
  invocation                           Outputs the invocation for debugging purpose
  install [tarball]                                     Installs the server with optional specified tarball
  listcommands                         List all init-commands
                                                        (omit to download and use the latest headless server from Wube)
  listsaves                             List all saves
  update [--dry-run]                                     Updates the server
  version                               Prints the binary version
  invocation                                             Outputs the invocation for debugging purpose
  help                                 Shows this help message</pre>
  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>robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/bash_autocomplete /etc/bash_completion.d/factorio
<pre>$ sudo ln -s /opt/factorio-init/extras/bash_autocomplete /etc/bash_completion.d/factorio
robot01@apu01:/opt/factorio$ sudo echo "source /opt/factorio-init/bash_autocomplete" >> ~/.bashrc</pre>
$ 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>robot01@apu01:/opt/factorio$ sudo cp /opt/factorio/data/server-settings.example.json /opt/factorio/data/server-settings.json</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:

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

Gaming