DCS World Dedicated Server on Linux via Wine
Voraussetzung:
Hardware:
Der Server sollte die Mindestanforderungen für DCS World erfüllen, außer die Grafikkarte, die muss nicht so Leistungsfähig sein.
Es reicht also die bei vielen Angebotenen enthaltenen CPU Graphik.
Software:
Ein aktuelles Linux Betriebssystem (64bit Version), mit dem man sich auskennt.
Getestet wurde das ganze unter Ubuntu Server 18.04.
Für die Grafikkarte sollten aktuelle Mesa Treiber ab Version 18 oder höher vorhanden sein.
Skill:
Ein wenig Erfahrung mit Linux als Betriebssystem und DCS World als Anwendung.
Dieses HowTo wurde auf einem "alten" Server bei Hetzner (hetzner.de/) getestet.
Der Server ist mit folgender Hardware ausgestattet:
CPU: Intel i7 920 mit 2,67 GHz
RAM: 8 GiB DDR3
HD: 750 GiB
GPU: ATI HD 2400 Pro mit 128 MB VRAM (das ist eine absolute Lowend GPU aus der R600 Serie von 2007, aber es gibt gute Linux Treiber dafür)
Als Betriebssystem wird Ubuntu 18.04.2 benutzt, der Rest ist wie weiter unten beschrieben.
DCS nutzt auf einen leeren Server mit der Mission „Border Patrol 1.1“ 55% CPU und 42% RAM.
Vorbereitung:
Software Installation auf dem Server:
Das Betriebssystem und alle Programmpakete müssen in der 64bit Version installiert sein/werden.
Folgende Paketen sollte Installiert sein/werden:
- SSH Server
- Wine 4.0 oder neuer (gerne auch Staging)
- winetricks (aktuelle Version)
- zenity, als Oberfläche für winetricks
- xvfb, für die spätere Ausführung ohne Darstellung der Fenster.
- nohub, oder screen um Programme von der Konsole zu entkoppeln.
Beachtet die nötigen Abhängigkeiten aller Programme, das können eine menge Pakete sein.
Software auf einem Lokalen Windows PC:
Zur Installation des Server benötigen wir leider einige Anwendungen auf dem Windows PC.
- SSH Client, zB. PuTTY
- ein X-Server für Windows, z.B. VcXsrv oder Xming
Macht Euch bitte selbständig mit diesen Anwendungen vertraut und liest die entsprechenden Dokumentationen.
oder Software auf einem Lokalen Linux PC:
Es wird ein Linux PC mit Desktopsystem und X-Windows benötigt, alles andere sollte schon dabei sein (z.B. SSH).
Installation:
Von Eurem Lokalen-PC aus startet Ihr eine SSH Verbindung zum zukünftigen DCS Server, dabei müsst Ihr das X-Forwarding aktivieren (Doku dazu lesen).
Falls noch nicht passiert, installiert Ihr die oben erwähnten Pakete (Wine, winetricks, zenity, xvfb, ...).
Es muss ein nicht privilegierter Benutzer angelegt werde, in dessen Kontext der DCS Server läuft.
Dazu bitte die Betriebssystemaufrufe nutzen, z.B.
Nun muss in den Kontext des neuen Benutzers gewechselt werden, z.b.
Am besten ist es, wenn ein eigenes Wine-Prefix für den Server angelegt wird.
Dazu muss nur das folgende angegeben werden:
Das erzeugt in dem Home Verzeichnis des Benutzers ein Ordner wine und darin einen Ordner DCSWorld. Hier werden später alle Daten gespeichert und DCS World installiert.
Wichtig ist auch, das als Architektur für Wine ein 64bit System angegeben wird.
Dazu muss das folgende angegeben werden:
Diese beiden Angaben müssen immer vor jeden Wine Aufruf angegeben werden.
Vor der eigentlichen Installation muss noch die Windows Version festgelegt werden.
Das startet das Programm „winecfg“ und stellt dort auf dem Ersten Tab die Windows Version ein, am auf Windows 10.
Anschließend müssen noch die "Visual C++ 2015 libraries" und die "Windows Fonts" installiert werden, ansonsten stürzt später DCS World ab.
Dazu wird das Programm winetrick benötigt.
Gegebenenfalls meckert winetricks über fehlende Programmpakete, dann müssen diese vorher noch Installiert werden.
Anschließend ladet den aktuellen DCS World Installer herunter, in diesem Fall den Open BETA Installer:
Danach kann der Installer über wine gestartet werden:
Nach der Installation kann DCS World als Server gestartet werden, dazu muss nur die DCS.exe mit den entsprechenden Parameter gestartet werden (--server --norender).
Beim ersten Start erscheint der DCS Login Dialog, hier müsst ihr Euren DCS World Login angeben und die beiden Haken bei "Save password" und "Auto login" setzen und euch anschließend einloggen.
Nun sollte sich der DCS World Splash Screen öffnen.
Zum Administrieren des Servers müsst ihr das ED eigene WebGUI unter digitalcombatsimulator.com/en/personal/server/ nutzen, meldet Euch hier mit den selben DCS World Account Daten an.
Ihr solltet den Server in der Liste "My serves" sehen.
Zur Weiteren Bearbeitung und Administration sollte der Server vorerst beendet werden.
Dazu macht Ihr am besten eine zweite SSH Verbindung zu dem Server auf und last euch die ProzessID von DCS World ausgeben:
Dann könnt Ihr ein einfach den DCS Prozess beenden:
Dies ist immer die Möglichkeit DCS World zu beenden.
Ihr müsst den Ordner „Missions“ für die Multiplayer Missionen noch erzeugen, dazu wechselt Ihr in den entsprechenden Ordner in dem wine Verzeichnis, z.B.:
Dort muss der Ordner "Missions" erzeugt werden:
In diesem Ordner werden die Multiplayer Missionen gespeichert, denn hier sucht DCS World standardmäßig nach den Missionen.
Nun wechselt Ihr am besten in den wine Ordner unter eurem Benutzer: cd ~/wine
Hier erzeugt Ihr ein kleines BashScript zum starten des Servers.
Das Script kann wie folgt heißen "startDCSWorldServer.sh" und muss das folgende enthalten:
Das Script muss nur noch ausführbar gemacht werden:
Mit den folgenden Befehlen wird nun der DCS World Dedicated Server gestartet:
nohup : schiebt die Programme in den Hintergrund, so das man sich einfach von der Konsole abmelden kann.
xvfb-run -a -e ~/xvfb.log : startet das Programm auf einen Virtuellen X-Server, damit der DCS World Splashscreen nicht angezeigt wird. Der Parameter -a sorgt dafür, das xvfb automatisch einen freien Display Server wählt, der Parameter -e ~/xvfb.log gibt an das gegebenenfalls Logausgaben in die Datei gespeichert werden.
~/wine/startDCSWorldServer.sh : startet den eigentlichen DCS World Server.
& : das Kaufmännische Und ist wichtig und darf nicht vergessen werden, es entkoppelt die Programme von der Konsole
Ich muss nach dem Start des Servers die Mission über die ED Server Admin Seite starten.
Voraussetzung:
Hardware:
Der Server sollte die Mindestanforderungen für DCS World erfüllen, außer die Grafikkarte, die muss nicht so Leistungsfähig sein.
Es reicht also die bei vielen Angebotenen enthaltenen CPU Graphik.
Software:
Ein aktuelles Linux Betriebssystem (64bit Version), mit dem man sich auskennt.
Getestet wurde das ganze unter Ubuntu Server 18.04.
Für die Grafikkarte sollten aktuelle Mesa Treiber ab Version 18 oder höher vorhanden sein.
Skill:
Ein wenig Erfahrung mit Linux als Betriebssystem und DCS World als Anwendung.
Dieses HowTo wurde auf einem "alten" Server bei Hetzner (hetzner.de/) getestet.
Der Server ist mit folgender Hardware ausgestattet:
CPU: Intel i7 920 mit 2,67 GHz
RAM: 8 GiB DDR3
HD: 750 GiB
GPU: ATI HD 2400 Pro mit 128 MB VRAM (das ist eine absolute Lowend GPU aus der R600 Serie von 2007, aber es gibt gute Linux Treiber dafür)
Als Betriebssystem wird Ubuntu 18.04.2 benutzt, der Rest ist wie weiter unten beschrieben.
DCS nutzt auf einen leeren Server mit der Mission „Border Patrol 1.1“ 55% CPU und 42% RAM.
Vorbereitung:
Software Installation auf dem Server:
Das Betriebssystem und alle Programmpakete müssen in der 64bit Version installiert sein/werden.
Folgende Paketen sollte Installiert sein/werden:
- SSH Server
- Wine 4.0 oder neuer (gerne auch Staging)
- winetricks (aktuelle Version)
- zenity, als Oberfläche für winetricks
- xvfb, für die spätere Ausführung ohne Darstellung der Fenster.
- nohub, oder screen um Programme von der Konsole zu entkoppeln.
Beachtet die nötigen Abhängigkeiten aller Programme, das können eine menge Pakete sein.
Software auf einem Lokalen Windows PC:
Zur Installation des Server benötigen wir leider einige Anwendungen auf dem Windows PC.
- SSH Client, zB. PuTTY
- ein X-Server für Windows, z.B. VcXsrv oder Xming
Macht Euch bitte selbständig mit diesen Anwendungen vertraut und liest die entsprechenden Dokumentationen.
oder Software auf einem Lokalen Linux PC:
Es wird ein Linux PC mit Desktopsystem und X-Windows benötigt, alles andere sollte schon dabei sein (z.B. SSH).
Installation:
Von Eurem Lokalen-PC aus startet Ihr eine SSH Verbindung zum zukünftigen DCS Server, dabei müsst Ihr das X-Forwarding aktivieren (Doku dazu lesen).
Falls noch nicht passiert, installiert Ihr die oben erwähnten Pakete (Wine, winetricks, zenity, xvfb, ...).
Es muss ein nicht privilegierter Benutzer angelegt werde, in dessen Kontext der DCS Server läuft.
Dazu bitte die Betriebssystemaufrufe nutzen, z.B.
adduser <Benutzername>
(Debian/Ubuntu)Nun muss in den Kontext des neuen Benutzers gewechselt werden, z.b.
su -l <Benutzername>
Am besten ist es, wenn ein eigenes Wine-Prefix für den Server angelegt wird.
Dazu muss nur das folgende angegeben werden:
WINEPREFIX=~/wine/DCSWorld
Das erzeugt in dem Home Verzeichnis des Benutzers ein Ordner wine und darin einen Ordner DCSWorld. Hier werden später alle Daten gespeichert und DCS World installiert.
Wichtig ist auch, das als Architektur für Wine ein 64bit System angegeben wird.
Dazu muss das folgende angegeben werden:
WINEARCH="win64"
Diese beiden Angaben müssen immer vor jeden Wine Aufruf angegeben werden.
Vor der eigentlichen Installation muss noch die Windows Version festgelegt werden.
Das startet das Programm „winecfg“ und stellt dort auf dem Ersten Tab die Windows Version ein, am auf Windows 10.
WINEARCH="win64" WINEPREFIX=~/wine/DCSWorld winecfg
Anschließend müssen noch die "Visual C++ 2015 libraries" und die "Windows Fonts" installiert werden, ansonsten stürzt später DCS World ab.
Dazu wird das Programm winetrick benötigt.
WINEARCH="win64" WINEPREFIX=~/wine/DCSWorld winetricks vcrun2015 allfonts
Gegebenenfalls meckert winetricks über fehlende Programmpakete, dann müssen diese vorher noch Installiert werden.
Anschließend ladet den aktuellen DCS World Installer herunter, in diesem Fall den Open BETA Installer:
wget https://updates.digitalcombatsimulator.com/installers/DCS_World_OpenBeta_web.exe ~/wine/.
Danach kann der Installer über wine gestartet werden:
WINEARCH="win64" WINEPREFIX=~/wine/DCSWorld wine ~/wine/DCS_World_OpenBeta_web.exe
Nach der Installation kann DCS World als Server gestartet werden, dazu muss nur die DCS.exe mit den entsprechenden Parameter gestartet werden (--server --norender).
WINEARCH="win64" WINEPREFIX=~/wine/DCSWorld wine ~/wine/DCSWorld/drive_c/Program\ Files/Eagle\ Dynamics/DCS\ World\ OpenBeta/bin/DCS.exe --server --norender
Beim ersten Start erscheint der DCS Login Dialog, hier müsst ihr Euren DCS World Login angeben und die beiden Haken bei "Save password" und "Auto login" setzen und euch anschließend einloggen.
Nun sollte sich der DCS World Splash Screen öffnen.
Zum Administrieren des Servers müsst ihr das ED eigene WebGUI unter digitalcombatsimulator.com/en/personal/server/ nutzen, meldet Euch hier mit den selben DCS World Account Daten an.
Ihr solltet den Server in der Liste "My serves" sehen.
Zur Weiteren Bearbeitung und Administration sollte der Server vorerst beendet werden.
Dazu macht Ihr am besten eine zweite SSH Verbindung zu dem Server auf und last euch die ProzessID von DCS World ausgeben:
ps aux | grep -i dcs
Dann könnt Ihr ein einfach den DCS Prozess beenden:
kill <ProcessID>
Dies ist immer die Möglichkeit DCS World zu beenden.
Ihr müsst den Ordner „Missions“ für die Multiplayer Missionen noch erzeugen, dazu wechselt Ihr in den entsprechenden Ordner in dem wine Verzeichnis, z.B.:
cd ~/wine/DCSWorld/drive_c/users/<Benutzername>/Saved Games/DCS.openbeta
Dort muss der Ordner "Missions" erzeugt werden:
mkdir Missions
In diesem Ordner werden die Multiplayer Missionen gespeichert, denn hier sucht DCS World standardmäßig nach den Missionen.
Nun wechselt Ihr am besten in den wine Ordner unter eurem Benutzer: cd ~/wine
Hier erzeugt Ihr ein kleines BashScript zum starten des Servers.
Das Script kann wie folgt heißen "startDCSWorldServer.sh" und muss das folgende enthalten:
WINEARCH="win64" WINEPREFIX=~/wine/DCSWorld wine ~/wine/DCSWorld/drive_c/Program\ Files/Eagle\ Dynamics/DCS\ World\ OpenBeta/bin/DCS.exe --server --norender
Das Script muss nur noch ausführbar gemacht werden:
chmod +x startDCSWorldServer.sh
Mit den folgenden Befehlen wird nun der DCS World Dedicated Server gestartet:
nohup xvfb-run -a -e ~/xvfb.log ~/wine/startDCSWorldServer.sh &
nohup : schiebt die Programme in den Hintergrund, so das man sich einfach von der Konsole abmelden kann.
xvfb-run -a -e ~/xvfb.log : startet das Programm auf einen Virtuellen X-Server, damit der DCS World Splashscreen nicht angezeigt wird. Der Parameter -a sorgt dafür, das xvfb automatisch einen freien Display Server wählt, der Parameter -e ~/xvfb.log gibt an das gegebenenfalls Logausgaben in die Datei gespeichert werden.
~/wine/startDCSWorldServer.sh : startet den eigentlichen DCS World Server.
& : das Kaufmännische Und ist wichtig und darf nicht vergessen werden, es entkoppelt die Programme von der Konsole
Ich muss nach dem Start des Servers die Mission über die ED Server Admin Seite starten.