Sign inSign up

ludix0/palworld

By ludix0

•Updated 7 days ago

Dockerized dedicated server for Palworld, auto-updated via SteamCMD.

Image
Networking
Internet of things
0

1.9K

ludix0/palworld repository overview

⁠Palworld — Dedicated Server (Docker)

🇬🇧 English⁠ | 🇫🇷 Français⁠


⁠English

Docker container to host a Palworld dedicated server (SteamCMD App ID 2394010, Linux dedicated server build). The server binary and dependencies are downloaded automatically via SteamCMD, running as an unprivileged jeux user.

  • Docker Hub image: ludix0/palworld⁠
  • Ports used: 8211/udp (game), 27015/udp (Steam server query, optional), 8212/udp (REST API, optional)
⁠Requirements
  • Docker + Docker Compose
  • ~10 GB free disk space for the server files (grows over time with world saves)
  • Port 8211/udp forwarded on your router if you want the server reachable from the internet (also 8212/udp if you need the REST API remotely)
mkdir -p ~/palworld && cd ~/palworld

Create a docker-compose.yml:

services:
  palworld:
    image: ludix0/palworld:latest
    container_name: palworld
    restart: unless-stopped
    volumes:
      - ./filesServer:/server
      - ./steamcmd:/home/jeux/.steam/steam/steamcmd
      - ./steamcmd-config:/home/jeux/.steam/steam/config
    environment:
      - TZ=Europe/Paris
      - PUID=1000
      - PGID=1000
      - UPDATE_ON_START=true
      - STEAM_USER=
      - STEAM_PASSWORD=
      - Arguments=-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -NumberOfWorkerThreadsServer=7
      - Difficulty=None
      - DayTimeSpeedRate=1.000000
      - NightTimeSpeedRate=1.000000
      - ExpRate=1.000000
      - PalCaptureRate=1.000000
      - PalSpawnNumRate=1.000000
      - PalDamageRateAttack=1.000000
      - PalDamageRateDefense=1.000000
      - PlayerDamageRateAttack=1.000000
      - PlayerDamageRateDefense=1.000000
      - PlayerStomachDecreaceRate=1.000000
      - PlayerStaminaDecreaceRate=1.000000
      - PlayerAutoHPRegeneRate=1.000000
      - PlayerAutoHpRegeneRateInSleep=1.000000
      - PalStomachDecreaceRate=1.000000
      - PalStaminaDecreaceRate=1.000000
      - PalAutoHPRegeneRate=1.000000
      - PalAutoHpRegeneRateInSleep=1.000000
      - BuildObjectDamageRate=1.000000
      - BuildObjectDeteriorationDamageRate=1.000000
      - CollectionDropRate=1.000000
      - CollectionObjectHpRate=1.000000
      - CollectionObjectRespawnSpeedRate=1.000000
      - EnemyDropItemRate=1.000000
      - DeathPenalty=All
      - bEnablePlayerToPlayerDamage=False
      - bEnableFriendlyFire=False
      - bEnableInvaderEnemy=True
      - bActiveUNKO=False
      - bEnableAimAssistPad=True
      - bEnableAimAssistKeyboard=False
      - DropItemMaxNum=3000
      - DropItemMaxNum_UNKO=100
      - BaseCampMaxNum=128
      - BaseCampWorkerMaxNum=15
      - DropItemAliveMaxHours=1.000000
      - bAutoResetGuildNoOnlinePlayers=False
      - AutoResetGuildTimeNoOnlinePlayers=72.000000
      - GuildPlayerMaxNum=20
      - PalEggDefaultHatchingTime=72.000000
      - WorkSpeedRate=1.000000
      - bIsMultiplay=False
      - bIsPvP=False
      - bCanPickupOtherGuildDeathPenaltyDrop=False
      - bEnableNonLoginPenalty=True
      - bEnableFastTravel=True
      - bIsStartLocationSelectByMap=True
      - bExistPlayerAfterLogout=False
      - bEnableDefenseOtherGuildPlayer=False
      - CoopPlayerMaxNum=4
      - ServerPlayerMaxNum=32
      - ServerName=My Palworld Server
      - ServerDescription=
      - AdminPassword=
      - ServerPassword=
      - PublicIP=
      - RCONEnabled=False
      - Region=
      - bUseAuth=False
      - BanListURL=
      - RESTAPIEnabled=False
      - bShowPlayerList=False
      - CrossplayPlatforms=(Steam)
      - bIsUseBackupSaveData=True
    ports:
      - "8211:8211/udp"
      - "27015:27015/udp"
      - "8212:8212/udp"
docker compose up -d
docker compose logs -f
⁠Method 2 — Build from source (GitHub)
git clone https://github.com/ludix0/palworld.git
cd palworld
ln -sf /path/to/your/secrets.env .env   # or create a .env with the variables below
docker build -t ludix0/palworld:latest .
docker compose up -d
⁠Environment variables
VariableRequiredDescription
TZ, PUID, PGIDNoTimezone and host user/group the container runs as
UPDATE_ON_STARTNotrue/false — update the server via SteamCMD on every container start
STEAM_USER / STEAM_PASSWORDNoLeave empty for anonymous SteamCMD login (works for Palworld)
ArgumentsNoPalServer.sh launch flags — the default enables multi-threaded performance mode
DifficultyNoNone (default, use the custom rates below), Casual, Normal, or Hard
DayTimeSpeedRate / NightTimeSpeedRateNoDay/night cycle speed multipliers
ExpRateNoExperience gain multiplier
PalCaptureRate / PalSpawnNumRateNoPal capture success rate and spawn density multipliers
PalDamageRateAttack / PalDamageRateDefenseNoDamage dealt/received by Pals
PlayerDamageRateAttack / PlayerDamageRateDefenseNoDamage dealt/received by players
PlayerStomachDecreaceRate / PlayerStaminaDecreaceRateNoPlayer hunger/stamina depletion speed
PlayerAutoHPRegeneRate / PlayerAutoHpRegeneRateInSleepNoPlayer HP regen speed, awake / asleep
PalStomachDecreaceRate / PalStaminaDecreaceRateNoPal hunger/stamina depletion speed
PalAutoHPRegeneRate / PalAutoHpRegeneRateInSleepNoPal HP regen speed, awake / asleep
BuildObjectDamageRate / BuildObjectDeteriorationDamageRateNoDamage taken and decay speed of built structures
CollectionDropRate / CollectionObjectHpRate / CollectionObjectRespawnSpeedRateNoResource node drop amount, HP, and respawn speed
EnemyDropItemRateNoItem drop rate from defeated enemies
DeathPenaltyNoWhat players drop on death: None, Item, ItemAndEquipment, or All
bEnablePlayerToPlayerDamage / bEnableFriendlyFire / bEnableInvaderEnemyNoPvP damage, friendly fire, and hostile "invader" Pal raid events
bActiveUNKONoEnable the in-game "UNKO" (droppings) item
bEnableAimAssistPad / bEnableAimAssistKeyboardNoAim assist for gamepad / keyboard+mouse
DropItemMaxNum / DropItemMaxNum_UNKONoMax items lying on the ground (normal / UNKO items)
BaseCampMaxNum / BaseCampWorkerMaxNumNoMax number of bases, and max working Pals per base
DropItemAliveMaxHoursNoHours before dropped items despawn
bAutoResetGuildNoOnlinePlayers / AutoResetGuildTimeNoOnlinePlayersNoAuto-disband guilds with no online members after N hours
GuildPlayerMaxNumNoMax players per guild
PalEggDefaultHatchingTimeNoEgg hatching time, in hours
WorkSpeedRateNoPal work speed multiplier
bIsMultiplayNoInternal multiplayer flag — leave at default unless you have a specific reason to change it
bIsPvPNoEnable server-wide PvP
bCanPickupOtherGuildDeathPenaltyDropNoAllow picking up another guild's death-penalty item drops
bEnableNonLoginPenaltyNoApply a penalty to players who stay logged out too long
bEnableFastTravelNoEnable the fast-travel feature
bIsStartLocationSelectByMapNoLet new players pick their spawn point on the map
bExistPlayerAfterLogoutNoKeep the player's character in the world after logout instead of despawning it
bEnableDefenseOtherGuildPlayerNoAllow base defenses to damage players from other guilds
CoopPlayerMaxNumNoMax players per co-op party
ServerPlayerMaxNumNoMax total players allowed on the server
ServerName / ServerDescriptionNoName and description shown in the server browser
AdminPasswordNo (recommended)Admin password for in-game admin commands — set one for a production server
ServerPasswordNoJoin password — leave empty for a public server
PublicIPNoPublic IP announced by the server — usually leave empty (auto-detected)
RCONEnabled / RegionNoEnable RCON (fixed internal port 25575, not published by this image) and set a region tag
bUseAuthNoRequire Steam authentication for players joining
BanListURLNoURL to an external community ban list
RESTAPIEnabledNoEnable the REST API (port 8212)
bShowPlayerListNoExpose the online player list via the REST API
CrossplayPlatformsNoAllowed crossplay platforms, e.g. (Steam)
bIsUseBackupSaveDataNoEnable automatic save-data backups
⁠Volumes
VolumeContent
/serverFull server install: binaries (via SteamCMD) plus world saves and config under Pal/Saved
/home/jeux/.steam/steam/steamcmdShared SteamCMD installation, avoids re-downloading on rebuild
/home/jeux/.steam/steam/configSteamCMD login/config cache
⁠Ports
PortProtocolUsage
8211UDPGame traffic — must be reachable by players
27015UDPSteam server list query — optional, exposed by the image but not required for a private server
8212UDPREST API — only needed if RESTAPIEnabled=True

⁠Français

Conteneur Docker pour héberger un serveur dédié Palworld (App ID SteamCMD 2394010, build serveur dédié Linux). Le binaire du serveur et ses dépendances sont téléchargés automatiquement via SteamCMD, en exécutant le serveur avec un utilisateur jeux non privilégié.

  • Image Docker Hub : ludix0/palworld⁠
  • Ports utilisés : 8211/udp (jeu), 27015/udp (requête liste de serveurs Steam, optionnel), 8212/udp (API REST, optionnel)
⁠Prérequis
  • Docker + Docker Compose
  • ~10 Go d'espace disque libre pour les fichiers du serveur (augmente avec le temps grâce aux sauvegardes du monde)
  • Port 8211/udp redirigé sur votre routeur si le serveur doit être accessible depuis internet (aussi 8212/udp si vous utilisez l'API REST à distance)
⁠Méthode 1 — Installation rapide depuis Docker Hub (recommandé)
mkdir -p ~/palworld && cd ~/palworld

Créer un docker-compose.yml :

services:
  palworld:
    image: ludix0/palworld:latest
    container_name: palworld
    restart: unless-stopped
    volumes:
      - ./filesServer:/server
      - ./steamcmd:/home/jeux/.steam/steam/steamcmd
      - ./steamcmd-config:/home/jeux/.steam/steam/config
    environment:
      - TZ=Europe/Paris
      - PUID=1000
      - PGID=1000
      - UPDATE_ON_START=true
      - STEAM_USER=
      - STEAM_PASSWORD=
      - Arguments=-useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -NumberOfWorkerThreadsServer=7
      - Difficulty=None
      - DayTimeSpeedRate=1.000000
      - NightTimeSpeedRate=1.000000
      - ExpRate=1.000000
      - PalCaptureRate=1.000000
      - PalSpawnNumRate=1.000000
      - PalDamageRateAttack=1.000000
      - PalDamageRateDefense=1.000000
      - PlayerDamageRateAttack=1.000000
      - PlayerDamageRateDefense=1.000000
      - PlayerStomachDecreaceRate=1.000000
      - PlayerStaminaDecreaceRate=1.000000
      - PlayerAutoHPRegeneRate=1.000000
      - PlayerAutoHpRegeneRateInSleep=1.000000
      - PalStomachDecreaceRate=1.000000
      - PalStaminaDecreaceRate=1.000000
      - PalAutoHPRegeneRate=1.000000
      - PalAutoHpRegeneRateInSleep=1.000000
      - BuildObjectDamageRate=1.000000
      - BuildObjectDeteriorationDamageRate=1.000000
      - CollectionDropRate=1.000000
      - CollectionObjectHpRate=1.000000
      - CollectionObjectRespawnSpeedRate=1.000000
      - EnemyDropItemRate=1.000000
      - DeathPenalty=All
      - bEnablePlayerToPlayerDamage=False
      - bEnableFriendlyFire=False
      - bEnableInvaderEnemy=True
      - bActiveUNKO=False
      - bEnableAimAssistPad=True
      - bEnableAimAssistKeyboard=False
      - DropItemMaxNum=3000
      - DropItemMaxNum_UNKO=100
      - BaseCampMaxNum=128
      - BaseCampWorkerMaxNum=15
      - DropItemAliveMaxHours=1.000000
      - bAutoResetGuildNoOnlinePlayers=False
      - AutoResetGuildTimeNoOnlinePlayers=72.000000
      - GuildPlayerMaxNum=20
      - PalEggDefaultHatchingTime=72.000000
      - WorkSpeedRate=1.000000
      - bIsMultiplay=False
      - bIsPvP=False
      - bCanPickupOtherGuildDeathPenaltyDrop=False
      - bEnableNonLoginPenalty=True
      - bEnableFastTravel=True
      - bIsStartLocationSelectByMap=True
      - bExistPlayerAfterLogout=False
      - bEnableDefenseOtherGuildPlayer=False
      - CoopPlayerMaxNum=4
      - ServerPlayerMaxNum=32
      - ServerName=Mon Serveur Palworld
      - ServerDescription=
      - AdminPassword=
      - ServerPassword=
      - PublicIP=
      - RCONEnabled=False
      - Region=
      - bUseAuth=False
      - BanListURL=
      - RESTAPIEnabled=False
      - bShowPlayerList=False
      - CrossplayPlatforms=(Steam)
      - bIsUseBackupSaveData=True
    ports:
      - "8211:8211/udp"
      - "27015:27015/udp"
      - "8212:8212/udp"
docker compose up -d
docker compose logs -f
⁠Méthode 2 — Build depuis les sources (GitHub)
git clone https://github.com/ludix0/palworld.git
cd palworld
ln -sf /chemin/vers/votre/secrets.env .env   # ou créer un .env avec les variables ci-dessous
docker build -t ludix0/palworld:latest .
docker compose up -d
⁠Variables d'environnement
VariableObligatoireDescription
TZ, PUID, PGIDNonFuseau horaire et utilisateur/groupe hôte pour le conteneur
UPDATE_ON_STARTNontrue/false — met à jour le serveur via SteamCMD à chaque démarrage du conteneur
STEAM_USER / STEAM_PASSWORDNonLaisser vide pour une connexion SteamCMD anonyme (fonctionne pour Palworld)
ArgumentsNonOptions de lancement de PalServer.sh — la valeur par défaut active le mode multi-thread performant
DifficultyNonNone (par défaut, utilise les taux personnalisés ci-dessous), Casual, Normal, ou Hard
DayTimeSpeedRate / NightTimeSpeedRateNonMultiplicateurs de vitesse du cycle jour/nuit
ExpRateNonMultiplicateur de gain d'expérience
PalCaptureRate / PalSpawnNumRateNonTaux de réussite de capture des Pals et densité d'apparition
PalDamageRateAttack / PalDamageRateDefenseNonDégâts infligés/reçus par les Pals
PlayerDamageRateAttack / PlayerDamageRateDefenseNonDégâts infligés/reçus par les joueurs
PlayerStomachDecreaceRate / PlayerStaminaDecreaceRateNonVitesse de baisse de la faim/endurance du joueur
PlayerAutoHPRegeneRate / PlayerAutoHpRegeneRateInSleepNonVitesse de régénération des PV du joueur, éveillé / endormi
PalStomachDecreaceRate / PalStaminaDecreaceRateNonVitesse de baisse de la faim/endurance des Pals
PalAutoHPRegeneRate / PalAutoHpRegeneRateInSleepNonVitesse de régénération des PV des Pals, éveillé / endormi
BuildObjectDamageRate / BuildObjectDeteriorationDamageRateNonDégâts subis et vitesse de dégradation des constructions
CollectionDropRate / CollectionObjectHpRate / CollectionObjectRespawnSpeedRateNonQuantité de ressources récoltées, PV et vitesse de réapparition des nœuds de collecte
EnemyDropItemRateNonTaux de drop d'objets des ennemis vaincus
DeathPenaltyNonCe que le joueur perd à sa mort : None, Item, ItemAndEquipment, ou All
bEnablePlayerToPlayerDamage / bEnableFriendlyFire / bEnableInvaderEnemyNonDégâts entre joueurs, tir ami, et événements d'invasion hostile de Pals
bActiveUNKONonActive l'objet "UNKO" (crottes) du jeu
bEnableAimAssistPad / bEnableAimAssistKeyboardNonAssistance à la visée pour manette / clavier+souris
DropItemMaxNum / DropItemMaxNum_UNKONonNombre max d'objets au sol (normaux / UNKO)
BaseCampMaxNum / BaseCampWorkerMaxNumNonNombre max de bases, et nombre max de Pals ouvriers par base
DropItemAliveMaxHoursNonNombre d'heures avant disparition des objets au sol
bAutoResetGuildNoOnlinePlayers / AutoResetGuildTimeNoOnlinePlayersNonDissolution automatique des guildes sans membre en ligne après N heures
GuildPlayerMaxNumNonNombre max de joueurs par guilde
PalEggDefaultHatchingTimeNonTemps d'éclosion des œufs, en heures
WorkSpeedRateNonMultiplicateur de vitesse de travail des Pals
bIsMultiplayNonDrapeau interne lié au multijoueur — laisser la valeur par défaut sauf besoin spécifique
bIsPvPNonActive le PvP sur tout le serveur
bCanPickupOtherGuildDeathPenaltyDropNonAutorise à ramasser les objets perdus à la mort par une autre guilde
bEnableNonLoginPenaltyNonApplique une pénalité aux joueurs restant déconnectés trop longtemps
bEnableFastTravelNonActive le voyage rapide
bIsStartLocationSelectByMapNonPermet aux nouveaux joueurs de choisir leur point d'apparition sur la carte
bExistPlayerAfterLogoutNonGarde le personnage du joueur dans le monde après déconnexion au lieu de le faire disparaître
bEnableDefenseOtherGuildPlayerNonAutorise les défenses de base à blesser les joueurs d'autres guildes
CoopPlayerMaxNumNonNombre max de joueurs par groupe coopératif
ServerPlayerMaxNumNonNombre max total de joueurs sur le serveur
ServerName / ServerDescriptionNonNom et description affichés dans la liste des serveurs
AdminPasswordNon (recommandé)Mot de passe admin pour les commandes admin en jeu — à définir pour un serveur en production
ServerPasswordNonMot de passe de connexion — laisser vide pour un serveur public
PublicIPNonIP publique annoncée par le serveur — généralement laisser vide (détection automatique)
RCONEnabled / RegionNonActive le RCON (port interne fixe 25575, non publié par cette image) et définit une zone géographique
bUseAuthNonExige l'authentification Steam pour les joueurs qui se connectent
BanListURLNonURL vers une liste de bannissement externe
RESTAPIEnabledNonActive l'API REST (port 8212)
bShowPlayerListNonExpose la liste des joueurs en ligne via l'API REST
CrossplayPlatformsNonPlateformes crossplay autorisées, ex : (Steam)
bIsUseBackupSaveDataNonActive les sauvegardes automatiques des données
⁠Volumes
VolumeContenu
/serverInstallation complète du serveur : binaires (via SteamCMD) ainsi que les sauvegardes du monde et la config sous Pal/Saved
/home/jeux/.steam/steam/steamcmdInstallation SteamCMD partagée, évite un nouveau téléchargement à chaque rebuild
/home/jeux/.steam/steam/configCache de connexion/config SteamCMD
⁠Ports
PortProtocoleUsage
8211UDPTrafic de jeu — doit être accessible par les joueurs
27015UDPRequête liste de serveurs Steam — optionnel, exposé par l'image mais pas indispensable pour un serveur privé
8212UDPAPI REST — nécessaire uniquement si RESTAPIEnabled=True

Tag summary

Content type

Image

Digest

sha256:8a7c86b23…

Size

148.3 MB

Last updated

7 days ago

docker pull ludix0/palworld