# How to set up a Palworld dedicated server

## Introduction <a href="#introduction" id="introduction"></a>

[Palworld](https://www.pocketpair.jp/palworld) is an open-world adventure survival game. It is set in an unusual environment — a world populated with various creatures called “Pals”. Each Pal serves a distinct purpose and can be used for multiple different tasks, from peaceful crafting to intense battles.

Setting up a multiplayer Palworld server can be done quickly, as the game provides all of the necessary tools. However, allowing connections from people outside of your network requires [port forwarding](https://nordvpn.com/blog/port-forwarding/). Opening ports can leave your home network vulnerable or may not be possible at all due to the increased popularity of [carrier-grade NAT](https://nordvpn.com/cybersecurity/glossary/cgnat/) (CGNAT) usage.

With the free [Meshnet ](https://nordvpn.com/meshnet/)feature, you can create a virtual device network with devices located all around the globe. Once the devices are linked, they behave as if they were physically on the same [local area network](https://nordvpn.com/blog/what-is-lan/) (LAN) and can directly connect to each other. This setup allows you to run your Palworld server without opening ports or paying for third-party hosting.

This page showcases how you can host a dedicated Palworld server on Windows and Linux and play on it with your friends with the help of Meshnet.

## Configure your Palworld server <a href="#configure-your-palworld-server" id="configure-your-palworld-server"></a>

Depending on your setup, you can choose from three distinct methods of running the Palworld server.

### Method 1: Using Palworld dedicated server <a href="#method-1-using-palworld-dedicated-server" id="method-1-using-palworld-dedicated-server"></a>

For a quick server deployment, you can use the Palworld dedicated server tool which is installed along with the game. To start the server:

1. Open **Steam** and, at the top, select the **Library** tab.
2. On the left, expand the dropdown menu and make sure that the **Tools** option is selected.

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FHk0grxkNqYTbKi694IYF%2Fpalworld_steam_tools.png?alt=media&#x26;token=e7486c0f-a779-4e6e-951f-7cc70b0cbb30" alt="&#x22;Tools&#x22; option in the dropdown menu selected and highlighted." width="323"><figcaption></figcaption></figure></div>

   &#x20;
3. Choose **Palworld** **dedicated server** from your library and click **Launch**.

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FZ9yNtZiVEHD6PS8Xt7Ud%2Fpalworld_server_launch.png?alt=media&#x26;token=b8cdc121-3385-413a-a53d-fe0c36fe54d1" alt="&#x22;Palworld dedicated server&#x22; selected and the &#x22;Launch&#x22; button highlighted." width="491"><figcaption></figcaption></figure></div>

   &#x20;
4. In the dialog that opens, select the **Play Palworld dedicated server** option and click **Play**.

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F55fA3OGKnL864pZxjAVj%2Fpalworld_steam_play.png?alt=media&#x26;token=8b2215b1-f374-4f20-b7ef-1dc91aba2bec" alt="&#x22;Palworld dedicated server&#x22; dialog, with the &#x22;Play Palworld dedicated server&#x22; option selected and the &#x22;Play&#x22; button highlighted." width="372"><figcaption></figcaption></figure></div>

Once the server is initialized, a command-line window should appear on your screen. When you see it, you can proceed to connect to your server. For details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section.

{% hint style="info" %}
**Note**

To see the **Palworld dedicated server** tool in your Steam library, launch the Palworld game at least once.
{% endhint %}

### Method 2: Using SteamCMD <a href="#method-2-using-steamcmd" id="method-2-using-steamcmd"></a>

This method uses [SteamCMD](https://developer.valvesoftware.com/wiki/SteamCMD), a command-line version of the Steam client. It is used to download and manage servers for multiplayer Steam games. When using this approach, ensure that your server device has sufficient storage space, as SteamCMD will need to download all of the game’s files on this machine.

{% tabs %}
{% tab title="Windows" %}

#### Installing SteamCMD <a href="#installing-steamcmd" id="installing-steamcmd"></a>

Begin by downloading and installing the SteamCMD utility on the device that will be hosting your server.

1. Create a new folder on your PC where you want to install SteamCMD. For example:\
   &#x20;\
   `C:\steamcmd`\
   &#x20;
2. Download the SteamCMD for Windows from the [Valve Developer Community website](https://developer.valvesoftware.com/wiki/SteamCMD#Windows).

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2Fi3f8mtdfhfITi8hzMocf%2Fpalworld_win_steamcmd_download.png?alt=media&#x26;token=5dd9ef72-b97d-42cf-8d1b-11df5302f410" alt="Arrow pointing to the external link button."><figcaption></figcaption></figure></div>

   &#x20;
3. Extract the contents of the downloaded ZIP file to the folder you created.
4. Double-click the **steamcmd.exe** file to launch the app.
5. If the **Windows security alert** box appears, select both the *private* and *public* network options and then click the **Allow access** button to allow incoming connections through the firewall.

The SteamCMD tool will automatically install and, upon completion, will be ready to accept commands.

<figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2Fx9ACHB3LSJC2Sp7k1q1P%2Fpalworld_win_steamcmd_install.png?alt=media&#x26;token=52b2a7f6-19c0-414a-ae0a-0c4e0e1a155f" alt="Terminal output showing that SteamCMD has finished initializing."><figcaption></figcaption></figure>

Once you see this output, you can close the SteamCMD command line window.

#### Launching the Palworld server <a href="#launching-the-palworld-server" id="launching-the-palworld-server"></a>

With SteamCMD set up, you can proceed to download and install Palworld server files.

1. Open **Command Prompt**.
2. Using the `cd` command, navigate to the directory where you installed SteamCMD.\
   &#x20;\
   **Example**

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd C:\steamcmd
   </code></pre>

   &#x20;&#x20;
3. Download the required Palworld server files by running this command:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">steamcmd +login anonymous +app_update 2394010 validate +quit
   </code></pre>

   &#x20;\
   Once the server files are fully downloaded and installed, the "Success!" message appears.
4. Navigate to the Palworld server’s directory using this command:\
   &#x20;

   ```bash
   cd .\steamapps\common\PalServer
   ```

   &#x20;
5. Start the server by running the following command:\
   &#x20;

   ```batch
   PalServer.exe
   ```

You should now see a command-line dialog displaying information about your server, indicating that it is up and running. For further details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section below.

{% hint style="success" %}
**Tip**

If your SteamCMD folder is not located on the `C` drive, you need to modify the directory change command. Add `/<letter>` between `cd` and the path, where `<letter>` is the corresponding letter of the drive.

**Example**

```batch
cd /d D:\Apps\steamcmd
```

{% endhint %}

{% hint style="info" %}
**Note**

If you have specified a different download directory for SteamCMD, you will need to adjust the command in Step 4 according to your chosen location.
{% endhint %}
{% endtab %}

{% tab title="Linux" %}
{% hint style="info" %}
**Note**

The Ubuntu 22.04.1 LTS distribution is used as an example in this section. You can find instructions for other distributions on the [Valve Developer Community website](https://developer.valvesoftware.com/wiki/SteamCMD#Linux).
{% endhint %}

#### Installing SteamCMD <a href="#installing-steamcmd.1" id="installing-steamcmd.1"></a>

Begin by downloading and installing the SteamCMD utility on the device that will be hosting your server.

1. Run the following command to import the multiverse app repository to your system’s repository list and add 32-bit architecture support:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo add-apt-repository multiverse &#x26;&#x26; sudo dpkg --add-architecture i386
   </code></pre>

   &#x20;
2. Update your system’s repositories and install SteamCMD with this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">sudo apt update &#x26;&#x26; sudo apt install steamcmd -y
   </code></pre>

Once the process is finished, SteamCMD should be available on your system.

#### Launching the Palworld server <a href="#launching-the-palworld-server.1" id="launching-the-palworld-server.1"></a>

With SteamCMD installed, you can proceed to download and install Palworld server files.

1. Open **Terminal**.
2. Run the following command to update SteamCMD and download the required Palworld server files:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">steamcmd +login anonymous +app_update 2394010 validate +quit
   </code></pre>

   &#x20;\
   Once the server files are fully downloaded and installed, the "Success!" message appears.
3. Navigate to the Palworld server’s directory using this command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">cd ~/Steam/steamapps/common/PalServer
   </code></pre>

   &#x20;
4. Start the server by initiating the server script file with the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">./PalServer.sh
   </code></pre>

You should now see information about your server displayed in the terminal output, indicating that it is up and running. For further details, see the [Connect to the Palworld server](#inlineextension-connect-to-the-palworld-server) section below.

{% hint style="success" %}
**Tip**

When starting the server, you may receive the following error:

{% code overflow="wrap" %}

```
.steam/sdk64/steamclient.so: cannot open shared object file: No such file or directory
```

{% endcode %}

To remedy this problem, run the following three commands:

{% code overflow="wrap" %}

```bash
mkdir -p ~/.steam/sdk64/
steamcmd +login anonymous +app_update 1007 +quit
cp ~/Steam/steamapps/common/Steamworks\ SDK\ Redist/linux64/steamclient.so ~/.steam/sdk64/
```

{% endcode %}
{% endhint %}

{% hint style="info" %}
**Note**

If you have specified a different download directory for SteamCMD, you will need to adjust the command in Step 3 according to your chosen location.
{% endhint %}
{% endtab %}
{% endtabs %}

### Method 3: Using Docker <a href="#method-3-using-docker" id="method-3-using-docker"></a>

Lastly, you can choose to deploy your server as a lightweight Docker container. This option allows you to run the server while saving system resources and can be easily integrated into a pre-existing Docker setup.

#### Installing Docker <a href="#installing-docker" id="installing-docker"></a>

To use this method, you must have [Docker](https://docs.docker.com/get-started/overview/) and [Docker Compose](https://docs.docker.com/compose/) installed on your device. Instructions on how to download and install these tools can be found on the Docker website:

* [Docker Desktop instructions for Windows](https://docs.docker.com/desktop/install/windows-install/)
* [Docker Desktop Instructions for Linux](https://docs.docker.com/desktop/install/linux-install/)
  * [Docker Engine instructions for Linux (CLI only)](https://docs.docker.com/engine/install/)
  * [Docker Compose instructions for Linux (CLI only)](https://docs.docker.com/compose/install/linux/)

{% hint style="info" %}
**Note**

Docker Compose comes pre-installed with Docker Desktop.
{% endhint %}

#### Preparing the Docker Compose file <a href="#preparing-the-docker-compose-file" id="preparing-the-docker-compose-file"></a>

To begin the setup, you need to declare the instructions for the Palworld server Docker image in a dedicated Docker compose file.

{% tabs %}
{% tab title="Windows" %}

1. Open **PowerShell**.
2. Create a new `palworld_server` folder and navigate to it using the following command:\
   &#x20;

   <pre class="language-bash" data-overflow="wrap"><code class="lang-bash">mkdir palworld_server; cd palworld_server
   </code></pre>

   &#x20;
3. Create a `docker-compose.yml` file and open it using Notepad by running:\
   &#x20;

   <pre class="language-batch" data-overflow="wrap"><code class="lang-batch">notepad docker-compose.yml
   </code></pre>

   &#x20;

   When prompted to create the file, click **Yes**.

   <div align="left"><figure><picture><source srcset="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FePAtl7q9hkOCO08AsXf8%2Fpalworld_win_compose_create_dark.png?alt=media&#x26;token=f6871067-a40a-44fd-83bf-1f041cefcace" media="(prefers-color-scheme: dark)"><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FvyHsGnjejugW61HDYfbf%2Fpalworld_win_compose_create.png?alt=media&#x26;token=04f9ea90-d5c7-4771-9e59-ae85eb3e3999" alt="Notepad dialog asking to create a file, with the &#x22;Yes&#x22; button highlighted." width="375"></picture><figcaption></figcaption></figure></div>

   &#x20;
4. In **Notepad**, paste the following instructions for the Palworld server Docker container:\
   &#x20;

   <pre class="language-yaml" data-overflow="wrap"><code class="lang-yaml">services:
      palworld:
         image: thijsvanloef/palworld-server-docker:latest
         restart: unless-stopped
         container_name: palworld-server
         ports:
           - 8211:8211/udp
           - 27015:27015/udp
         environment:
            - PUID=1000
            - PGID=1000
            - PORT=8211
            - PLAYERS=16
            - MULTITHREADING=true
            - RCON_ENABLED=true
            - RCON_PORT=25575
            - ADMIN_PASSWORD="&#x3C;password>"
            - COMMUNITY=false
         volumes:
            - ./palworld:/palworld/
   </code></pre>

   &#x20;
5. Replace the `<password>` placeholder with a secure administrator password for your server.\
   &#x20;

   **Example**

   <div align="left"><figure><picture><source srcset="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FdbbelZYm5CuoDJUukU65%2Fpalworld_win_compose_example_dark.png?alt=media&#x26;token=6026b696-d845-4b21-a7f2-e4f21672c482" media="(prefers-color-scheme: dark)"><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FQjCP1LBUhdPtSaH2aLKu%2Fpalworld_win_compose_example.png?alt=media&#x26;token=eb030189-5a6f-467a-b456-874f6a37796f" alt="Extract from the Notepad window with the placeholder replaced with a password." width="445"></picture><figcaption></figcaption></figure></div>

   &#x20;
6. Press **Ctrl** + **S** to save changes.
7. Exit **Notepad**.
   {% endtab %}

{% tab title="Linux" %}

1. Open **Terminal**.
2. Create a new `palworld_server` folder and navigate to it using the following command:\
   &#x20;

   ```bash
   mkdir palworld_server && cd palworld_server
   ```

   &#x20;
3. Create a `docker-compose.yml` file and open it using the Nano text editor by running:\
   &#x20;

   ```bash
   nano docker-compose.yml
   ```

   &#x20;
4. In the compose file, paste the following instructions for the Palworld server Docker container:\
   &#x20;

   ```yaml
   services:
      palworld:
         image: thijsvanloef/palworld-server-docker:latest
         restart: unless-stopped
         container_name: palworld-server
         ports:
           - 8211:8211/udp
           - 27015:27015/udp
         environment:
            - PUID=1000
            - PGID=1000
            - PORT=8211
            - PLAYERS=16
            - MULTITHREADING=true
            - RCON_ENABLED=true
            - RCON_PORT=25575
            - ADMIN_PASSWORD="<password>"
            - COMMUNITY=false
         volumes:
            - ./palworld:/palworld/
   ```

   &#x20;
5. Replace the `<password>` placeholder with a secure administrator password for your server.\
   &#x20;

   **Example**

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F9VOQA4HZAYlWXRQHxnNK%2Fpalworld_linux_compose_example.png?alt=media&#x26;token=83d75e98-8921-4d77-a881-41ee6298a027" alt="Extract from the terminal window with the placeholder replaced with a password." width="563"><figcaption></figcaption></figure></div>

   &#x20;
6. Press **Ctrl** + **X**, **Y**, and **Enter** to save changes and exit the text editor.
   {% endtab %}
   {% endtabs %}

#### Deploying the Palworld server <a href="#deploying-the-palworld-server" id="deploying-the-palworld-server"></a>

Now, you can use the instructions specified in the compose file to start your Palworld server. To deploy the container, while in the `palworld_server` directory, run the following command:

{% code overflow="wrap" %}

```bash
docker compose up -d
```

{% endcode %}

Docker will [pull the Palworld server image](https://docs.docker.com/engine/reference/commandline/pull/) from [Docker Hub](https://hub.docker.com/r/thijsvanloef/palworld-server-docker) and deploy the container. Once the container is up and running, you can connect to the Palworld server, as described in the next section.

## Connect to the Palworld server <a href="#inlineextension-connect-to-the-palworld-server" id="inlineextension-connect-to-the-palworld-server"></a>

{% hint style="info" %}
**Note**

If you're hosting the Palworld server using Docker on a Linux device, you must grant the [local network permission](https://meshnet.nordvpn.com/features/explaining-permissions/local-network-permissions) for the devices connecting to it. For more information, see [Common issues on Linux](https://meshnet.nordvpn.com/troubleshooting/linux#cannot-access-docker-containers-over-meshnet).
{% endhint %}

To connect to your newly created Palworld server, take the following steps:

1. Copy the Meshnet IP address of the device hosting the Palworld server from the NordVPN app.

   <div align="left"><figure><picture><source srcset="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2FpHim3WxyQOLwffvMW5dG%2Fpalworld_copy_ip_dark.png?alt=media&#x26;token=beccaabd-b97d-45d2-9e18-27c7d7cf9f4a" media="(prefers-color-scheme: dark)"><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F7BekUZCZ8ht8JzOcEsKd%2Fpalworld_copy_ip.png?alt=media&#x26;token=1849d004-d154-4cb8-ad68-bee9426180fb" alt="&#x22;Copied!&#x22; message displayed next to the Meshnet IP address."></picture><figcaption></figcaption></figure></div>

   &#x20;
2. Launch **Palworld**.
3. Select **Join multiplayer game**.
4. In the address field at the bottom of the screen, paste the copied Meshnet IP address, followed by `:8211`, and click **Connect**.\
   &#x20;\
   **Example**

   <div align="left"><figure><img src="https://3559400189-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F0cTezbT2vN0lurEio8Z5%2Fuploads%2F0FlbfquDZwTqGu89vHHw%2Fpalworld_connect.png?alt=media&#x26;token=8765bde9-d55b-4603-87ce-48d407510578" alt="Meshnet IP address and port entered and arrow pointing to the &#x22;Connect&#x22; button"><figcaption></figcaption></figure></div>

Your server should now load, and you can enjoy playing Palworld with your friends over a secure Meshnet connection.
