Projekt Julians Ark Server: Difference between revisions
Line 63: | Line 63: | ||
session required pam_limits.so | session required pam_limits.so | ||
above is probably not necessary if using this service file /etc/systemd/system/ark1.service | |||
[Unit] | |||
Description=ARK: Survival Evolved dedicated server 1 | |||
Wants=network-online.target | |||
After=syslog.target network.target nss-lookup.target network-online.target | |||
[Service] | |||
ExecStartPre=/usr/bin/steamcmd +login anonymous +force_install_dir /home/steam/ark1 +app_update 376030 +quit | |||
ExecStart=/home/steam/ark1/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen -server -log | |||
WorkingDirectory=/home/steam/ark1/ShooterGame/Binaries/Linux | |||
LimitNOFILE=100000 | |||
ExecReload=/bin/kill -s HUP $MAINPID | |||
ExecStop=/bin/kill -s INT $MAINPID | |||
User=steam | |||
Group=users | |||
[Install] | |||
WantedBy=multi-user.target | |||
after createing/changing the file do a | |||
systemctl daemon-reload | |||
to start the service | |||
systemctl start ark1 | |||
to start after every boot | |||
systemctl enable ark1 | |||
= Updaten = | = Updaten = |
Revision as of 22:58, 3 November 2020
Starten
The Island
sudo systemctl start ark1
Maybe later more maps...
Stoppen
Backup gibt es automatisch nur alle 5 min also besser mit SaveWorld:
EnableCheats <Password> AdminCheat SaveWorld AdminCheat DoExit
Weitere Kommandos
http://ark.gamepedia.com/Console_Commands
Lokale Welt auf Server kopieren
lokale SavedLocalArcs nach SavedArks auf dem Server kopieren und lokales Profil einer Steam ID geben
cp -av ~/Backup/Saved.windows/SavedArksLocal ShooterGame/Saved/SavedArks cp ShooterGame/Saved/SavedArks/LocalPlayer.arkprofile ShooterGame/Saved/SavedArks/76561198229816152.arkprofile
Server im Router freigeben
folgende UDP Ports weiterleiten
4242 7777-7778 26900-26905 27015-27020 27215
From https://ark.gamepedia.com/Dedicated_Server_Setup
Server instance Game port Raw UDP port Query port RCON port Server game instance 1 7777 7778 27015 27020 Server game instance 2 7779 7780 27016 27021 Server game instance 3 7781 7782 27017 27022 Server game instance 4 completely different ports 9999 10000 37015 37016
Ports can be set as start parameters (or GameUserSettings.ini?)
Server konfigurieren
sudo vi /etc/sysctl.conf
fs.file-max=100000
sudo sysctl -p /etc/sysctl.conf
sudo vi /etc/security/limits.conf
steam soft nofile 1000000 steam hard nofile 1000000
sudo vi /etc/pam.d/common-session
session required pam_limits.so
above is probably not necessary if using this service file /etc/systemd/system/ark1.service
[Unit] Description=ARK: Survival Evolved dedicated server 1 Wants=network-online.target After=syslog.target network.target nss-lookup.target network-online.target
[Service] ExecStartPre=/usr/bin/steamcmd +login anonymous +force_install_dir /home/steam/ark1 +app_update 376030 +quit ExecStart=/home/steam/ark1/ShooterGame/Binaries/Linux/ShooterGameServer TheIsland?listen -server -log WorkingDirectory=/home/steam/ark1/ShooterGame/Binaries/Linux LimitNOFILE=100000 ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s INT $MAINPID User=steam Group=users [Install] WantedBy=multi-user.target
after createing/changing the file do a
systemctl daemon-reload
to start the service
systemctl start ark1
to start after every boot
systemctl enable ark1
Updaten
su - steam ./update-ark4walze1.sh
...oder das Icon auf dem Desktop verwenden
wenn diese Fehlermeldung kommt:
Error! App '376030' state is 0x206 after update job. :: ARK: Survival...
dann ist wahrscheinlich der Platz in /home/steam ausgegangen.
Konfiguration
im Verzeichnis, das man beim Installieren/Updaten angegeben hat (z.B. ~/servers/ark4walze1) in das Unterverzeichnis ShooterGame/Saved/Config/LinuxServer wechseln. Dort gibt es die Datei GameUserSettings.ini. Diese enthält unter anderem diese wichtigen Einstellungen. Vor allem die letzten beiden muss man bei der Installation anpassen!
ShowMapPlayerLocation=True proximityChat=True MaxStructuresInRange=1000 MaxPlayers=10 DifficultyOffset=0.2 SessionName=some-descriptive-name ServerPassword=some-passsword ServerAdminPassword=some-other-password
ein paar Einstellungen noch, die das Spiel leichter oder schwerer machen. Bei manchen haben schon winzige Änderungen einen großen Effekt:
NightTimeSpeedScale=3.0 TamingSpeedMultiplier=3.5 HarvestAmountMultiplier=1.5 DifficultyOffset=0.2 XPMultiplier=2
Und noch ein paar Einstellungen in Game.ini
[/script/shootergame.shootergamemode] MatingIntervalMultiplier=1.0 EggHatchSpeedMultiplier=20.0 BabyMatureSpeedMultiplier=20.0
Neue Map
wenn es eine neue Map gibt, kann man sie als user steam so installieren (statt X eine Nummer):
cp -a ~/servers/ark4walze1 ~/servers/ark4walzeX cp ~/start-ark4walze1.sh ~/start-ark4walzeX.sh cp ~/update-ark4walze1.sh ~/update-ark4walzeX.sh
Dann in den Skripten noch das servers Verzeichnis anpassen (1 -> X) und im start-ark4walzeX.sh den Map-Namen (TheIsland?listen -> Ragnarok?listen) oder die Map ID ersetzen
Backup wiederherstellen
wenn's mal nicht so gut läuft, und man deshalb einen älteren Stand wieder herstellen will:
su - steam killall ShooterGameServer cd ~/servers/ark4walze3/ShooterGame/Saved/SavedArks cp -av Ragnarok.ark Ragnarok_bad_luck.ark cp -av Ragnarok_22.06.2017_18.28.22.ark Ragnarok.ark ~/start-ark4walze3.sh
die Backup Zeiten sind UTC nicht MEZ (also im Sommer um zwei Stunden verschoben, im Winter um eine)
Troubleshooting
The server did work. Then, after some time (and app/os updates) whithout playing, it no longer works. The server shows up on client list, but on connect attempt it always fails.
Traffic from/to ARK server and Steam client
log all TCP and UDP activities (listening or connected ports) of the server process user 10008
while sleep 1; do out=`(cat /dev/shm/ss; ss -tupaen | grep 'uid:10008') | sort -u`; echo "$out" | cat >/dev/shm/ss; done
tcp LISTEN 16 *:27015 *:* users:(("ShooterGameServ",pid=3674,fd=16)) uid:10008 ino:40596325 sk:5d35 <-> tcp LISTEN 5 192.168.1.4:40470 *:* users:(("ShooterGameServ",pid=3674,fd=22)) uid:10008 ino:40620317 sk:5eae <-> udp UNCONN 0 *:27015 *:* users:(("ShooterGameServ",pid=3674,fd=11)) uid:10008 ino:40597086 sk:5ce9 <-> udp UNCONN 0 *:7778 *:* users:(("ShooterGameServ",pid=3674,fd=18)) uid:10008 ino:40603817 sk:5d76 <-> udp UNCONN 0 192.168.1.4:40884 *:* users:(("ShooterGameServ",pid=3674,fd=23)) uid:10008 ino:40620881 sk:5eec <-> udp UNCONN 0 192.168.1.4:43704 *:* users:(("ShooterGameServ",pid=3674,fd=19)) uid:10008 ino:40620278 sk:5ea6 <-> udp UNCONN 0 192.168.1.4:44104 *:* users:(("ShooterGameServ",pid=3674,fd=20)) uid:10008 ino:40620279 sk:5ea7 <-> udp UNCONN 0 192.168.1.4:47841 *:* users:(("ShooterGameServ",pid=3674,fd=24)) uid:10008 ino:40620882 sk:5eed <-> udp UNCONN 0 192.168.1.4:48225 *:* users:(("ShooterGameServ",pid=3674,fd=21)) uid:10008 ino:40621075 sk:5eab <-> udp UNCONN 0 192.168.1.4:48227 *:* users:(("ShooterGameServ",pid=3674,fd=25)) uid:10008 ino:40620918 sk:5eef <->
Dump all traffic to and from server during a "server start, client connect attempt" event
Server (192.168.1.4), client (192.168.1.8) and router (192.168.1.222)
S='( ( src host 192.168.1.4 or src host 192.168.1.8 or src host 192.168.1.222 ) and ( dst host 192.168.1.222 or dst host 192.168.1.4 or dst host 192.168.1.8 or ! dst net 192.168.1.0/24 ) )' D='( ( dst host 192.168.1.4 or dst host 192.168.1.8 or dst host 192.168.1.222 ) and ( src host 192.168.1.4 or src host 192.168.1.8 or src host 192.168.1.222 or ! src net 192.168.1.0/24 ) )' tcpdump -qnti br0 "$S or $D" >/dev/shm/td
Dump all traffic during the same event on fritz box
The server was "exposed host" during that time and no firewall was active on the server
http://fritz.box/html/capture.html
Generate capture file for lan in wireshark format: iad-if-eth0_11.03.18_1351.bin
Analyze
All files on server in /root/ark-trace