Setting up a Palworld Server on Ubuntu

In this tutorial, we will show you how to set up a dedicated server for Palworld on Ubuntu.

Ubuntu Palworld Dedicated Server

Palworld is a multiplayer action-adventure survival game focused on monster catching and crafting.

One of the neat things about this game is that you can host your very own dedicated Palworld server. Running a dedicated server means you can keep your world running 24/7 and free up room on your personal computer.

You don’t need to own the game or use your Steam account to run a server; the developers offer the dedicated server as a separate Steam application that you can install anonymously.

Over the following steps, you will learn how to install the Palworld dedicated server to your Ubuntu or Linux machine. We will even show you how to set up a systemd service file so your server will keep running, even after your machine restarts.

Setting up the Palworld dedicated server isn’t a complicated process, so if you aren’t too familiar with Linux or using the terminal, then don’t worry, as we will walk you through all of the steps to

One thing to warn you is that at the time of publishing, only the Steam versions of Palworld support connecting to the dedicated server.

If you are using a Raspberry Pi, you will need to follow our Pi specific guide.

Installing and Setting up the Palworld Server on Ubuntu

The following steps will walk you through setting up a Palworld dedicated server on Ubuntu.

If you are using a desktop flavor of Ubuntu, you will need to open the terminal. You can open the terminal easily by pressing CTRL + ALT + T on your keyboard.

While this guide focuses on setting up a Palworld server on Ubuntu, these should work on almost any Linux system. If you are running a Debian-like operating system, you should be able to follow the steps without worry.

Preparing your Ubuntu Server for Palworld

1. We must do a few things before we can install the Palworld server on our Ubuntu machine.

The first is to ensure we have an up-to-date operating system to work off. You can update the package list cache and upgrade any out-of-date packages by using the following command.

sudo apt update
sudo apt upgrade -y

2. Next, we must ensure that the “software-properties-common” package is installed on your system.

This package makes performing changes to repositories a straightforward process.

sudo apt install software-properties-common

Installing SteamCMD

3. To download and install the Palworld server on our Linux system, we must use SteamCMD.

SteamCMD is a command line interface we can use to download games and servers straight from Steam.

Before installing this tool, we need to add the “i386” (32-bit) architecture to our systems package manager by using the following command. The reason for this is that SteamCMD is only offered as a 32-bit application.

sudo dpkg --add-architecture i386

4. With the 32-bit architecture added, our next step is to add the multiverse repository on Ubuntu. Please note that if you use a different flavor of Debian, try the other command.

This is as simple as using the following command within the terminal.

sudo add-apt-repository multiverse

If you are using a Debian-based OS that isn’t Ubuntu, you will want to add the “non-free” repository.

sudo apt-add-repository non-free

5. Since we have changed the available repositories on our Ubuntu system, we will need to update the package list again.

You can update the package list cache by using the following command.

sudo apt update

6. Finally, we can install the SteamCMD tool to our system using the command below.

sudo apt install steamcmd

Creating a User to Run the Palworld Server on Ubuntu

7. With SteamCMD now installed, we must create a user to run the Steam CLI through. It is not recommended to use a root user to run this software.

Let us create a user called “steam” by utilizing the following command.

sudo useradd -m steam

8. After creating the user, we need to modify its “.bashrc” file to adjust the path environment variable.

At the moment, the user will be unable to find the SteamCMD tool we just installed as the “/usr/games” path is missing.

You can begin modifying this file by using the command below.

sudo nano /home/steam/.bashrc

9. To the bottom of this file, add the following line.

This simple line adds the “/usr/games/” directory to the start of the “PATH” environment variable.

export PATH="/usr/games/:$PATH"

10. After making the above changes, save and quit by pressing CTRL + X, Y, and then ENTER.

11. To begin installing the Palworld dedicated server to our Ubuntu device, we will want to change to the “Steam” user we created earlier.

You can swap to this user by running the following command.

sudo -u steam -s

12. Now change to the home directory of this user by using the cd command below.

cd ~

Installing the Palworld Server to your Ubuntu System

13. Before we can install and use the Palworld dedicated server we have to do some initial set up.

By running the following command, we will be downloading the Steamworks SDK redistributable. We need a specific file from this to run the server.

steamcmd +force_install_dir '/home/steam/Steam/steamapps/common/steamworks' +login anonymous +app_update 1007 +quit

14. Next, we must create a directory where the Palworld server will look for the “steamclient.so” file.

Create this directory by using the mkdir command.

mkdir -p /home/steam/.steam/sdk64

15. With the directory created, we can copy over the “steamclient.so” library the server requires to run.

cp '/home/steam/Steam/steamapps/common/steamworks/linux64/steamclient.so' /home/steam/.steam/sdk64/

16. We can now use the following command to download the Palworld dedicated server to our Linux machine.

The server is fairly large, so this process may take a few minutes to complete.

steamcmd +force_install_dir '/home/steam/Steam/steamapps/common/PalServer' +login anonymous +app_update 2394010 validate +quit

Starting up your Palworld Dedicated Server on Ubuntu

17. We are finally at the point where we can start up the Palworld server on Ubuntu.

To begin this process, change to the directory where the start script is by typing in the command below.

cd /home/steam/Steam/steamapps/common/PalServer

18. Finally, you can start your server using the following command.

You will see a couple of errors as it first starts up, but you can ignore these issues unless they continue to appear after the initial startup.

./PalServer.sh

Once you see the following text, you server should be up and running.

[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.

19. You can now access your Palworld server by connecting using your IP address.

If you are hosting this from your home, you must port forward port 8211 to allow outside access.

To stop the server, you simply need to press CTRL + C.

Configuring your Palworld Dedicated Server

20. After starting up your Palworld dedicated server, you will likely want to re-adjust the default settings.

To give you a good base, let us make a copy of the default settings using the command below.

cp /home/steam/Steam/steamapps/common/PalServer/DefaultPalWorldSettings.ini /home/steam/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

21. You can now begin modifying the configuration file by using the nano text editor.

nano ~/Steam/steamapps/common/PalServer/Pal/Saved/Config/LinuxServer/PalWorldSettings.ini

22. Within this file, you will find an assortment of different values that you can configure. We won’t be diving into all of these, but you can check out the official documentation to learn more.

One option you will likely want to change is the server password. Setting a password stops just anyone from hopping on your Palworld server.

To set the password, find the following setting within the file.

ServerPassword=""

Once you find the option, type in a password between the double quotes ("").

ServerPassword="pimylifeup"

23. Once you have made changes to the configuration file, save and quit by pressing CTRL + X, Y and ENTER.

Getting your Palworld Server to Start at Boot

24. If you are still using the Steam user from earlier, you will want to return to your normal user using the following command.

exit

25. We can begin writing a service file for our Palworld server by typing in the command below.

This service file will tell Ubuntu how it should start the server.

sudo nano /etc/systemd/system/palworld.service

25. Within this file, type in the following lines.

These lines will automatically start your Palworld server when your Ubuntu device powers on. Additionally, before it starts, the service will use SteamCMD to check for updates.

Additionally, we pass in some additional options that are recommended by the developer when we launch the server itself.

  • -useperfthreads: This is an Unreal Engine option that tells the engine to use threads to try to improve performance.
  • -NoAsyncLoadingThread: Using this, we tell the server not to use user a separate thread for asynchronous loading. This is set to reduce the number of running threads and improve the performance of the server.
  • -UseMultithreadForDS: The final option is a simple one that tells the engine to use multithreaded for the dedicated server.
[Unit]
Description=Palworld Server
Wants=network-online.target
After=network-online.target

[Service]
User=steam
Group=steam
WorkingDirectory=/home/steam/
ExecStartPre=/usr/games/steamcmd +force_install_dir '/home/steam/Steam/steamapps/common/PalServer' +login anonymous +app_update 2394010 +quit
ExecStart=/home/steam/Steam/steamapps/common/PalServer/PalServer.sh -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS > /dev/null
Restart=always

[Install]
WantedBy=multi-user.target

26. Once you have finished writing the service, save and quit by pressing CTRL + X, followed by Y, and then ENTER.

27. With the service now written, we must enable it using the command below.

Enabling the service allows the system manager to start your Palworld server automatically when your operating system starts.

sudo systemctl enable palworld

28. If you want the server to start immediately, all you need to do is use the command below. This command tells the system manager to start our Palworld server immediately.

sudo systemctl start palworld

29. To stop the Palworld server from running, you must run the command below.

sudo systemctl stop palworld

30. You can also stop the server from running at startup by turning off the Palworld service we created.

sudo systemctl disable palworld

Connecting to your Palworld Dedicated Server

Now that your Palworld dedicated server is up and running, you will probably want to know how to connect to it.

Connecting to your server is a super straightforward process for the most part. All you will need to know is the IP address of your machine. If you are connecting locally, you can get this using the hostname command on your server, or if you are connecting externally, you will need to know your IP address.

1. With Palworld open, you will want to select the “Join Multiplayer Game” option.

Open Join Multiplayer Game menu

2. At the bottom of the screen, you will see a checkbox, textbox and a button.

If you are using a password to protect your Palworld server, you will want to check the “Enter password” checkbox (1.).

Using the textbox, you will want to type in your IP address followed by the port “8211” (2.).

After setting your IP address and port, you can click the “Connect” button (3.) to join your server.

Connect to Palworld Dedicated Server with or without password

Conclusion

At this stage, you will hopefully have a Palworld Dedicated server running on your device.

Running the dedicated server allows you to have a server that runs 24/7 without needing to own the game or run it on your gaming computer. It also allows Palworld to support significantly more players.

Please feel free to leave a comment below if you have run into any issues with getting your Palworld server to start up.

If you found this tutorial to be helpful, we recommend checking out our many other Ubuntu tutorials.

25 Comments

  1. Avatar for Dubzix
    Dubzix on

    Hi , not used to working with linux at all but wanted to run it on linux since lightweight. your tutorial did a great job setting it up.

    Now in the rise of palworld mods, 99% are made for windows and so want to transfer to windows.
    But my linux knowledge is so bad i have no clue how to copy all the files and save data (to transfer and as a backup)
    i cant access the steam folder because of permissions.

    is there a command to copy all the data that is in this steam folder so i can copy it to my main users desktop with read permissions so i can freely change , copy or edit these files?

    Thank you in advance

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Dubzix,

      You can copy the entire “PalServer” directory to your current users directory by using the following command.

      sudo cp /home/steam/Steam/steamapps/common/PalServer ~/Palserver

      You will then want to take ownership of these files with your user so you can actually access them.

      sudo chown -R $USER:$USER ~/Palserver

      Please let me know if that solves your problem of copying the files.

      Kind regards,
      Emmet

  2. Avatar for Magik
    Magik on

    After running the steam install the common directory does not exist. This issue is similar to what the other users have reported.

    ls -l ~/Steam/steamapps/common/
    total 4
    -rwxrwxr-x 1 steam steam 242 Jan 28 19:48 libraryfolders.vdf

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Magik,

      Can you verify that you were running these commands under the “steam” user we created during the guide?

      Setting the install directory like we are, should mean all your server files will be within the “/home/steam/Steam/steamapps/common/” directory.

      Kind regards,
      Emmet

  3. Avatar for Dragon
    Dragon on

    First off, thanks for the hard work and the amazing tutorial, it does not go unappreciated! Now for the fun part. My server has been crashing about every minute for the past 10 minutes. Logs attached. It appears to be a limit on ram but I have 16 Gbs allocated to the machine. Any input would be helpful!

    [SYSMTEMD RESPONE SNIPPED]
    
    Jan 28 22:25:13 nsg-lgsm-primary steamcmd[11163]: Success! App '2394010' already up to date.
    Jan 28 22:25:13 nsg-lgsm-primary systemd[1]: Started Palworld Server.
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: LowLevelFatalError [File:D:/works/repos/Pal_SVN/Pal-UE-App/Source/Pal/PalSaveGameManager.cpp] [Line: 359]
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Failed save to backup.
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Signal 11 caught.
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Malloc Size=262146 LargeMemoryPoolOffset=262162
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Shutdown handler: initalize.
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Increasing per-process limit of core file size to infinity.
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: CommonUnixCrashHandler: Signal=11
    Jan 28 22:25:51 nsg-lgsm-primary PalServer.sh[11233]: Engine crash handling finished; re-raising signal 11 for the default handler. Good bye.
    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Dragon,

      Sorry for taking a bit to respond.
      At a glance it looks like that something is going wrong when the server either goes to load your save that is causing a segmentation fault.

      Can you temporarily move your existing save to see if the issue persists on a new save.

      I have run the server on a Raspberry Pi 5 and that only has 8GB of RAM so you shouldn’t be running into memory allocation issues straight off the bat like the logs are showing.

      Kind regards,
      Emmet

  4. Avatar for Gala
    Gala on

    Anyone had luck running this on a Google Cloud Compute Ubuntu instance? Gave it a go but hit some errors running the server by the end:

    Shutdown handler: initalize.
    Increasing per-process limit of core file size to infinity.
    dlopen failed trying to load:
    steamclient.so
    with error:
    steamclient.so: cannot open shared object file: No such file or directory
    [S_API] SteamAPI_Init(): Loaded '/home/steam/.steam/sdk64/steamclient.so' OK.  (First tried local 'steamclient.so')
    CAppInfoCacheReadFromDiskThread took 3 milliseconds to initialize
    dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
    Setting breakpad minidump AppID = 2394010
    [S_API FAIL] Tried to access Steam interface SteamUser021 before SteamAPI_Init succeeded.
    [S_API FAIL] Tried to access Steam interface SteamFriends017 before SteamAPI_Init succeeded.
    [S_API FAIL] Tried to access Steam interface STEAMAPPS_INTERFACE_VERSION008 before SteamAPI_Init succeeded.
    [S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.
    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Gala,

      Despite those messages your server should actually be up and running after you see the message “[S_API FAIL] Tried to access Steam interface SteamNetworkingUtils004 before SteamAPI_Init succeeded.“.

      Are you having any issues connecting to your Palworld server after you start it?

      Kind regards,
      Emmet

    2. Avatar for Flameancer
      Flameancer on

      Hello, thought I chime in that I get a similar message and I cannot connect to my palworld server. If I do a `netstat -tulpn` command I don’t see palworld listening on port 8211.

    3. Avatar for Emmet
      Emmet on
      Editor

      Hi Flameancer,

      Sorry to hear that you are running into issues getting the server up and running. May I ask what operating system you are using and whether you ran into any errors while following the guide?

      Kind regards,
      Emmet

  5. Avatar for Zo
    Zo on

    Hello, excellent tutorial. But I was wondering how to go about updating the server whenever there is a new version of it, or is this done automatically whenever the server is started?

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Zo,

      If you are running the service, updating the service is as simple as restarting the service. It will check for an update before starting the server again.

      You can restart the service by using the following command.

      sudo systemctl restart palworld

      Alternatively, if you are running it just through the “palserver.sh” script, you will want to stop the server and then run the command below.

      /usr/games/steamcmd +force_install_dir '/home/steam/Steam/steamapps/common/PalServer' +login anonymous +app_update 2394010 +quit

      Let me know if that doesn’t answer your question.

      Kind regards,
      Emmet

  6. Avatar for Michael Zietlow
    Michael Zietlow on

    Everyone! Although its very anoying you can safely ignore
    “`
    “Loading Steam API…dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory”
    “`

    Your server is UP and running….

  7. Avatar for Ryle
    Ryle on

    Can you comment on why “force_install_dir” wasn’t used? I thought it was required. Otherwise a great Article!!

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Ryle,

      Glad you liked the tutorial.

      You only need to use the “force_install_dir” option if you want to specifically set where an application/game is installed.

      Since we are happy enough for SteamCMD to resort to its default of installing to your home directory we can avoid using the option entirely.

      However, thinking on it more, it might be prudent to set it to ensure there is a consistent location.

      Kind regards,
      Emmet

    2. Avatar for Emmet
      Emmet on
      Editor

      Hi Ryle,

      I have made some adjustments to the tutorial so that the Steamworks SDK and Palworld server should be installed to a more consistent location.

      Please let me know if this fixes the issue you are having.

      Kind regards,
      Emmet

    3. Avatar for Ryle
      Ryle on

      Solid changes and evolving article!
      Can you add any notes as to why in the service creation and startup you are using the arguments but don’t mention them in the initial step for starting the server?

      Also fun fact: you can use an FQDN as opposed to an IP address when connecting directly, so long as you have an appropriate DNS record of course.

      Great work!!

    4. Avatar for Emmet
      Emmet on
      Editor

      Hi Ryle,

      The main reason I don’t use them earlier on in the tutorial is just to keep it clean. I almost assume most people will end up running it as a service.

      I have updated the service section with a very rough explanation on what those options are meant to do.

      Kind regards,
      Emmet

  8. Avatar for L
    L on

    I’ve tried 5 or 6 different versions of this Linux install and it gets hung up on the same step every time and I don’t know how to fix this. I’m stuck on step 15. It gives me this error and I don’t know enough about linux to even attempt to fix it

    steam@LinuxTestHost:~$ cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
    cp: cannot stat '/home/steam/Steam/steamapps/common/Steamworks SDK Redist/linux64/steamclient.so': No such file or directory
    1. Avatar for Emmet
      Emmet on
      Editor

      Hi L,

      Sorry to see that you are having issues, the folder should exist after installing the SDK redistribution.

      Can you try listing out the folders within the “~/Steam/steamapps/common” directory by using the following command.

      ls -l ~/Steam/steamapps/common/

      Kind regards,
      Emmet

  9. Avatar for Brandon
    Brandon on

    I’m getting an error cp: cannot stat ‘/home/steam/steamapps/common/Steamworks SDK Redist/linux64/steamclient.so’: No such file or directory”

    when I am trying to copy over the files for steamclient.so

    I tried CDing into the steam folder and LS the folders but it is empty, this is the result after I run the steamcmd updater

    steam@plexserver:~$ steamcmd +login anonymous +app_update 1007 +quit
    tid(65955) burning pthread_key_t == 0 so we never use it
    Redirecting stderr to '/home/steam/.steam/logs/stderr.txt'
    Logging directory: '/home/steam/.steam/logs'
    [  0%] Checking for available updates...
    [----] Verifying installation...
    Steam Console Client (c) Valve Corporation - version 1705108307
    -- type 'quit' to exit --
    Loading Steam API...dlmopen steamservice.so failed: steamservice.so: cannot open shared object file: No such file or directory
    OK
    
    Connecting anonymously to Steam Public...OK
    Waiting for client config...OK
    Waiting for user info...OK
    Success! App '1007' already up to date.
    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Brandon,

      Sorry to see that you are having issues with this tutorial. I quickly tested the tutorial again from scratch and everything seems to be working fine on my end so not sure what is happening here.

      Can you list out the contents of the “/home/steam/Steam/steamapps/common” directory by using the following command.

      ls -l /home/steam/Steam/steamapps/common

      Additionally, what operating system are you using and its version?

      Kind regards,
      Emmet

  10. Avatar for Linku
    Linku on

    Hi!
    Do you think this could work on a raspberry pi using box64, just as we did for Valheim server?

    1. Avatar for Emmet
      Emmet on
      Editor

      Hi Linku,

      Unfortunately, at the moment I don’t think it is quite possible. There is an issue with unimplemented opcodes at the moment meaning Box64 can’t run the server at all at the moment.

      Outside of Box64, there is the issue that the Palworld devs recommend 16GB of RAM to run the server so you will quickly run into memory issues. With any luck they will manage to optimize the dedicated server and it will become a possibility in the future.

      Kind regards,
      Emmet

    2. Avatar for Michael Zietlow
      Michael Zietlow on

      Depending on how fast your filesystem is, it should work fine on a 8GB Pi4.
      4-6 Users…

Leave a Reply

Your email address will not be published. Required fields are marked *