Skip to main content
  1. Blog/

Host own Xonotic Server on Linux

·335 words·2 mins
Tech Gaming HowTo
ximnoise
Author
ximnoise
Sysadmin & Security Engineer
Table of Contents

Xonotic is an open-source arena-style shooter like Quake or Unreal Tournament, where you don’t even need an account. I stumbled upon the project by chance a few days ago and fell in love with it. I used to love Quake Live when I was a kid.

In this guide, I’ll briefly describe how to host your own Xonotic server on a small Linux VPS, which is generally very simple and, with a little experience, can be set up very quickly. In my case, I use a VPS from Netcup (not an affiliate link).

Create User
#

Once you have a server and have logged in via SSH, you can start creating a dedicated user.

First, create a separate user for Xonotic:

sudo useradd -m -d /opt/xonotic xonotic

Then enable login without an active SSH session:

sudo loginctl enable-linger xonotic

Switch to the new user account. You can find the user ID with cat /etc/passwd (here: 1002):

sudo machinectl shell --uid 1002

Download and extract Xonotic
#

Download the latest version:

wget https://dl.xonotic.org/xonotic-0.8.6.zip

Extract the archive:

unzip xonotic-0.8.6.zip

Prepare the Configuration Directory
#

Create the directory for the server configuration:

mkdir -p ~/.xonotic/data

Copy the sample configuration from Xonotic:

cp Xonotic/server/server.cfg ~/.xonotic/data/

Edit the configuration to suit your needs:

vim ~/.xonotic/data/server.cfg

Important settings:

sv_public 1
hostname ""
port 26000
sv_status_privacy 1

Create a systemd service
#

Create the directory for the service:

mkdir -p ~/.config/systemd/user

Create the service file:

vim ~/.config/systemd/user/xonotic-server.service

Paste the following content (with security options):

[Unit]
Description=Xonotic dedicated server
After=network.target

[Service]
Type=simple
ExecStart=/opt/xonotic/Xonotic/xonotic-linux-dedicated.sh -sessionid xonotic +serverconfig server.cfg

SyslogIdentifier=xonotic

ProtectHome=yes
ProtectClock=yes
ProtectSystem=strict
PrivateDevices=yes
ProtectHostname=yes
RestrictRealtime=yes
ProtectKernelLogs=yes
ProtectControlGroups=yes
ProtectKernelModules=yes
ProtectKernelTunables=yes
MemoryDenyWriteExecute=yes
RestrictAddressFamilies=AF_UNIX AF_INET AF_INET6

ReadWritePaths=%h

Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

Start and enable the service
#

Reload the Systemd configuration:

systemctl --user daemon-reload

Start the service and enable it to start automatically:

systemctl --user enable --now xonotic-server.service

Check the status (should show no errors):

systemctl --user status xonotic-server.service

Your server should now be visible in the Xonotic server list and ready to play. Have fun! 🎮