Palworld Servidor dedicado Configuration
Palworld es un popular creature-collecting and survival game que soporta servidor dedicado hosting on Linux. Esta guía cubre complete Palworld server installation, configuration through PalWorldSettings.ini, memory optimization, port setup, and systemd management. Palworld is relatively new but has become extremely popular, requiring careful resource allocation and red configuration.
Tabla de contenidos
- System Requirements
- Instalaing SteamCMD and Palworld
- Server Configuration
- PalWorldSettings.ini Configuration
- Memory and Performance Settings
- Port Configuration
- Running with Systemd
- Admin and Moderation
- [Backup Strategy](#copia de seguridad-strategy)
- Optimization Techniques
- Monitoring
- Conclusion
Requisitos del sistema
Palworld has significant memory requirements:
- Ubuntu 20.04 LTS or later
- 16GB RAM minimum (32GB recommended for 50+ players)
- 100GB+ disk space (SSD recommended for rendimiento)
- 4+ CPU cores
- Stable internet connection
- Root or sudo access
Palworld servers consume significant RAM, often 15-25GB depending on player count.
Instalaing SteamCMD and Palworld
Instala dependencies:
sudo apt-get update
sudo apt-get install -y curl wget file bzip2 gzip unzip python3 util-linux ca-certificates binutils lib32gcc1 lib32stdc++6
Create steam user:
sudo useradd -m -s /bin/bash steam
sudo -u steam mkdir -p /home/steam/steamcmd
Instala SteamCMD:
cd /home/steam/steamcmd
sudo -u steam curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | sudo -u steam tar zxvf -
Verifica SteamCMD:
sudo -u steam /home/steam/steamcmd/steamcmd.sh +quit
Create Palworld directory:
sudo -u steam mkdir -p /home/steam/palworld
Instala Palworld server (app ID 2394010). This may take 20+ minutes:
sudo -u steam /home/steam/steamcmd/steamcmd.sh \
+force_install_dir /home/steam/palworld \
+login anonymous \
+app_update 2394010 \
+quit
Verifica la instalación:
ls -la /home/steam/palworld/
file /home/steam/palworld/PalServer.sh
chmod +x /home/steam/palworld/PalServer.sh
Create data directories:
sudo -u steam mkdir -p /home/steam/palworld-data/{Saved,Logs,backups}
Server Configuration
Crea el main server startup script:
sudo tee /home/steam/palworld/start_server.sh > /dev/null <<'EOF'
#!/bin/bash
PALWORLD_DIR="/home/steam/palworld"
DATA_DIR="/home/steam/palworld-data"
cd "$PALWORLD_DIR"
mkdir -p "$DATA_DIR/Logs"
mkdir -p "$DATA_DIR/Saved"
# Export environment variables for Palworld
export UE_SERVER_PORT="${UE_SERVER_PORT:-8211}"
export STEAM_PORT="${STEAM_PORT:-8211}"
export QUERY_PORT="${QUERY_PORT:-27015}"
# Run the server
exec "$PALWORLD_DIR/PalServer.sh" \
-port="${UE_SERVER_PORT}" \
-queryport="${QUERY_PORT}" \
-publiclobby \
-log \
-useperfthreads \
-NoAsyncLoadingThread \
-UseMultithreading \
2>&1 | tee "$DATA_DIR/Logs/palworld_$(date +%Y%m%d).log"
EOF
sudo chmod +x /home/steam/palworld/start_server.sh
sudo chown steam:steam /home/steam/palworld/start_server.sh
PalWorldSettings.ini Configuration
Crea el server configuration file:
mkdir -p /home/steam/palworld-data/Saved/Config/LinuxServer/
sudo tee /home/steam/palworld-data/Saved/Config/LinuxServer/PalWorldSettings.ini > /dev/null <<'EOF'
[/Script/Pal.PalGameWorldSettings]
OptionSettings=(
Difficulty=None,
DayTimeSpeedRate=1.0,
NightTimeSpeedRate=1.0,
ExpRate=1.0,
PalCaptureRate=1.0,
PalSpawnNumRate=1.0,
PalDamageRateAttack=1.0,
PalDamageRateDefense=1.0,
PlayerDamageRateAttack=1.0,
PlayerDamageRateDefense=1.0,
PlayerStomachDecreaceRate=1.0,
PlayerStaminaDecreaceRate=1.0,
PlayerAutoHPRegeneRate=1.0,
PlayerAutoHpRegeneRateInSleep=1.0,
PalStomachDecreaceRate=1.0,
PalStaminaDecreaceRate=1.0,
PalAutoHpRegeneRate=1.0,
PalAutoHpRegeneRateInSleep=1.0,
BuildObjectDamageRate=1.0,
BuildObjectDeteriorationDamageRate=1.0,
CollectionDropRate=1.0,
CollectionObjectHpRate=1.0,
CollectionObjectRespawnSpeedRate=1.0,
EnemyDropItemRate=1.0,
DeathPenalty=All,
bEnablePlayerToPlayerDamage=True,
bEnableFriendlyFire=False,
bEnableInvaderEnemy=True,
bActiveUNKO=False,
bEnableAimbot=False,
bEnableNPCDelivery=True,
bEnablePalWarp=True,
bIsMultiPlay=True,
bIsPvP=True,
bCanPickupOtherGuildDeathPenaltyDrop=False,
bEnableNonLoginPenalty=True,
bEnablePalPass=True,
GuildPlayerMaxNum=20,
PalEggDefaultHatchingTime=72.0,
WorkSpeedRate=1.0,
bIsShowEnemyHealth=False,
bIsMultiplayer=True,
bServerLog=True,
bServerDTLS=True,
LogFormatType=Text
)
[/Script/Pal.PalNetworkPrivateSettings]
b_Enable_Private_Network=False
Private_Network_Authentication_Token=""
[/Script/Pal.PalGameSession]
SessionName=Palworld Server
MaxPlayer=32
Password=""
bIsLAN=False
bPublicSession=True
bUseVoiceChat=True
EOF
sudo chown steam:steam /home/steam/palworld-data/Saved/Config/LinuxServer/PalWorldSettings.ini
Configuration explanation:
Difficulty: None (standard), difficulty options availableExpRate: 1.0 (default), increase for faster levelingPalCaptureRate: 1.0, increase to make capturing easierPalSpawnNumRate: 1.0, control creature spawning frequencyPlayerDamageRateAttack/Defense: 1.0, adjust PvP combat balanceGuildPlayerMaxNum: 20, maximum players in a guild/groupbEnablePvP: Enable/disable player versus player combatbEnableNonLoginPenalty: Penalty for not playing for a period
Memory and Performance Settings
Create environment file with memory optimization:
sudo tee /home/steam/palworld/server.env > /dev/null <<'EOF'
# Memory settings (adjust based on available RAM)
UE_MALLOC_BIN_DETAILED_STATS=1
MALLOC_TRIM_THRESHOLD=536870912
# Performance settings
UE_SERVER_PORT=8211
STEAM_PORT=8211
QUERY_PORT=27015
# Threading options
UE_NUM_THREADS=8
# Logging
UE_LOG_LEVEL=warning
# Server options
SERVER_PASSWORD=
MAX_PLAYERS=32
COMMUNITY_NAME=MyPalworldServer
EOF
sudo chown steam:steam /home/steam/palworld/server.env
sudo chmod 600 /home/steam/palworld/server.env
Optimize system memory settings:
# Increase virtual memory if needed
sudo sysctl -w vm.swappiness=10
echo "vm.swappiness=10" | sudo tee -a /etc/sysctl.conf
# Increase max map count for large applications
sudo sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" | sudo tee -a /etc/sysctl.conf
# Apply changes
sudo sysctl -p
Monitor memory usage:
# Real-time monitoring
watch -n 1 'free -h && ps aux | grep PalServer | grep -v grep'
# Detailed memory breakdown
ps -o pid,vsz,rss,pmem,comm $(pgrep -f PalServer)
# Memory profiling
smem -s rss -p PalServer
Configuración de puertos
Palworld uses specific ports:
# Game server port (UDP)
UE_PORT=8211
# Query port for server list (UDP)
QUERY_PORT=27015
# Configure firewall (UFW)
sudo ufw allow 8211/udp
sudo ufw allow 27015/udp
sudo ufw allow 8211/tcp
sudo ufw allow 27015/tcp
# For iptables systems
sudo iptables -A INPUT -p udp --dport 8211 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 27015 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 8211 -j ACCEPT
sudo iptables-A INPUT -p tcp --dport 27015 -j ACCEPT
# Verify ports are listening
sudo netstat -tulnp | grep -E "8211|27015"
ss -tulnp | grep PalServer
Port forwarding on router:
# If accessing from outside your network, forward these to your server:
# External UDP 8211 -> Internal UDP 8211
# External UDP 27015 -> Internal UDP 27015
Ejecución con Systemd
Create servicio systemd:
sudo tee /etc/systemd/system/palworld.service > /dev/null <<'EOF'
[Unit]
Description=Palworld Dedicated Server
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=steam
Group=steam
WorkingDirectory=/home/steam/palworld
EnvironmentFile=/home/steam/palworld/server.env
ExecStart=/home/steam/palworld/start_server.sh
Restart=on-failure
RestartSec=30
StandardOutput=journal
StandardError=journal
# Critical resource limits for Palworld
LimitNOFILE=65536
LimitNPROC=32768
MemoryMax=28G
# Security
NoNewPrivileges=true
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/home/steam/palworld-data
[Install]
WantedBy=multi-user.target
EOF
Enable and start the servicio:
sudo systemctl daemon-reload
sudo systemctl enable palworld.service
sudo systemctl start palworld.service
sudo systemctl status palworld.service
Monitor servicio logs:
sudo journalctl -u palworld.service -f
sudo journalctl -u palworld.service -n 100 --no-pager
tail -f /home/steam/palworld-data/Logs/palworld_$(date +%Y%m%d).log
Admin and Moderation
Palworld admin commands (via admin panel or console):
# Server management commands
/ShowPlayers # List all connected players
/Info # Server information
/Save # Force save world
# Player management
/Kick PlayerName # Kick a player
/Ban PlayerSteamID # Ban a player
/Unban PlayerSteamID # Unban a player
/BanList # Show banned players
# Game control
/Broadcast Message # Send message to all players
/DoExit # Graceful server shutdown
/ForceStopGame # Force stop the game
Create ban list file:
sudo tee /home/steam/palworld-data/Saved/bans.txt > /dev/null <<'EOF'
# Format: SteamID64 or IP address (one per line)
# Example:
# 76561198012345678
# 192.168.1.100
EOF
sudo chown steam:steam /home/steam/palworld-data/Saved/bans.txt
Crea undmin script for easy management:
sudo tee /home/steam/manage_palworld.sh > /dev/null <<'EOF'
#!/bin/bash
case "$1" in
status)
systemctl status palworld.service
;;
restart)
echo "Restarting Palworld server..."
systemctl restart palworld.service
sleep 5
systemctl status palworld.service
;;
logs)
journalctl -u palworld.service -f -n 100
;;
backup)
/home/steam/backup_palworld.sh
;;
*)
echo "Usage: $0 {status|restart|logs|backup}"
;;
esac
EOF
sudo chmod +x /home/steam/manage_palworld.sh
Backup Strategy
Crea unutomated copia de seguridad script:
sudo tee /home/steam/backup_palworld.sh > /dev/null <<'EOF'
#!/bin/bash
DATA_DIR="/home/steam/palworld-data"
BACKUP_DIR="$DATA_DIR/backups"
RETENTION_DAYS=30
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# Backup world save data
tar -czf "$BACKUP_DIR/palworld_backup_${TIMESTAMP}.tar.gz" \
-C "$DATA_DIR" Saved/ \
2>/dev/null
if [ $? -eq 0 ]; then
SIZE=$(du -sh "$BACKUP_DIR/palworld_backup_${TIMESTAMP}.tar.gz" | awk '{print $1}')
echo "[$(date)] Backup created: palworld_backup_${TIMESTAMP}.tar.gz ($SIZE)"
else
echo "[$(date)] Backup failed!" >&2
exit 1
fi
# Cleanup old backups
OLD_BACKUPS=$(find "$BACKUP_DIR" -name "palworld_backup_*.tar.gz" -mtime +${RETENTION_DAYS})
if [ ! -z "$OLD_BACKUPS" ]; then
echo "$OLD_BACKUPS" | xargs rm -v
echo "[$(date)] Old backups removed"
fi
# Keep track of backup sizes
du -sh "$BACKUP_DIR" | awk '{print "Total backup size: " $1}'
EOF
sudo chmod +x /home/steam/backup_palworld.sh
sudo chown steam:steam /home/steam/backup_palworld.sh
Schedule daily copia de seguridads:
# Edit crontab
sudo tee -a /var/spool/cron/crontabs/steam > /dev/null <<'EOF'
# Daily backup at 3 AM
0 3 * * * /home/steam/backup_palworld.sh >> /home/steam/palworld-data/Logs/backup.log 2>&1
# Restart server daily at 4 AM for maintenance
0 4 * * * systemctl restart palworld.service >> /home/steam/palworld-data/Logs/maintenance.log 2>&1
EOF
sudo systemctl restart cron
Restore from copia de seguridad:
sudo systemctl stop palworld.service
BACKUP="/home/steam/palworld-data/backups/palworld_backup_20240101_030000.tar.gz"
sudo -u steam tar -xzf "$BACKUP" -C /home/steam/palworld-data/
sudo systemctl start palworld.service
Optimización Techniques
For better rendimiento with large player counts:
# CPU affinity for server process
PALPID=$(pgrep -f PalServer)
taskset -p -c 0-7 $PALPID
# Monitor CPU usage
htop -p $PALPID
# Increase UDP buffer sizes
sudo sysctl -w net.core.rmem_max=134217728
sudo sysctl -w net.core.wmem_max=134217728
sudo sysctl -w net.core.rmem_default=131072
sudo sysctl -w net.core.wmem_default=131072
# Enable TCP fast open (if supported)
sudo sysctl -w net.ipv4.tcp_fastopen=3
Monitor system resources continuously:
# Create monitoring dashboard
watch -n 2 'echo "=== Palworld Server Status ===" && \
echo "" && \
ps aux | grep PalServer | grep -v grep | awk "{print \"PID: \" \$2, \"MEM: \" \$6/1024 \"MB\", \"CPU: \" \$3 \"%\"}" && \
echo "" && \
netstat -s | grep -i udp && \
echo "" && \
df -h /home/steam/palworld-data | awk "NR==2 {print \"Disk: \" \$5 \" used\"}"'
Supervisión
Create comprehensive monitoreo script:
sudo tee /home/steam/monitor_palworld.sh > /dev/null <<'EOF'
#!/bin/bash
echo "=== Palworld Server Status ==="
echo "Timestamp: $(date)"
echo ""
# Service status
if systemctl is-active --quiet palworld.service; then
echo "✓ Service is running"
else
echo "✗ Service is NOT running"
exit 1
fi
# Process info
PID=$(pgrep -f PalServer)
if [ ! -z "$PID" ]; then
MEM=$(ps -p $PID -o rss= | awk '{print $1/1024 " MB"}')
CPU=$(ps -p $PID -o %cpu= | awk '{print $1 "%"}')
echo "Process ID: $PID"
echo "Memory: $MEM"
echo "CPU: $CPU"
fi
# Port status
echo ""
echo "Port Status:"
for PORT in 8211 27015; do
if ss -tulnp | grep -q ":$PORT "; then
echo " ✓ Port $PORT listening"
else
echo " ✗ Port $PORT NOT listening"
fi
done
# Disk space
echo ""
USAGE=$(df -h /home/steam/palworld-data | awk 'NR==2 {printf "%s / %s (%s)\n", $3, $2, $5}')
echo "Disk Usage: $USAGE"
# Recent errors or warnings
echo ""
RECENT_ERRORS=$(tail -50 /home/steam/palworld-data/Logs/palworld_*.log 2>/dev/null | grep -i "error\|fatal\|exception" | wc -l)
echo "Recent errors: $RECENT_ERRORS"
# Backup status
LATEST_BACKUP=$(ls -t /home/steam/palworld-data/backups/palworld_backup_*.tar.gz 2>/dev/null | head -1)
if [ ! -z "$LATEST_BACKUP" ]; then
echo "Latest backup: $(basename $LATEST_BACKUP) - $(date -r $LATEST_BACKUP '+%Y-%m-%d %H:%M')"
fi
EOF
sudo chmod +x /home/steam/monitor_palworld.sh
Run monitoreo:
/home/steam/monitor_palworld.sh
watch -n 10 '/home/steam/monitor_palworld.sh'
Update server to latest version:
sudo systemctl stop palworld.service
sudo -u steam /home/steam/steamcmd/steamcmd.sh \
+force_install_dir /home/steam/palworld \
+login anonymous \
+app_update 2394010 \
+quit
sudo systemctl start palworld.service
Conclusión
Your Palworld servidor dedicado is now fully configured with optimized memory settings, proper reding, and automated copia de seguridad protection. Palworld provides exciting multiplayer creature-catching experiences with cooperative gameplay mechanics.
Key points:
- Palworld demands significant RAM - monitor memory usage closely
- Configura PalWorldSettings.ini for your desired gameplay experience
- Implement daily automated copia de seguridads for data protection
- Monitor server rendimiento and player experience
- Keep the server updated with latest patches
- Use admin commands for effective community management
- Plan for scaling as your player base grows
A well-maintained Palworld server can provide hundreds of hours of engaging multiplayer entertainment for your player community.


