Palworld Server Docker Documentation

website·Indexed 31 days ago

https://palworld-server-docker.loef.dev/

Guides and configuration for hosting a Palworld Dedicated server using Docker. Includes instructions for environment variable configuration, RCON management, automated backups, cron-based reboots and updates, Kubernetes setup via Helm charts, and Discord Webhook integration.

Tokens
13.5K
Snippets
64
Records
80
Agent score
53%

What's inside Palworld Server Docker

  1. Maintain Community Server registration during pause

    When COMMUNITY=true is set, the container starts a proxy server to maintain registration on the community server list by capturing communication with api.palworldgames.com. When the server is in a paused state, the auto-pause service replays this captured data to prevent the server from being dropped from the list.
  2. Protect Palworld RCON endpoints using palworld-rcon-buddy

    The palworld-rcon-buddy plugin (developed by valamidev) allows users of palworld-server-docker to protect the Palworld RCON endpoint with a Bearer token and access it via the HTTP protocol instead of raw RCON.
  3. Send multi-word broadcast messages via REST API

    The RCON Broadcast command only transmits the first word of a message. To send a full sentence or multi-word announcement, use the REST API announce command instead.
    # Incorrect: Only sends 'Hello'
    docker exec -it palworld-server rcon-cli Broadcast "Hello world"
    
    # Correct: Sends 'Hello world'
    docker exec -it palworld-server rest-cli announce "Hello world"
  4. Translate palworld-server-docker documentation

    To translate the documentation, you must first fork and clone the repository, then configure the locale in Docusaurus. The process involves generating translation files, organizing the directory structure, and submitting changes via a Pull Request.
    # Navigate to the docusaurus folder
    cd docusaurus
    
    # Generate translation files for your specific locale
    npm run write-translations -- --locale <locale code>
  5. Configure automatic server reboots via environment variables

    To enable automatic reboots, set AUTO_REBOOT_ENABLED to true. For the reboot mechanism to function, RCON_ENABLED must also be set to true.

    Critical Requirement: The Docker container must have a restart policy of always or unless-stopped. If these are not set, the server will shut down during a reboot and require a manual restart.

    Configuration Options

    • AUTO_REBOOT_CRON_EXPRESSION: Defines the reboot schedule using a cron expression. Defaults to 0 0 * * * (midnight daily based on the TZ environment variable). This image uses Supercronic for cron processing.
    • AUTO_REBOOT_WARN_MINUTES: The duration (in minutes) to wait after notifying players before the reboot occurs. Default is 5. Must be greater than 0.
    • AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE: If set to true, the server will reboot regardless of whether players are currently connected. Defaults to false.
    # Example Docker Compose environment snippet
    services:
      palworld-server:
        image: ...
        restart: always
        environment:
          - RCON_ENABLED=true
          - AUTO_REBOOT_ENABLED=true
          - AUTO_REBOOT_CRON_EXPRESSION=0 0 * * *
          - AUTO_REBOOT_WARN_MINUTES=5
          - AUTO_REBOOT_EVEN_IF_PLAYERS_ONLINE=false
  6. Deploy Palworld server using Helm

    For users preferring Helm for package management, an official Helm chart is available in a separate repository: palworld-server-chart.
    # Helm chart repository
    https://github.com/Twinki14/palworld-server-chart
  7. Set up i18n for documentation translation

    Follow these steps to prepare the environment for translation:

    1. Ensure nodejs, npm, and git are installed.
    2. Fork and clone the thijsvanloef/palworld-server-docker repository.
    3. Navigate to the docusaurus folder.
    4. Add your locale code to the i18n configuration in docusaurus.config.js.
    5. Run the translation write command: npm run write-translations -- --locale <locale code>.
    6. In the newly created i18n folder:
      • Delete the docusaurus-plugin-content-blog folder.
      • Inside docusaurus-plugin-content-docs, create a folder named current.
      • Copy all contents from the docs folder into the current folder.
  8. Convert Palworld server settings to Docker environment variables

    You can modify Palworld game settings (typically found in PalWorldSettings.ini) by using Docker environment variables. To convert a server setting name into its corresponding environment variable, follow these naming conventions:

    1. Convert all letters to uppercase.
    2. Separate words with underscores (_).
    3. Remove the leading single letter if the setting starts with one (e.g., remove the 'b' from boolean settings).
    Difficulty       -> DIFFICULTY
    PalSpawnNumRate  -> PAL_SPAWN_NUM_RATE
    bIsPvP           -> IS_PVP
  9. Pin Palworld server to a specific game version

    To lock the Palworld server to a specific version, set the TARGET_MANIFEST_ID environment variable to the corresponding Manifest ID.

    Important Requirements & Caveats:

    • Authentication: Pinning a version (especially downgrading) requires setting STEAM_USERNAME and STEAM_PASSWORD to a Steam account that owns the game.
    • Steam Guard: Accounts with Steam Guard enabled are currently not supported.
    • Risk: Downgrading to a lower game version may impact existing save files; proceed with caution.
  10. Update Palworld dedicated server using Docker Compose

    To update the Palworld dedicated server container to the latest version using Docker Compose, ensure your compose.yaml file specifies either the latest tag or a specific release version (e.g., v0.32.0). You must remove existing images before restarting to ensure the latest version is pulled.
    # 1. Stop the container and remove all associated images
    docker compose down --rmi all
    
    # 2. Start the container again (pulls the latest image defined in compose.yaml)
    docker compose up -d
  11. Test documentation translations locally

    To verify your translations before submitting them, navigate to the docusaurus folder and start the development server specifying your locale code.
    # Run from the docusaurus folder
    npm start -- --locale <locale code>