
Palworld Dedicated Server Setup Guide - Version 3.0Auto-Install, Auto-Update, Crash Recovery, and Scheduled Restarts What's New in Version 3.0 (February 2026)Faster Server Restarts - Smart version checking only downloads updates when needed Improved Monitoring - Better crash detection with timestamped logging Simplified Setup - Clearer step-by-step instructions Enhanced Troubleshooting - Common issues and solutions Optimized Workflow - Better restart logic with process cleanup Overview This guide provides battle-tested scripts (used for over a year) to manage your Palworld dedicated server: Automatic Installation and Updates via SteamCMD Instant Crash Recovery Scheduled Daily Restarts with player warnings via RCON CGNAT Detection to check if your network supports hosting Quick Windows Firewall port configuration No technical expertise required - just copy, paste, and edit a few settings. Requirements Server Software Requirements: DirectX Runtime[www.microsoft.com] - Required for Palworld server to run Visual C++ Redistributable[learn.microsoft.com] - Required for Palworld server to run Network Ports (must be forwarded on your router): TCP: 27015, 27036 UDP: 27015, 27031-27036, 8212Need help? See detailed port forwarding instructions here[portforward.com] Optional for daily restarts: Tiiffi - mcrcon RCON tool[github.com] Quick Setup Instructions Step 1: Install Auto Manager Script 1. Copy the PalServer_Auto_Manager.bat script from below 2. Save as .bat file and edit these three lines: set "STEAMCMD_PATH=C: SteamCMD" set "PALSERVER_PATH=C: palserver" set "PALSERVER_NAME=MyPalServer" 3. Run the script - it will automatically install everything 4. Keep the window open (closing stops monitoring) Step 2: Configure Server 1. In C: palserver Locate DefaultPalWorldSettings.ini2. Copy it to C: palserver Pal Saved Config WindowsServer 3. Rename the copy to PalWorldSettings.ini4. Edit with Notepad: ServerName, AdminPassword, PublicIP (use local IP: 192.168.x.xx or 127.0.0.1) To find your local IP: Open CMD, type ipconfig, look for IPv4 Address Step 3: Port Forwarding Forward the required ports on your router. Use the Windows_Firewall_Port_Adder.bat script for Windows Firewall. Step 4: Check for CGNAT Run CGNat_Detector.bat to check if you can host publicly. If CGNAT detected, you need a Static IP from ISP, VPN service, or use Playit.gg Step 5: Daily Restarts (Optional) 1. Download mcrcon and extract to folder (e.g., D: mcrcon ) 2. Copy DAILY_RESTART.bat script and edit these lines: set SERVER_IP=127.0.0.1 set RCON_PORT=25575 set RCON_PASSWORD=YourAdminPassword cd /d D: mcrcon 3. Test first: Change timeout /t 600 to /t 10, run manually to verify 4. Add to Task Scheduler: Open: Press Win+R (Hold Windows Key and Press R)Type taskschd.msc, press Enter Create: Click "Create Basic Task" Name it: Palworld Restart Set Trigger: Daily at 6:00 AM (or your preferred time) Set Action: Start a program and browse to DAILY_RESTART.batSave: Click Finish Restarts: 30min warning > 20min warning > 10min warning+shutdown > auto-updates and restarts Troubleshooting Server crashes immediately: Copy these files from C: palserver to Pal Binaries Win64 : tier0_s64.dll, tier0_s.dll, vstdlib_s.dll, vstdlib_s64.dll, steamclient.dll, steamclient64.dll Cannot connect from internet: Run CGNAT detector, check port forwarding, verify firewall, give players your public IP RCON restart fails: Check RCONEnabled=True in settings, verify password matches Updates every restart: Use Version 3.0 script below (no validate flag) Tips Manual update: Use RCON /shutdown command Backup C: palserver Pal Saved regularly Dynamic IP: Use No-IP DNS service Web management: Use AdminPal.gg Check logs at palserver_crash_log.txt To run hidden in background and auto-start script on boot: Open Task Scheduler → Create Basic Task → Trigger: "When the computer starts" → Action: Start program → Select PalServer_Auto_Manager.bat → Finish → After creation, edit task properties → Check "Run whether user is logged on or not" and "Hidden" to hide the terminal window. Warning, server and script will always be on, closing the server will just restart again. Will need to End PalServer_Auto_Manager.bat in Task Manager to stop. Guide by Jayconius - Updated February 2026 - Version 3.0 License: This guide and all scripts are free to use, modify, and redistribute with or without credit. However, please do not reupload as an exact 1-to-1 copy of this guide without giving credit to the original author. PalServer_Auto_Manager.bat @echo off setlocal EnableDelayedExpansion REM ======================================== REM CONFIGURATION REM ======================================== set "STEAMCMD_PATH=C: SteamCMD" set "PALSERVER_PATH=C: palserver" set "PALSERVER_NAME=MyPalServer" echo ======================================== echo Palworld Auto-Updater and Crash Monitor echo ======================================== echo Auto-restart script is running. Close this window to stop monitoring. echo. REM ======================================== REM MAIN LOOP (Updates and starts server) REM ======================================== :START REM Setup SteamCMD if needed if not exist "%STEAMCMD_PATH%" mkdir "%STEAMCMD_PATH%" cd /d "%STEAMCMD_PATH%" if not exist "%STEAMCMD_PATH% steamcmd.exe" ( echo Downloading SteamCMD... curl -s -o steamcmd.zip https://steamcdn-a.akamaihd.net/client/installer/steamcmd.zip echo Extracting SteamCMD... powershell -Command "Expand-Archive -Path 'steamcmd.zip' -DestinationPath '.' -Force" del steamcmd.zip 2>nul echo SteamCMD installed. echo. ) REM Check current version status echo Checking current Palworld server version... "%STEAMCMD_PATH% steamcmd.exe" +force_install_dir "%PALSERVER_PATH%" +login anonymous +app_status 2394010 +quit REM Update/Install server (only downloads if new version available) echo Checking for Palworld server updates... "%STEAMCMD_PATH% steamcmd.exe" +force_install_dir "%PALSERVER_PATH%" +login anonymous +app_update 2394010 +quit echo Update check complete. echo. REM Kill any existing PalServer processes taskkill /F /IM PalServer.exe >nul 2>&1 timeout /t 3 /nobreak >nul REM Start server cd /d "%PALSERVER_PATH%" REM Get timestamp for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "dt=%%I" set "timestamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%" echo [%timestamp%] Starting PalServer... echo [%timestamp%] Starting PalServer... >> "%PALSERVER_PATH% palserver_crash_log.txt" start "PalServer - %PALSERVER_NAME%" /D "%PALSERVER_PATH%" PalServer.exe -ServerName="%PALSERVER_NAME%" -useperfthreads -NoAsyncLoadingThread -UseMultithreadForDS -log -publiclobby REM Wait for server to initialize timeout /t 30 /nobreak >nul set "status=RUNNING_OK" REM ======================================== REM MONITOR LOOP REM ======================================== :CHECK timeout /t 60 /nobreak >nul REM Get timestamp for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /value') do set "dt=%%I" set "timestamp=%dt:~0,4%-%dt:~4,2%-%dt:~6,2%_%dt:~8,2%-%dt:~10,2%-%dt:~12,2%" REM Check if PalServer.exe is running tasklist /FI "IMAGENAME eq PalServer.exe" 2>nul | find /i "PalServer.exe" >nul if errorlevel 1 ( REM Server not running if "%status%"=="RUNNING_OK" ( echo [%timestamp%] PalServer.exe has stopped/crashed! echo [%timestamp%] PalServer.exe has stopped/crashed! >> "%PALSERVER_PATH% palserver_crash_log.txt" set "status=NOT_RUNNING" ) goto RESTART ) else ( REM Server is running if "%status%"=="NOT_RUNNING" ( echo [%timestamp%] PalServer.exe is now running OK. echo [%timestamp%] PalServer.exe is now running OK. >> "%PALSERVER_PATH% palserver_crash_log.txt" set "status=RUNNING_OK" ) ) goto CHECK REM ======================================== REM RESTART (Goes back to update + start) REM ======================================== :RESTART echo. echo Restarting server in 10 seconds... timeout /t 10 /nobreak >nul goto START exit DAILY RESTART.bat @echo off REM RCON SETTINGS CHANGE THESE!!!! set SERVER_IP=Your LAN IP set RCON_PORT=25575 set RCON_PASSWORD=YourPalworldAdminPassword REM Change to the directory where mcrcon is located cd /d D: mcrcon REM Broadcast the first message about the upcoming restart mcrcon -H %SERVER_IP% -P %RCON_PORT% -p %RCON_PASSWORD% "Broadcast Server_will_restart_in_30_minutes" REM Wait for 10 minutes (600 seconds) silently timeout /t 600 > nul REM Broadcast the second message about the upcoming restart mcrcon -H %SERVER_IP% -P %RCON_PORT% -p %RCON_PASSWORD% "Broadcast Server_will_restart_in_20_minutes" REM Wait for another 10 minutes (600 seconds) silently timeout /t 600 > nul REM Execute the shutdown command with a message about the reboot mcrcon -H %SERVER_IP% -P %RCON_PORT% -p %RCON_PASSWORD% "shutdown 600 Server Restarting in 10 minutes, reboot time around 2/3 minutes" REM Exits the script when finish so it doesn't leave a blank terminal on the desktop. exit CGNat / Double Nat Detector.bat @echo off setlocal enabledelayedexpansion title The "Am I CGNAT'ed?" Tester color 0b echo ================================================== echo CGNAT DETECTION TOOL (Version 2.0) echo ================================================== echo. :: 1. Get Public IP echo [1/3] Getting Public IP... for /f "delims=" %%a in ('powershell -command "Invoke-RestMethod -Uri 'https://api.ipify.org'"') do set "PublicIP=%%a" echo Public IP: %PublicIP% :: 2. Check for the 100.64.0.0/10 range (The CGNAT Reserved Range) echo %PublicIP% | findstr /r "^100 . (6[4-9] |[7-9][0-9] |1[0-1][0-9] |12[0-7] ) ." >nul if %errorlevel% equ 0 ( set "Result=CGNAT_DETECTED" goto display ) :: 3. Trace route to verify echo [2/3] Checking for hidden ISP hops (this takes 5 seconds)... :: We trace to Google DNS, but only look at the first 2 hops set "hopcount=0" for /f "tokens=2,3" %%i in ('tracert -d -h 2 8.8.8.8 ^| find "ms"') do ( set /a hopcount+=1 set "hop!hopcount!=%%j" ) :: Analyze Hop 2 :: If Hop 2 is a private IP (10.x, 192.168.x, 172.16.x, or 100.64.x), it's CGNAT echo Hop 2 is: !hop2! echo !hop2! | findstr /r "^10 . ^192 .168 . ^172 . (1[6-9] |2[0-9] |3[0-1] ) . ^100 ." >nul if %errorlevel% equ 0 ( set "Result=CGNAT_DETECTED" ) else ( set "Result=PUBLIC_IP" ) :display echo. echo ================================================== if "%Result%"=="CGNAT_DETECTED" ( color 0e echo RESULT: LIKELY BEHIND CGNAT echo I found a private network hop between you and the web. echo Port forwarding will likely fail. ) else ( color 0a echo RESULT: YOU HAVE A PUBLIC IP echo No CGNAT detected. You're good to go! ) echo ================================================== pause Windows Firewall Port Adder.bat @echo off setlocal EnableDelayedExpansion :: Check if running as Admin net session >nul 2>&1 if %errorLevel% neq 0 ( echo This script needs to be run as Administrator. echo Please restart in Admin mode. pause exit /b ) :main cls echo ======================================== echo Windows Firewall Port Adder echo ======================================== echo. :: Ask for ports echo Enter the ports to allow in Windows Firewall. echo Use format: 1000-1024 for ranges, 2000,3000 for individual ports. set /p ports="Enter ports: " :: Validate ports not empty if "%ports%"=="" ( echo Error: No ports entered. pause goto main ) :: Ask for protocol echo. echo Select the protocol type: echo 1 - TCP echo 2 - UDP echo 3 - Both set /p protocolChoice="Enter choice (1, 2, or 3): " :: Validate protocol choice if not "%protocolChoice%"=="1" if not "%protocolChoice%"=="2" if not "%protocolChoice%"=="3" ( echo Invalid choice. Please enter 1, 2, or 3. pause goto main ) :: Ask for rule name echo. set /p ruleName="Enter a name for the firewall rule (or press Enter for default): " :: Set default rule name if empty if "%ruleName%"=="" set "ruleName=Custom Rule" echo. echo Adding firewall rule(s)... :: Apply firewall rules if "%protocolChoice%"=="3" ( :: Both TCP and UDP netsh advfirewall firewall add rule name="%ruleName% - TCP" dir=in action=allow protocol=TCP localport=%ports% netsh advfirewall firewall add rule name="%ruleName% - UDP" dir=in action=allow protocol=UDP localport=%ports% ) else ( :: Single protocol if "%protocolChoice%"=="1" set "protocol=TCP" if "%protocolChoice%"=="2" set "protocol=UDP" netsh advfirewall firewall add rule name="%ruleName%" dir=in action=allow protocol=!protocol! localport=%ports% ) if %errorLevel% equ 0 ( echo. echo SUCCESS: Firewall rule(s) added successfully! ) else ( echo. echo ERROR: Failed to add firewall rule(s). ) echo. echo Do you want to add more ports? (Y/N) set /p choice="Enter choice: " if /I "%choice%"=="Y" goto main echo. echo Exiting script. pause exit
2026-02-19 13:00:23 发布在
Palworld\/幻兽帕鲁
说点好听的...
收藏
0
0
