Work on this project has been migrated to a new project - Bits and Bytes / Palworld Installer
This code will remain available, but no futher work will be provided here, please refer to the new project for continued work.
This script will:
- Install Steam and SteamCMD
- Create a
steamuser for running the game server - Install Palworld Dedicated Server using standard Steam procedures
- Setup a systemd service for running the game server
- Install UFW firewall and add rules for game server
- Adds a management script for controlling your server
- Adds a watching script for monitoring your server
To install Palworld Dedicated Server on Debian 12 or Ubuntu 24.04, download and run linux_install_game_palworld.sh as root or sudo.
- Debian 12 tested on Digital Ocean, OVHCloud, and Proxmox.
- Ubuntu 24.04 tested on Proxmox.
Quick run (if you trust me, which you of course should not):
sudo su -c "bash <(wget -qO- https://raw.githubusercontent.com/VeraciousNetwork/Palworld-Linux/main/dist/linux_install_game_palworld.sh)" rootInstaller should run and provide the following output:
================================================================================
Palworld Installer
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3-venv is already the newest version (3.9.2-3).
sudo is already the newest version (1.9.5p2-3+deb11u1).
wget is already the newest version (1.21-1+deb11u1).
curl is already the newest version (7.74.0-1.3+deb11u14).
0 upgraded, 0 newly installed, 0 to remove and 33 not upgraded.
Installing SteamCMD...
...
Loading Steam API...IPC function call IClientUtils::GetSteamRealm took too long: 43 msec
OK
Connecting anonymously to Steam Public...OK
Waiting for client config...OK
Waiting for user info...OK
Update state (0x5) verifying install, progress: 0.20 (7340032 / 3623010449)
...
Update state (0x5) verifying install, progress: 90.67 (3284866717 / 3623010449)
Success! App '2394010' fully installed.
firewall_allow/UFW: Allowing 8211/udp from any...
Skipping adding existing rule
Skipping adding existing rule (v6)
================================================================================
Palworld Server Installation Complete
Game server will auto-update on restarts and will auto-start on server boot.
Game files: /home/steam/Palworld/AppFiles/
Game settings: /home/steam/Palworld/PalWorldSettings.ini
Next steps: configure your server by running
sudo /home/steam/Palworld/manage.py
IMPORTANT to complete installation, run sudo /home/steam/Palworld/manage.py to configure your server.
Download the script and retain for later management use.
wget https://raw.githubusercontent.com/VeraciousNetwork/Palworld-Linux/main/dist/linux_install_game_palworld.sh
chmod +x linux_install_game_palworld.shRe-running the installation script on an existing server is safe and will not overwrite or delete your existing game data. To install new features as they come out, simply re-download the script installer via the steps above and re-run the installer application.
Because it's managed with systemd, standardized commands are used for managing the server. This includes an auto-restart for the game server if it crashes.
By default, game world will automatically start at boot!
Bundled management script can send updates to Discord automatically when the server is stopped or restarted and will notify players in-game prior to server shutdown. Additionally, a manual save is issued prior to any shutdown event.
Player join, leave, and level up events are also sent to Discord.
Firewall rules are automatically updated for game server and RCON (when UFW is utilized).
# ufw status
Status: active
To Action From
-- ------ ----
...
8211/udp ALLOW Anywhere # Palworld Game Server
8211/udp (v6) ALLOW Anywhere (v6) # Palworld Game Server
/home/steam/Palworld
├── AppFiles/ # Game Server Files (directly managed from Steam)
├── PalWorldSettings.ini # Game Server Configuration
├── update.sh # Update game files (only when server stopped)
└── manage.py # Management console for game server and settings
Once installed, run sudo /home/steam/Palworld/manage.py to access the management console:
The first time running the management configuration, you will be prompted for a few options.
sudo /home/steam/Palworld/manage.py
== First Run Configuration ==
Enable API integration? (recommended) [Y/n]:
Enter the server name: Veracious Network Palworld
Enter the server description:
Require a password for players to join? [y/N]:== Welcome to the Palworld Linux Server Manager ==
Found an issue? https://github.com/VeraciousNetwork/Palworld-Linux/issues
Want to help financially support this project? https://ko-fi.com/Q5Q013RM9Q
Server Name: (opt 1) Veracious Network Palworld
Port: (opt 2) 8211
Direct Connect: 1.2.3.4:8211
Player Password: (opt 3)
Crossplay: (opt 4) Steam, Xbox, PS5, Mac
Status: 🛑 Stopped
Auto-Start: (opt 5) ✅ Enabled
Version: ⛔ Failed to connect to API
Players Online: None
Configure: [A]dmin password/API/RCON | [D]iscord
Control: [S]tart | [U]pdate
or [Q]uit to exit
The main screen of the management UI shows some useful information, and provides an interface to start/stop/update the server.
Pressing a will open the admin password and RCON management screen:
== Admin and RCON Configuration ==
Admin Password: (opt 1) abcdefghijklmnop Password for connecting to RCON or the REST API
RCON Status: (opt 2) ❌ Disabled Enable to allow remote control of the server
RCON Port: (opt 3) 25575 Port for RCON connections
REST Status: (opt 4) ✅ Enabled Enable to allow remote control of the server
REST Port: (opt 5) 8212 Port for REST API connections
Enter option 1-5 or [B]ack:
This allows you to change the admin/API/rcon password, as well as enable or disable RCON.
Note, you should leave the REST API enabled, as it allows the script to warn users upon restarts and gracefully save prior to shutting down the server.
== Discord Integration ==
Discord integration is currently available and enabled!
Discord Webhook URL: https://canary.discord.com/api/webhooks/1348175098775081070/xjCt************
Discord Channel ID: 919624281904783472
Discord Guild ID: 909843670214258729
Discord Webhook Name: Testy McTesterFace
[D]isable | [C]hange Discord webhook URL | configure [M]essages | [B]ack
Provides an option to automatically send messages to Discord on start, restart, and stop events for maps. Default messages provided, and can be customized to match your preferences.
To setup Discord integration, grab a webhook URL from Discord by browsing to Server Settings -> Integrations
Then Webhooks
And create a new webhook and configure as desired.
Copy the webhook URL and paste into the management console when prompted.
From the main menu overview, the options s, t, and r respectively
will start, stop, and restart the game server.
When REST is enabled and available, (default), the stop logic will first check if there are any players currently on the map. If there are, it will send a 5-minute warning to all players and then wait for a minute before another warning is sent if they are still logged in.
If all players have left the map prior to the countdown completing, the server will skip the remaining countdown and will proceed with the shutdown.
A world save is automatically requested on the map prior to shutdown.
Discord messages are sent prior to shutdown and after startup.
If the game server is stopped, the u option will update the game server files from Steam.
Since this integrates with systemd, all the standard OS commands are available.
A helper service (manage.py --watch), is installed to accompany the game service.
This helper facilitates the notifications to Discord during events.
sudo systemctl start palworldsudo systemctl restart palworldsudo systemctl stop palworldStopping the server will automatically call manage.py --pre-stop
to notify players and attempt to save the server.
sudo systemctl enable palworldEnabling a map will set it to start at boot, but it will not start the world immediately.
use sudo systemctl start ... to start the game manually.
sudo systemctl disable palworldDisabling a map will prevent it from starting at boot, but it will not stop the server.
use sudo systemctl stop ... to stop the requested world manually.
Configuration of your server via the configuration ini is available in /home/steam/Palworld/PalWorldSettings.ini
sudo -u steam nano /home/steam/Palworld/PalWorldSettings.iniWant to restart your server automatically at 5a each morning?
Edit crontab sudo nano /etc/crontab and add:
0 5 * * * root systemctl restart palworld(0 is minute, 5 is hour in 24-hour notation, followed by '* * *' for every day, every month, every weekday)
- Scripts Collection compiler by eVAL (AGPLv3)
- SteamCMD by Valve
- curl
- wget
- sudo
- systemd
- python3
- ufw


