- Where to Find the Actual Error
- 1. SteamCMD Download or Validation Failures
- 2. Port Binding Conflicts
- 3. BepInEx Plugin Load Order Crashes
- 4. Crossplay / PlayFab Authentication Errors
- 5. World Save Corruption from Ungraceful Shutdowns
- 6. Missing Executable Permissions on Linux
- 7. Insufficient RAM and Silent OOM Kill
- 8. Firewall Blocking Ports
- If Nothing Above Matches
These are the eight error patterns that show up most often in Valheim dedicated server support tickets. Each section includes the exact log signature to look for, what’s causing it, and how to fix it.
If you haven’t set up your server yet, start with How to Set Up a Valheim Dedicated Server first.
Where to Find the Actual Error
Before you can fix anything, you need to read the log. Here’s where to find it:
Linux (self-hosted): Logs print to stdout by default. If you’re running the server as a service, check journalctl -u your-service-name. To write logs to a file, add -logFile /path/to/valheim.log to your startup command.
Windows (self-hosted): Logs go to %AppData%\LocalLow\IronGate\Valheim\. Open File Explorer and paste that path in the address bar.
WinterNode (managed): Open the File Manager. In the Quick Access panel on the far right, open winternode.log.
Tip
Search for “error”, “exception”, “failed”, or “terminating” in the log to jump to the relevant line. Most failures leave a clear signature.
1. SteamCMD Download or Validation Failures
Log signature:
Error! App '896660' state is 0x202 after update job.or:
Update state (0x61) downloading, progress: 98.52
Error! App '896660' state is 0x202 after update job.State 0x202 means SteamCMD downloaded part of the server app but could not validate the files. This is almost always a disk space or permissions issue, occasionally a network interruption.
Fix steps:
- Check available disk space on the drive where the server is installed. SteamCMD needs enough space to download the update plus keep the current files during validation.
- Check that the user running SteamCMD has write access to the install directory.
- Delete the
steamapps/downloading/896660folder if it exists, then re-run the update command. - Re-run the update with
validateto force a full file check:
steamcmd +login anonymous +force_install_dir /path/to/valheim-server +app_update 896660 validate +quit- If the error persists on a specific server or VPS, Steam’s content delivery network occasionally has region-specific issues. Try again after a few hours.
2. Port Binding Conflicts
Log signature:
Terminating, failed to hostor:
Starting to host on port 2456
...
Terminating, failed to hostThe server tried to bind to UDP port 2456 and failed because another process already has it. This happens when a previous server instance didn’t shut down cleanly and is still holding the port, or when another service occupies it.
Fix steps:
- Find what’s using port 2456. On Linux:
sudo ss -ulnp | grep 2456On Windows (run as Administrator):
netstat -aon | findstr :2456- If a previous Valheim server instance is still running, kill it:
# Linux - replace PID with the process ID from step 1
kill -9 PID
# Or kill by name
pkill -f valheim_server- On Windows, open Task Manager, find the
valheim_server.exeprocess, and end it. - Wait 30 seconds, then start the server again.
- If a different process owns the port, change your server’s base port using the
-portflag and update your firewall and port forwarding rules to match.
Info
Valheim reserves three consecutive ports starting at your base port. If you use -port 2456, ports 2456, 2457, and 2458 must all be available. Check all three if you see binding failures.
3. BepInEx Plugin Load Order Crashes
Log signature:
[BepInEx] BepInEx 5.4.22.0 - valheim (11/28/2024 12:00:00)
...
[Error : BepInEx] NullReferenceExceptionThe server starts printing BepInEx initialization lines, then stops or exits. There’s a NullReferenceException in the preloader output. The server never gets past the mod loading phase.
This means one plugin has a missing dependency, a type mismatch from a game update, or a load order conflict with another plugin.
Fix steps:
- Open the BepInEx log at
BepInEx/LogOutput.login the server directory. Look for which plugin throws the exception. - Remove that plugin from
BepInEx/plugins/and restart. If the server starts, that plugin is the culprit. - If you don’t see a clear plugin name in the error, use binary search: move half the plugins out of the folder, restart, and see if the crash disappears. Repeat until you isolate it.
- Once you identify the failing plugin, check whether it needs a dependency that isn’t installed (usually listed in the mod’s README or Thunderstore page), whether it hasn’t been updated for the current Valheim version, or whether a newer version is available.
Warning
Crossplay mode is incompatible with BepInEx mods. If you have -crossplay in your startup command, BepInEx plugins won’t load. Pick one or the other. See the BepInEx setup guide for details on mod compatibility.
4. Crossplay / PlayFab Authentication Errors
Log signature:
Failed to initialize PlayFabor:
PlayFab login failed: AuthenticationErroror:
[Steamworks.NET] SteamAPI_Init() failed.Crossplay routes connections through PlayFab instead of Steam networking. When PlayFab auth fails, the server either doesn’t start or starts but immediately drops all connection attempts.
Fix steps:
- Check
steam_appid.txtin the server root directory. It must contain the game’s App ID, not the dedicated server App ID:
892970If the file contains 896660 (the dedicated server app ID) or is missing entirely, that’s the cause. Write 892970 to the file and restart.
Confirm the
-crossplayflag is in your startup command. Without it, the server defaults to Steam networking and PlayFab won’t initialize.Check network connectivity from the server to PlayFab’s API. On Linux:
curl -I https://playfabapi.comIf this fails or times out, a firewall rule is blocking outbound HTTPS from the server. Allow outbound port 443.
- If you’re on a VPS or managed host, verify there are no egress firewall rules blocking external API calls.
5. World Save Corruption from Ungraceful Shutdowns
Log signature:
Failed to load world file (corrupted?)or the server starts but the world resets to an older state, or players see terrain loading errors immediately on join.
This happens when the server is killed mid-save: a power loss, a forced process kill, or a host restart during the 20-minute autosave cycle. Valheim keeps a backup .db.old alongside the main .db file for exactly this situation.
Fix steps:
Locate your world files:
- Linux self-hosted:
~/.config/unity3d/IronGate/Valheim/worlds_local/ - Windows self-hosted:
%AppData%\LocalLow\IronGate\Valheim\worlds\ - WinterNode: File Manager or SFTP at
/.config/unity3d/IronGate/Valheim/worlds_local/(you can also find the folder under Quick Access).
- Linux self-hosted:
You’ll see two files for your world:
WorldName.dbandWorldName.db.old. The.db.oldis the previous successful save.Before doing anything, copy both files somewhere safe as a backup.
Rename
WorldName.dbtoWorldName.db.corrupt.Rename
WorldName.db.oldtoWorldName.db.Restart the server. It loads from the previous save. You’ll lose progress since the last successful autosave, but the world will be intact.
Warning
WinterNode runs automatic backups every 12 hours with 45-day retention. Before manually swapping world files, check whether a clean backup exists in the Backups tab of the control panel. Restoring from a backup is faster and lower-risk.
See the full backup and restore guide for both manual and panel-based recovery.
6. Missing Executable Permissions on Linux
Log signature:
bash: ./valheim_server.x86_64: Permission deniedThe server binary exists but the operating system won’t run it because the execute permission bit isn’t set. This happens after a fresh SteamCMD install on some Linux distributions, or after transferring files from a Windows machine.
Fix steps:
- Navigate to the server installation directory and check current permissions:
ls -la valheim_server.x86_64Look for x in the permission string. If you see -rw-r--r-- instead of -rwxr-xr-x, the execute bit is missing.
- Set the execute bit:
chmod +x valheim_server.x86_64- If you’re using a startup script, it also needs the execute bit:
chmod +x start_server.shTip
If you re-run SteamCMD to update the server and the permission resets, add the chmod command to your startup script before the server launch line. SteamCMD resets permissions on some updates.
7. Insufficient RAM and Silent OOM Kill
What you see in the Valheim log: Nothing. The log ends without an error, often mid-line.
Where the actual error is:
# Linux - check kernel OOM killer log
dmesg | grep -i "killed process"If you see output like:
Out of memory: Killed process 12345 (valheim_server) score 900 ...The kernel terminated the server because the system ran out of RAM. Valheim’s log has no record of this because the process was killed externally.
A vanilla Valheim server uses about 2-4GB of RAM at baseline. With an active session and a large explored world, usage climbs to 4-6GB. BepInEx mods push it higher.
Fix steps:
- Check total system RAM and what’s available when the server starts:
free -h- Look at how much RAM the server was using before the kill:
dmesg | grep -B 5 "killed process"- If RAM is genuinely insufficient:
- On WinterNode, upgrade your server’s RAM allocation
- On a self-managed VPS, upgrade your plan or reduce the number of processes sharing the host
- If running many BepInEx plugins, each adds memory overhead. Try a vanilla startup to confirm whether mods are the cause
At $1.99/GB, a 4GB Valheim server from WinterNode runs $7.96/month and is a reasonable starting point for a typical 10-player vanilla session.
8. Firewall Blocking Ports
Log signature (success in Valheim log):
Game server connected
DungeonDB Start
Zonesystem StartThe server starts clean and reports a successful connection, but players time out or the server doesn’t appear in the browser. The server is running correctly. Packets aren’t getting through.
Fix steps:
- Confirm the server is bound to the expected port:
ss -ulnp | grep 2456You should see valheim_server listening on UDP 2456.
- Check the server’s local firewall. On Linux with
ufw:
sudo ufw statusIf rules for UDP 2456-2458 are missing:
sudo ufw allow 2456:2458/udpOn Linux with iptables directly:
sudo iptables -A INPUT -p udp --dport 2456:2458 -j ACCEPTOn a cloud VPS (AWS, DigitalOcean, Hetzner, etc.), check the provider’s network-level firewall or security group. These are separate from the OS firewall and block traffic before it reaches the server. Add inbound UDP rules for ports 2456-2458 in the provider’s control panel.
Self-hosted: confirm you’ve forwarded UDP 2456-2458 on your router to the server’s local IP address.
Test from outside your network using a UDP port checker with your public IP and port 2456.
Info
On WinterNode’s Valheim servers, port forwarding is handled automatically. If players can’t connect to a WinterNode server that shows as started, open a support ticket. The control panel gives the support team visibility into the server’s network state.
If Nothing Above Matches
Log signatures vary across Valheim versions and some errors are less common than these eight. If your issue isn’t covered here, post your log output (especially any lines with “error”, “exception”, or “failed”) in the WinterNode Discord. Active Valheim server owners there have likely seen it.
Join the WinterNode Discord for community help and support from the WinterNode team.
Running a Valheim server shouldn’t require reading kernel docs. Get your Valheim server → at $1.99/GB with no CPU limits, automatic backups, and log access built in from day one.
Frequently Asked Questions
On Linux, logs print to stdout or the log file path you set with -logFile. On Windows, check %AppData%/LocalLow/IronGate/Valheim/. On WinterNode, it can be accessed in the File Manager under Quick Access (`winternode.log`)
Yes. A plugin with a missing dependency or a version mismatch causes a NullReferenceException in the BepInEx preloader before the server fully loads. The server hangs or exits right after printing the BepInEx version line. Remove plugins one at a time to isolate the crash.
Crossplay uses PlayFab for authentication. Two common causes: the steam_appid.txt file contains the server App ID (896660) instead of the game App ID (892970), or your network is blocking the PlayFab API endpoint. Fix the App ID file first, then check firewall rules.
The server started successfully but something is blocking UDP ports 2456-2458 before packets reach it. Check your firewall rules on the host machine, any cloud provider security groups, and your router if self-hosting. The server log shows a successful start regardless of firewall state.




