Palworld Dedicated Server
Overview
Palworld is a multiplayer dedicated game server running on Kubernetes, providing a persistent world for players to capture and battle with Pals.
Architecture
graph LR
subgraph External
Players[Players]
Internet[Internet]
end
subgraph Firewall
Ubiquiti[Ubiquiti Router]
pfSense[pfSense]
end
subgraph Kubernetes
subgraph palworld namespace
Server[Palworld Server]
PVC[(Game Data)]
end
end
Players --> Internet
Internet -->|UDP 8211| Ubiquiti
Ubiquiti --> pfSense
pfSense -->|NodePort 30821| Server
Server --> PVC
Components
Game Server
| Property |
Value |
| Image |
thijsvanloef/palworld-server-docker:latest |
| Game Port |
8211 (UDP) |
| Query Port |
27015 (UDP) |
| RCON Port |
25575 (TCP) |
| External URL |
palworld.ajandrews.pro:8211 |
Deployment
Kubernetes Resources
apiVersion: apps/v1
kind: Deployment
metadata:
name: palworld
namespace: palworld
spec:
replicas: 1
strategy:
type: Recreate # Required for game servers
template:
spec:
containers:
- name: palworld
image: thijsvanloef/palworld-server-docker:latest
ports:
- containerPort: 8211
protocol: UDP
name: game
- containerPort: 27015
protocol: UDP
name: query
- containerPort: 25575
protocol: TCP
name: rcon
resources:
requests:
memory: "8Gi"
cpu: "2"
limits:
memory: "16Gi"
cpu: "4"
Service Configuration
apiVersion: v1
kind: Service
metadata:
name: palworld
namespace: palworld
spec:
type: NodePort
ports:
- port: 8211
targetPort: 8211
nodePort: 30821
protocol: UDP
name: game
- port: 27015
targetPort: 27015
nodePort: 30270
protocol: UDP
name: query
- port: 25575
targetPort: 25575
nodePort: 30255
protocol: TCP
name: rcon
Game Settings
Server Configuration
| Setting |
Value |
Description |
| Max Players |
32 |
Maximum concurrent players |
| Experience Rate |
2.75x |
XP multiplier |
| Pal Capture Rate |
1.25x |
Easier capture |
| Pal Spawn Rate |
2x |
More Pals in world |
Combat Settings
| Setting |
Player |
Pal |
| Damage Attack |
2.25x |
1x |
| Damage Defense |
0.9x |
2.2x |
| HP Regen Rate |
2.9x |
2.5x |
| HP Regen (Sleep) |
5x |
4.5x |
World Settings
| Setting |
Value |
| Day Speed |
0.1x (slower days) |
| Night Speed |
3x (faster nights) |
| Auto Save |
Every 30 seconds |
| Egg Hatching |
Near instant |
| Death Penalty |
Items only |
| Global Pal Import |
Enabled |
Network Configuration
Port Forwarding Chain
Internet:8211 (UDP)
↓
Ubiquiti Router → 192.168.5.2:8211
↓
pfSense NAT → 10.0.0.101:30821
↓
K8s NodePort → Pod:8211
DNS Configuration
| Record |
Type |
Value |
| palworld.ajandrews.pro |
A |
Public IP |
DNS Only Mode
DNS record must be set to "DNS Only" (grey cloud) in Cloudflare since game traffic is UDP and cannot go through the tunnel.
Administration
RCON Commands
Connect via RCON or use kubectl:
# Show connected players
kubectl exec -n palworld deployment/palworld -- rcon-cli ShowPlayers
# Broadcast message
kubectl exec -n palworld deployment/palworld -- rcon-cli "Broadcast Server_maintenance_in_5_minutes"
# Save game
kubectl exec -n palworld deployment/palworld -- rcon-cli Save
# Kick player
kubectl exec -n palworld deployment/palworld -- rcon-cli "KickPlayer <SteamID>"
In-Game Admin
- Open chat (Enter key)
- Type:
/AdminPassword <admin-password>
- Use admin commands with
/ prefix
| Command |
Description |
/Broadcast <message> |
Server-wide message |
/KickPlayer <SteamID> |
Kick player |
/BanPlayer <SteamID> |
Ban player |
/Save |
Force save |
/Shutdown <seconds> |
Scheduled shutdown |
Storage
Persistent Volume
| Property |
Value |
| Size |
50Gi |
| Storage Class |
longhorn-single |
| Mount Path |
/palworld |
Data Contents
- World save files
- Player data
- Server configuration
- Backup files
Monitoring
Health Checks
livenessProbe:
exec:
command:
- /bin/sh
- -c
- pgrep -x "PalServer-Linux" > /dev/null
initialDelaySeconds: 120
periodSeconds: 30
Logs
# View server logs
kubectl logs -n palworld deployment/palworld -f
# Check server status
kubectl exec -n palworld deployment/palworld -- rcon-cli Info
Troubleshooting
Common Issues
| Issue |
Cause |
Resolution |
| Connection timeout |
Port forwarding |
Check Ubiquiti + pfSense NAT rules |
| Server not starting |
Resource limits |
Increase memory/CPU limits |
| World not loading |
Corrupted save |
Restore from backup |
| RCON not responding |
Service not ready |
Wait for full startup (~2 min) |
Startup Time
The server takes approximately 2-3 minutes to fully start:
- Download/verify game files
- Load world data
- Start game server
- Enable RCON/REST API