Skip to content

Instantly share code, notes, and snippets.

@vdragunov
Last active February 20, 2024 12:09
Show Gist options
  • Save vdragunov/e29ab2a01cd3cac67dd1d0713f5b07ba to your computer and use it in GitHub Desktop.
Save vdragunov/e29ab2a01cd3cac67dd1d0713f5b07ba to your computer and use it in GitHub Desktop.
Palworld Ubuntu 22.04 server install

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment