Сервер arma 3 linux

Сервер arma 3 linux

Die Software Docker [www.docker.com] dient zum isolieren von Prozesse, damit diese unabhängig voneinander ausgeführt werden können. Die Zusatzsoftware docker-compose [docs.docker.com] bietet die Möglichkeit in einer yml Datei die Konfiguration der Container zu speichern. Damit ist ein Problemloses umziehen von Docker Containern binnen weniger Minuten möglich, lediglich die Konfiguration Datei (hier: docker-compose.yml) und die Daten müssen auf die neue Infrastruktur verschoben werden, nach der Installation von Docker und docker-compose können die Container gestartet werden.

Die Installation von Docker kann für die jeweilge Linux Distribution (z.B. Ubuntu, Fedora, CentOS, Debian) aus der Offiziellen Dokumentation entnommen werden: https://docs.docker.com/install/

Die Installation von docker-compose ist ebenfalls gut dokumentiert: https://docs.docker.com/compose/install/.

Da nun Docker & docker-compose installiert sind, können wir nun mit der Installation des LGSM (Linux Game Server Manager) Container beginnen.

Dazu legen wir zuerst die Datei docker-compose.yml an:

version: ‘3’ services: linuxgsm: image: gameservermanagers/linuxgsm-docker restart: always volumes: — «/srv/lgsm:/home/lgsm/» ports: — «2302:2302/udp» — «2303:2303/udp» — «2304:2304/udp» — «2305:2305/udp» — «2306:2306/udp»

In dieser Datei befindet sich die Containerdefinition für den Container ‘linuxgsm’.
Der Container erhält das Docker Image ‘linuxgsm’, der Ordner (auf dem Host System) /srv/games/linuxgsm/ wird im Container unter /home/lgsm eingehängt. Für den Arma 3 Server benötigte Ports (2302 — 2305) sowie den für BattleEye benötigten Port 2306 werden direkt weitergereicht (Da Arma 3 auf diesen Ports ausschließlich mit dem Protokol UDP arbeitet, müssen wir dies angeben, wenn nichts angegeben wird werden nur TCP Pakete durchgereicht!)

Im weiteren Verlauf des Guides werden sich an dieser Konfigurationsdatei zwei Dinge ändern.
Zum einen werden wir (insofern erforderlich) ein selbst erstelltes LGSM Docker Image nutzen, um ein Paket für die Serverseitige Arma 3 Mod extDB2 / extDB3 nachzuinstallieren. Diese Mod kann genutzt werden um Arma 3 mit einer Datenbank zu verbinden. Diese Mod wird häufig bei Persistenten Missionen wie Arma 3 Life; Exile; . ) verwendet, alternativ kann IniDBi2 verwendet werden, welche keine weiteren Pakete benötigt.

Die zweite Änderung betrifft den sogenannten entrypoint, das ist ein Script welches beim Containerstart ausgeführt werden soll. In unserem Fall wollen wir zusätzlich zum normalen Entrypoint des LGSM Containers unseren Arma 3 Server starten.

Nun können wir den Container mittels docker-compose starten und stoppen.

# der pfad zur docker-compose.yml datei kann mit -f pfad angegeben werden, alternativ muss die datei docker-compose.yml sich im aktuellen verzeichnis befinden. # container starten sudo docker-compose up -d linuxgsm # container stoppen und löschen (aus arbeitsspeicher entfernen) sudo docker-compose rm -fs linuxgsm # shell in container ausführen sudo docker-compose exec linuxgsm bash # logs des container anzeigen sudo docker-compose logs linuxgsm # status des container anzeigen sudo docker-compose ps linuxgsm

Читайте также:  Antix linux usb модем

Wenn man den Container gestartet hat und eine Shell geöffnet hat, kann man den Arma 3 Server recht einfach über das LGSM Script im Homeverzeichnis installieren. Dafür braucht man natürlich (für Steam CMD) einen Gültigen Steam Login zum Download der Serverfiles (Arma 3 muss nicht im Besitz des Accounts sein.)

Der Arma 3 Server kann anschließend mit arma3server start gestartet werden. Mit arma3server console kann man in die tmux session gehen und die server logs einsehen.

Wichtige Verzeichnisse sind:

/home/lgsm/lgsm/config-lgsm/arma3server #

Wie bereits angesprochen benötigen die Serverseitigen Mods @extDB2 / @extDB3 für die Datenbankkommunikation ein weiteres Paket (siehe BitBukkit Installationsanleitung [bitbucket.org] ). Dieses kann unter Ubuntu (das ist das OS im Container) mittels apt installiert werden.

# # LinuxGSM Dockerfile # # https://github.com/GameServerManagers/LinuxGSM-Docker # FROM ubuntu:18.04 LABEL maintainer=»LinuxGSM » ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \ && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.utf8 ## Base System + libtbb2:i386 for Arma 3 extDB3 RUN dpkg —add-architecture i386 && \ apt update -y && \ apt install -y \ mailutils \ postfix \ curl \ wget \ file \ bzip2 \ gzip \ unzip \ bsdmainutils \ python \ util-linux \ binutils \ bc \ jq \ tmux \ lib32gcc1 \ libstdc++6 \ libstdc++6:i386 \ apt-transport-https \ ca-certificates \ telnet \ expect \ libncurses5:i386 \ libcurl4-gnutls-dev:i386 \ libstdc++5:i386 \ lib32tinfo5 \ xz-utils \ zlib1g:i386 \ libldap-2.4-2:i386 \ lib32z1 \ default-jre \ speex:i386 \ libtbb2 \ libxrandr2:i386 \ libglu1-mesa:i386 \ libxtst6:i386 \ libusb-1.0-0:i386 \ libopenal1:i386 \ libpulse0:i386 \ libdbus-glib-1-2:i386 \ libnm-glib4:i386 \ zlib1g \ libssl1.0.0:i386 \ libtcmalloc-minimal4:i386 \ libsdl1.2debian \ libnm-glib-dev:i386 \ libtbb2:i386 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Add the linuxgsm user RUN adduser \ —disabled-login \ —disabled-password \ —shell /bin/bash \ —gecos «» \ linuxgsm \ && usermod -G tty linuxgsm \ && chown -R linuxgsm:linuxgsm /home/linuxgsm # Switch to the user linuxgsm USER linuxgsm ## linuxgsm.sh RUN wget https://linuxgsm.com/dl/linuxgsm.sh ## user config RUN groupadd -g 750 -o linuxgsm && \ adduser —uid 750 —disabled-password —gecos «» —ingroup linuxgsm linuxgsm && \ chown linuxgsm:linuxgsm /linuxgsm.sh && \ chmod +x /linuxgsm.sh && \ cp /linuxgsm.sh /home/linuxgsm/linuxgsm.sh && \ usermod -G tty linuxgsm && \ chown -R linuxgsm:linuxgsm /home/linuxgsm/ && \ chmod 755 /home/linuxgsm USER linuxgsm WORKDIR /home/linuxgsm VOLUME [] # need use xterm for LinuxGSM ENV TERM=xterm ## Docker Details ENV PATH=$PATH:/home/linuxgsm COPY entrypoint.sh /entrypoint.sh ENTRYPOINT [«bash»,»/entrypoint.sh» ]

Читайте также:  Linux set timezone console

Um den Arma 3 Server beim Start des LGSM Docker Containers automatisch zu starten erstellen wir einen custom-entrypoint und binden ihn als volume in der docker-compose.yml ein.

#!/bin/bash if []; then echo «Initializing Linuxgsm User Script in New Volume» cp /linuxgsm.sh ./linuxgsm.sh fi # start arma 3 server /bin/bash /home/lgsm/arma3server start /usr/bin/tmux set -g status off && /usr/bin/tmux attach 2> /dev/null tail -f /dev/null exit 0

version: ‘3’ services: linuxgsm: image: linuxgsm # gameservermanagers/linuxgsm-docker restart: always volumes: — «/srv/lgsm/custom-entrypoint.sh:/entrypoint.sh» #

Mit @extDB3 können Arma 3 SQF Scripte auf Datenbanken zugreifen. Dafür braucht man ein Datenbankmanagementsystem (DBMS), eine Verwaltungskonsole ist ebenfalls sinnvoll um
z.B. Änderungen an den Daten vorzunehmen (z.B. jemandem in Altis Life Geld zu geben).
Als DBMS verwenden wir MariaDB, als Verwaltungskonsole PHPmyAdmin.

In der docker-compose.yml wird folgendes hinzugefügt:

# lgsm container db: image: mariadb restart: always command: —sql_mode=» environment: MYSQL_ROOT_PASSWORD: GEHEIMES_PASSWORT_ÄNDERN! volumes: — «/srv/mysql/data:/var/lib/mysql» phpmyadmin: image: phpmyadmin/phpmyadmin restart: «no» links: — db environment: PMA_HOST: db PMA_PORT: 3306 PMA_ABSOLUTE_URI: http://XXX.XXX.XXX.XXX #

Warnung: Die Verwaltungskonsole ist hier nur über http erreichtbar. Das bedeutet das z.B. die Login Daten nicht verschlüsselt werden. Im Internet finden sich zahlreiche einträge wie man phpmyadmin via ssl erreichen kann. Ich nutze dafür (da es meist mehrere Docker Container sind die via ssl erreichbar sein sollen) einen nginx reverse proxy, bei diesem weise ich jeden Container eine domain zu und alle anfragen werden darüber an den Proxy geleitet. Bei Bedarf kann ich die Anleitung um dieses Feature ergänzen.

Der Guide wird sich hoffentlich in den nächsten Wochen mit allen mir bekannten Informationen füllen. Vieles werde ich — wenn ich Zeit habe — überarbeiten (z.B. die Installation des Arma 3 Servers im Container), auch Bilder plane ich einzufügen.

Ich hoffe ich konnte euch helfen.

Источник

Arma 3: Server Profile

This article is about the server.Arma3Profile.

Location

Windows

The default profile named after the system user can be found at: C:\Users\%UserName%\Documents\Arma 3

User created profiles with a different naming are found at: C:\Users\%UserName%\Documents\Arma 3 — Other Profiles

Profile name: You can define the profile to be loaded with the -name parameter.

Custom Location: You can specify the location by using the -profiles parameter.

Linux

The name depends upon the -name parameter when starting the Arma 3 server. Having started the server with «./server -name=server» (-profiles seems to be useless on Linux) you’ll find it as a subfolder of your arma-server directory, for example «/usr/home/arma-server/server/server.armaprofile».

Читайте также:  Linux копирование сетевой папки

If you’re not using the -name parameter, the default name «player» will be used and you’ll find the Arma 3 profile in player/player.armaprofile .

Example Configuration File

With 1.58 the difficulty levels were transformed to true presets (Recruit, Regular, Veteran). Each preset has exactly defined value for each difficulty option. If any of the options doesn’t match the preset, the preset is changed to Custom. The particular flags stored in profile are only for the Custom preset, since Recruit, Regular and Veteran are fixed ones and predefined in the CfgDifficultyPresets config class.

  • Documentation of presets and data config as well as a list of the most significant changes in 1.58: Arma 3: Difficulty Settings
  • Related forum thread: Difficulty Overhaul

Server Difficulty Example

class DifficultyPresets  class CustomDifficulty  class Options  /* Simulation */ reducedDamage = 0; // Reduced damage /* Situational awareness */ groupIndicators = 0; // Group indicators (0 = never, 1 = limited distance, 2 = always) friendlyTags = 0; // Friendly name tags (0 = never, 1 = limited distance, 2 = always) enemyTags = 0; // Enemy name tags (0 = never, 1 = limited distance, 2 = always) detectedMines = 0; // Detected mines (0 = never, 1 = limited distance, 2 = always) commands = 1; // Commands (0 = never, 1 = fade out, 2 = always) waypoints = 1; // Waypoints (0 = never, 1 = fade out, 2 = always) tacticalPing = 0; // Tactical ping (0 = disable, 1 = enable) /* Personal awareness */ weaponInfo = 2; // Weapon info (0 = never, 1 = fade out, 2 = always) stanceIndicator = 2; // Stance indicator (0 = never, 1 = fade out, 2 = always) staminaBar = 0; // Stamina bar weaponCrosshair = 0; // Weapon crosshair visionAid = 0; // Vision aid /* View */ thirdPersonView = 0; // 3rd person view (0 = disabled, 1 = enabled, 2 = enabled for vehicles only (Since Arma 3 v1.99)) cameraShake = 1; // Camera shake /* Multiplayer */ scoreTable = 1; // Score table deathMessages = 1; // Killed by vonID = 1; // VoN ID /* Misc */ mapContent = 0; // Extended map content autoReport = 0; // (former autoSpot) Automatic reporting of spotted enemied by players only. This doesn't have any effect on AIs. multipleSaves = 0; // Multiple saves >; // aiLevelPreset defines AI skill level and is counted from 0 and can have following values: 0 (Low), 1 (Normal), 2 (High), 3 (Custom). // when 3 (Custom) is chosen, values of skill and precision are taken from the class CustomAILevel. aiLevelPreset = 3; >; class CustomAILevel  skillAI = 0.5; precisionAI = 0.5; >; >; 

Источник

Оцените статью
Adblock
detector