|
|
Line 280: |
Line 280: |
| == Factorio Headless Setup == | | == Factorio Headless Setup == |
|
| |
|
| Resources:
| | [[My Factorio Info]] |
| * [https://wiki.factorio.com/Multiplayer Multiplayer Factorio wiki]
| |
| * Stable [https://factorio.com/get-download/stable/headless/linux64 Factorio headless] server
| |
| | |
| Check that your version of glibc is >= 2.18.
| |
| | |
| <pre>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.</pre>
| |
| | |
| Output of ldd command confirms glibc version 2.23.
| |
| | |
| Switch to <code>/opt</code> directory and download latest Factorio stable headless version (0.16.36 as of this writing)
| |
| <pre>robot01@apu01:~$ cd /opt
| |
| robot01@apu01:/opt$ sudo wget https://factorio.com/get-download/stable/headless/linux64
| |
| ...
| |
| ...
| |
| ...
| |
| Saving to: ‘linux64’
| |
| | |
| linux64 100%[==========================================================>] 54.53M 52.4MB/s in 1.0s
| |
| | |
| 2022-04-09 09:36:49 (52.4 MB/s) - ‘linux64’ saved [57178436/57178436]</pre>
| |
| | |
| Rename file to match version (1.1.57 in this example)
| |
| <pre>robot01@apu01:/opt$ sudo mv linux64 factorio_headless_x64_1.1.57.tar.xz</pre>
| |
| | |
| Extract archived and zipped file
| |
| <pre>robot01@apu01:/opt$ sudo tar -xJf factorio_headless_x64_1.1.57.tar.xz
| |
| robot01@apu01:/opt$ ls -l
| |
| total 55844
| |
| drwxr-xr-x 8 steamy steamy 4096 Apr 9 09:38 factorio
| |
| -rw-r--r-- 1 root root 57178436 Mar 29 08:42 factorio_headless_x64_1.1.57.tar.xz</pre>
| |
| | |
| Remove file (save space, you can always download again if needed)
| |
| <pre>robot01@apu01:/opt$ sudo rm factorio_headless_x64_1.1.57.tar.xz</pre>
| |
| | |
| 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
| |
| robot01@apu01:/opt$ sudo chown -R factorio:factorio /opt/factorio/</pre>
| |
| | |
| | |
| Verify permissions show factorio for both user and group
| |
| <pre>robot01@apu01:/opt$ ls -l
| |
| total 4
| |
| drwxr-xr-x 4 factorio factorio 4096 May 1 21:12 factorio</pre>
| |
| | |
| | |
| Test Factorio binary by switching to factorio user then start server
| |
| <pre>robot01@apu01:/opt$ sudo su - factorio
| |
| No directory, logging in with HOME=/
| |
| $</pre>
| |
| | |
| Start server and look for something like "File /savename does not exist."
| |
| <pre>$ /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</pre>
| |
| | |
| As factorio user create <code>/opt/factorio/</code> saves directory
| |
| <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
| |
| <pre>$ exit
| |
| logout</pre>
| |
| | |
| Switch to <code>/opt</code> directory
| |
| <pre>robot01@apu01:/opt/factorio$ cd /opt</pre>
| |
| | |
| Clone Factorio init script from github
| |
| <pre>robot01@apu01:/opt$ sudo git clone https://github.com/Bisa/factorio-init.git
| |
| Cloning into 'factorio-init'...
| |
| remote: Counting objects: 484, done.
| |
| remote: Total 484 (delta 0), reused 0 (delta 0), pack-reused 484
| |
| Receiving objects: 100% (484/484), 109.47 KiB | 0 bytes/s, done.
| |
| Resolving deltas: 100% (276/276), done.
| |
| Checking connectivity... done.</pre>
| |
| | |
| 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
| |
| robot01@apu01:/opt$ sudo systemctl daemon-reload</pre>
| |
| | |
| Sysvinit
| |
| <pre>robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/factorio /etc/init.d/factorio
| |
| robot01@apu01:/opt/factorio$ sudo chmod +x /opt/factorio-init/factorio</pre>
| |
| | |
| Show help
| |
| <pre>robot01@apu01:/opt/factorio$ 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
| |
| 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
| |
| help Shows this help message</pre>
| |
| | |
| Setup Autocompletion
| |
| <pre>robot01@apu01:/opt/factorio$ sudo ln -s /opt/factorio-init/bash_autocomplete /etc/bash_completion.d/factorio
| |
| robot01@apu01:/opt/factorio$ sudo echo "source /opt/factorio-init/bash_autocomplete" >> ~/.bashrc</pre>
| |
| | |
| 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>
| |
| | |
| Copy example configuration (make any changes you want to copy)
| |
| <pre>robot01@apu01:/opt/factorio$ sudo cp /opt/factorio-init/config.example /opt/factorio-init/config</pre>
| |
| | |
| Make any changes to config ini
| |
| <pre>robot01@apu01:/opt/factorio$ sudo vi /opt/factorio/config/config.ini</pre>
| |
| | |
| === Update headless server ===
| |
| | |
| download latest headless version
| |
| | |
| unzip and untar
| |
| | |
| <pre>sudo tar -xJf linux64</pre>
| |
| | |
| change permissions to your dedicated factorio user
| |
| | |
| <pre>sudo chown -R steamy:steamy factorio</pre>
| |
| | |
| launch game
| |
|
| |
|
| == Hardware == | | == Hardware == |
Shell commands
Enable root account (not recommended):
$sudo passwd root
Disable root account you lock root account:
$sudo passwd -l root
Want to use root @ console:
$sudo -i
Windows Dual Boot page
Recovering Ubuntu After Windows Install
Grub2 on Ubuntu wiki
Grub2 GUI Customizer
For support-related question you can use Launchpad. You can also search the complete history of questions and answers.
Ubuntu web forums
Grub 2 basics
Enable SSH server
apt-get install openssh-server
Secure SSH server using /etc/hosts.allow
Add a User
Example adding a user with username johndoe. Follow the instructions provided by the command.
sudo adduser johndoe
Networking utilities
See IP address information
ip a
Configure hostname
How to change hostname on Ubuntu 18 04
systemctl
Verify which processes run on Ubuntu 18.04 start up use $ sudo systemctl list-unit-files
.
Check version of Ubuntu
$ cat /etc/os-release
CLI Software Management
Synchronize package index from Internet. Location of repositories /etc/apt/sources.list
sudo apt-get update
Install newest versions of all software packages
sudo apt-get upgrade
Update distribution
sudo apt-get dist-upgrade
Install package (if already installed, will attempt to update package)
apt-get install package-name
List installed packages
apt list --installed
List installed packages that start with 'python'
$ apt list -a --installed python*
Python on Ubuntu Notes
See My Python Notes for information not specific to Ubuntu and Python.
Verify Python 3 is installed
anon@hammerhead:~$ python --version
Command 'python' not found, but can be installed with:
sudo apt install python3
sudo apt install python
sudo apt install python-minimal
You also have python3 installed, you can run 'python3' instead.
anon@hammerhead:~$ python3 --version <----- Python 3 installed.
Python 3.6.7 <----- Version 3.6.7
Verify Python 3 PIP installed
$ pip3 --version
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)
To install Python 3 PIP
$ sudo apt-get install -y python3-pip
I use Python virtual environments. Verify Python venv module is installed
$ apt list -a --installed *venv* <----- If nothing with Python 3 venv comes back then you most install venv module
To install Python 3 venv module
$ sudo apt-get install -y python3-venv
Create virtual environment. I keep my Python virtual environments in a single directory. To create directory $ mkdir python-venv
Switch do directory $ cd python-venv/
Create virtual environment
$ python3 -m venv udmey-django
Activate virtual environment
$ source udmey-django/bin/activate
Prompt changes to reflect virtual environment
(udmey-django) anon@hammerhead:~/python-venv$
Note: Within virtual environment, you can use the command python instead of python3, and pip instead of pip3.
Deactivate virtual environment and prompt returns to normal
$ deactivate
mongoDB
My MongoDB notes
PostgreSQL
Install PostgreSQL
$ sudo apt install postgresql postgresql-contrib
...
Success. You can now start the database server using:
/usr/lib/postgresql/10/bin/pg_ctl -D /var/lib/postgresql/10/main -l logfile start
Ver Cluster Port Status Owner Data directory Log file
10 main 5432 down postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log
update-alternatives: using /usr/share/postgresql/10/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
Setting up postgresql (10+190) ...
Setting up postgresql-contrib (10+190) ...
Processing triggers for systemd (237-3ubuntu10.11) ...
Processing triggers for ureadahead (0.100.0-20) ...
Use PostgreSQL
Switch to postgres account
sudo -i postgres
Access PostgreSQL prompt
psql
Exit PostgreSQL prompt
\q
Log directly into PostgreSQL prompt with postgres user
sudo -u postgres psql
Add user (username must be same as PostgreSQL role and database)
sudo adduser user_name
Check current connection information
\conninfo
While logged in as postgres user...
Create a new role. Use man createuser
for more information.
createuser --interactive
Create new database
createdb db_name
Same user connect to different database
psql -d postgres
Nginx
My Nginx notes
Install Nginx with virtual hosts and SSL certificates
Apache 2
Resources
Ubuntu server guide to HTTPD
Ubuntu Open SSL guide
Ubuntu Certificates and Security
SSL Certificate HOWTO not Ubuntu specific
Configure Apache for SSL client certificate authentication
Installation
Update all your software and install Apache 2
# apt-get update
# apt-get upgrade
# apt install apache2
Verify Apache is running
# systemctl status apache2
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
└─apache2-systemd.conf
Active: active (running) since Sun 2018-10-21 14:44:30 CDT; 11min ago
Main PID: 17131 (apache2)
Tasks: 55 (limit: 4181)
CGroup: /system.slice/apache2.service
├─17131 /usr/sbin/apache2 -k start
├─17132 /usr/sbin/apache2 -k start
└─17134 /usr/sbin/apache2 -k start
Oct 21 14:44:30 apu02 systemd[1]: Starting The Apache HTTP Server...
Oct 21 14:44:30 apu02 apachectl[17120]: AH00558: apache2: Could not reliably determine the server's
Oct 21 14:44:30 apu02 systemd[1]: Started The Apache HTTP Server.
Firewall
Update firewall to allow only port 443 (default HTTPS TCP port)
# ufw app list
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
# ufw allow 'Apache Secure'
# ufw status verbose | grep 443
443/tcp (Apache Secure) ALLOW IN Anywhere
443/tcp (Apache Secure (v6)) ALLOW IN Anywhere (v6)
Teamspeak 3 setup on Ubuntu 16.04 and 18.x via command line
Followed steps at How to install Teamspeak 3 server on Ubuntu 16.04 64-bit to install Teamspeak 3 and get basic server running.
If you want to customize the server port follow next steps.
Install simple command-line program named sqlite3. How to use sqlite
robot00@apu00:~$ sudo apt install sqlite3
Launch sqlite3 using Teamspeak 3 sqlite database file:
robot00@apu00:~$ sudo sqlite3 /home/teamspeak/ts3server.sqlitedb
SQLite version 3.11.0 2016-02-15 17:29:24
Enter ".help" for usage hints.
Update port command:
sqlite> update servers set server_port=<CUSTOM UDP Port>;
Restart Teamspeak 3 server
robot00@apu00:~$ systemctl restart teamspeak.service
Test your connection using the <CUSTOM UDP Port>
Upgrade Teamspeak3 server
original steps
Login to SSH as root
Stop your current Teamspeak 3 Server systemctl stop teamspeak.service
Change to your teamspeak user cd /home/teamspeak/;su teamspeak
Download Teamspeak, extract it, update and tidy up.
wget https://files.teamspeak-services.com/releases/server/3.9.1/teamspeak3-server_linux_amd64-3.9.1.tar.bz2
tar xvfj teamspeak3-server_linux_amd64-3.9.1.tar.bz2
cd teamspeak3-server_linux_amd64
cp * -R /home/teamspeak
cd ..
rm -r teamspeak3-server_linux_amd64
rm teamspeak3-server_linux_amd64-3.9.1.tar.bz2
Return to root and start the Teamspeak server
exit
systemctl start teamspeak.service
Check to make you can connect to Teamspeak 3 server
Factorio Headless Setup
My Factorio Info
Hardware
Identify video card:
paul@congo:~$ lspci -nn | grep VGA
01:00.0 VGA compatible controller [0300]: nVidia Corporation G92 [GeForce 8800 GT] [10de:0611] (rev a2)
Verify interface speed
cat /sys/class/net/<interface>/speed
replace <interface> with name of your NIC (e.g. eth0)
Ubuntu video card
To Linux