Init default Ubuntu VPS with this:
Update & upgrade required packets:
# apt update && apt upgrade
# apt install software-properties-common && apt-add-repository main universe restricted multiverse && dpkg --add-architecture i386 && apt update && apt install steamcmd
Create new ubuntu
user:
# adduser ubuntu
# usermod -aG sudo ubuntu
Login as ubuntu
user:
# sudo su ubuntu
$ cd ~ && mkdir -p ~/.ssh && cd .ssh
Copy-paste client machine SSH pub key:
$ nano ~/.ssh/authorized_keys
Set PasswordAuthentication
to no
and restart sshd
:
$ sudo nano /etc/ssh/sshd_config
$ sudo systemctl restart ssh
Enable ufw
firewall and open 8211 port (default port for Palworld):
$ sudo ufw allow OpenSSH
$ sudo ufw allow 8211
$ sudo ufw enable
Download server distribution:
$ /usr/games/steamcmd +login anonymous +app_update 2394010 validate +quit
$ mkdir .steam && cd .steam
$ ln -s /home/ubuntu/.local/share/Steam/steamcmd/linux32 sdk32
$ ln -s /home/ubuntu/.local/share/Steam/steamcmd/linux64 sdk64
Check if Palworld server working and generate default config:
$ cd ~/Steam/steamapps/common/PalServer && ./PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS
Create server config from default:
$ cp ~/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
Change values ServerPlayerMaxNum
, ServerName
, ServerDescription
, AdminPassword
, ServerPassword
to your values:
$ nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini
Create launch bash script for Palworld server:
$ touch ~/palworld-maintenance.sh && sudo chmod ugo+x palworld-maintenance.sh
$ mkdir ~/Palworld_backups
Paste this there (palworld-maintenance.sh
):
#!/bin/bash
/usr/games/steamcmd +login anonymous +app_update 2394010 validate +quit && tar -czvf /home/ubuntu/Palworld_backups/"Palworld_$(date '+%Y-%m-%d_%H-%M-%S').tar.gz" /home/ubuntu/Steam/steamapps/common/PalServer/Pal/Saved && find /home/ubuntu/Palworld_backups/ -mtime +10 -type f -delete
General rule of thumb: 2G Minimum for Base Server +0.5 to +1G per Player (in my case VPS has 12G of memory)
Create & paste this systemd
script to /etc/systemd/system/palworld.service
:
[Unit]
Description=Palworld Dedicated Server
Wants=network-online.target
After=network-online.target
[Service]
User=ubuntu
Group=ubuntu
Environment="templdpath=$LD_LIBRARY_PATH"
Environment="LD_LIBRARY_PATH=/home/steam/:$LD_LIBRARY_PATH"
Environment="SteamAppId=2394010"
RestartSec=30s
MemoryMax=11G
ExecStartPre=/home/ubuntu/palworld-maintenance.sh
ExecStart=/home/ubuntu/Steam/steamapps/common/PalServer/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS > /dev/null
Restart=always
[Install]
WantedBy=multi-user.target
Enable & start palworld.service:
$ sudo systemctl enable palworld.service
$ sudo systemctl daemon-reload
$ sudo systemctl start palworld.service
Config Crontab to restart palworld server once a day:
$ sudo apt install cron
$ sudo crontab -e
Paste this to root
crontab:
0 12 * * * systemctl restart palworld.service