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

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 available
  • ExpRate: 1.0 (default), increase for faster leveling
  • PalCaptureRate: 1.0, increase to make capturing easier
  • PalSpawnNumRate: 1.0, control creature spawning frequency
  • PlayerDamageRateAttack/Defense: 1.0, adjust PvP combat balance
  • GuildPlayerMaxNum: 20, maximum players in a guild/group
  • bEnablePvP: Enable/disable player versus player combat
  • bEnableNonLoginPenalty: 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.