Skip to content

Arma 3 Server

Ein Arma 3 Gameserver ermöglicht es Arma 3 Spielern eine gemeinsame Mission zu spielen. Das hier beschriebene Vorgehen erweitert die Grundfunktionalität von LGSM (Linux Game Server Manager) um die benötigten Paketen für extdb3.

In diesem Beispiel wird ein Arma 3 Exile Mod Server aufgesetzt:

version: '3.9'

services:
  arma3:
    image: ghcr.io/felbinger/arma3server
    restart: always
    environment:
      # will be stored on filesystem during installation:
      # /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
      - "STEAM_USER="
      - "STEAM_PASS="
    ports:
      - '2302:2302/udp'    # Arma 3 + voice over network
      - '2303:2303/udp'    # Steam Query
      - '2304:2304/udp'    # Steam Master
      - '2305:2305/udp'    # old Voice over Network
      - '2306:2306/udp'    # BattleEye
    volumes:
      - '/srv/arma3:/home/linuxgsm'

  mariadb:
    image: mariadb
    restart: always
    environment:
      - "MARIADB_RANDOM_ROOT_PASSWORD=true"
      - "MARIADB_USER=arma3"
      - "MARIADB_PASSWORD=S3cr3T"
      - "MARIADB_DATABASE=exile"
    volumes:
      - "/srv/arma3-mariadb:/var/lib/mysql"

Vor dem ersten Start müssen die Berechtigungen des Verzeichnisses /srv/arma3 angepasst werden.

mkdir /srv/arma3
chown 1000:1000 /srv/arma3

Anschließend können die Container gestartet werden (docker compose up -d arma3), wodurch die Installation angestoßen wird.

Für Exile müssen nun einige Mods im Verzeichnis /srv/arma3/serverfiles/ hinzugefügt werden:

cd /srv/arma3/serverfiles/

# download and extract mods
wget http://bravofoxtrotcompany.com/exile/@Exile-1.0.4.zip
wget http://exilemod.com/ExileServer-1.0.4a.zip
unzip @Exile-1.0.4.zip 
unzip ExileServer-1.0.4a.zip 
rm *.zip

# move the extracted files into the correct locations
cp -r /srv/arma3/serverfiles/Arma\ 3\ Server/* /srv/arma3/serverfiles/

# create tables on database using provided database schema
docker compose exec -T mariadb \
  mysql -uexile -pexile exile < /srv/arma3/serverfiles/MySQL/exile.sql

# adjust extdb2 configuration
sed -i 's/^IP = 127.0.0.1/IP = mariadb/' /srv/arma3/serverfiles/@ExileServer/extdb-conf.ini
sed -i 's/^Username = changeme/Username = arma3/' /srv/arma3/serverfiles/@ExileServer/extdb-conf.ini
sed -i 's/^Password = /Password = S3cr3T/' /srv/arma3/serverfiles/@ExileServer/extdb-conf.ini

# arma 3 server configs
mv /srv/arma3/serverfiles/@ExileServer/basic.cfg /srv/arma3/serverfiles/cfg/arma3server.network.cfg
mv /srv/arma3/serverfiles/@ExileServer/config.cfg /srv/arma3/serverfiles/cfg/arma3server.server.cfg 

# add mods to server startup configuration
cat <<_EOF > /srv/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg
mods="@Exile"
servermods="@ExileServer"
_EOF

# delete remaining extracted files from exile-server
rm -r /srv/arma3/serverfiles/Arma\ 3\ Server/
rm -r /srv/arma3/serverfiles/MySQL

Nach einem Neustart der Container (docker compose down && docker compose up -d) sollten diese geladen werden, falls Probleme auftreten können diese dem Serverlog entnommen werden (docker compose exec arma3 arma3server console).

Wichtige Pfade

# things that need to be done to start the server (e. g. mods)
/srv/games/arma3/lgsm/config-lgsm/arma3server/arma3server.cfg

# arma 3 server / network config
/srv/games/arma3/serverfiles/cfg/arma3server.server.cfg
/srv/games/arma3/serverfiles/cfg/arma3server.network.cfg