Projekt Julians Ark Server: Difference between revisions

From JoBaPedia
Jump to navigation Jump to search
Line 84: Line 84:
  WantedBy=multi-user.target
  WantedBy=multi-user.target


after createing/changing the file do a
after creating/changing the file do a


  systemctl daemon-reload
  systemctl daemon-reload

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 creating/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