RE:NODE

Update a Valheim server and fix 'Incompatible version'

By RE:NODE Team
11 min read


"Incompatible version" on a Valheim server means the game on the player's PC and the server are on different builds, and the fix is almost always to update the server: stop it cleanly, run steamcmd +login anonymous +app_update 896660 validate +quit against its install folder, and start it again. The game updates itself through Steam the moment a patch is out; the dedicated server is a separate app that updates only when something tells it to. The rest of this post is about the cases where that one command is not enough - modded servers, players on the public test branch, Xbox and Game Pass players a day behind, and groups who would rather not lose an evening to a patch.

Why the versions drift apart#

Valheim is two products on Steam. The game is app 892970; the dedicated server is app 896660. They are released together, but they are installed and updated separately:

  • The client updates through Steam automatically, usually as soon as the player opens Steam after a patch. Players cannot easily refuse an update.
  • The server updates when SteamCMD or the Steam client runs an update on its install. A server that has been running for a week is on whatever build was current when it last started with an update.

So the normal sequence on patch day is: Iron Gate releases a patch, half the group's games update, they try to join, and the server rejects them. Nothing is broken. The server is a day old.

There are two other directions the drift can go:

  • The server is newer than the client. A player who has not restarted Steam, or who has updates paused, is behind. The error is identical.
  • Different platforms update on different days. Steam gets patches first. The Microsoft Store and Xbox builds sometimes arrive later, so a crossplay group can have Steam players who need the new server and Xbox players who cannot join it yet. Valheim crossplay and Xbox players covers that case.

Reading the version on both sides#

Before changing anything, confirm the mismatch.

On the client, the version is printed in the bottom corner of the main menu - a string like 0.219.14. Every player can read it in two seconds.

On the server, the version is printed near the top of the log at startup:

code
Valheim version: l-0.219.14 (network version 34)

The l- prefix is the build type, not part of the number. The figure in brackets is the network version, which is what connection compatibility is actually checked against in recent builds - two builds that share a network version can talk to each other. Iron Gate does not keep it stable across content patches, and there is no reliable way for a player to know in advance whether a given hotfix changed it, so the working rule is simpler: if the numbers on the menu and in the log differ, update whichever side is behind.

When a player is rejected, the server log records it too. The exact wording has changed between builds, but the line names the peer and the two versions, which tells you at once which side is older.

Updating with SteamCMD#

On your own machine, the update is the same command as the install. SteamCMD compares the installed build to the current one and downloads only what changed.

bash
$ sudo systemctl stop valheim$ steamcmd +force_install_dir /home/valheim/server \    +login anonymous +app_update 896660 validate +quit$ sudo systemctl start valheim

The order matters:

  1. Stop the server first, cleanly. A clean stop writes the world. Updating under a running server does not hurt the world directly, but the restart that follows does if the process is killed instead of stopped. Wait for World saved in the log.
  2. Run the update as the user that owns the files. Running SteamCMD as root against a folder owned by a valheim user leaves root-owned files the server cannot later overwrite, and the next update fails half-way.
  3. Use the same `+force_install_dir` every time. Point it at a different path by mistake and SteamCMD installs a second, current copy there while your service keeps starting the old one.
  4. Start and read the version line. If it did not change, the update did not land where you think.

+force_install_dir must come before +login in current SteamCMD builds, or it is ignored with a warning. The anonymous login is correct - the dedicated server does not need an account that owns the game.

On Windows the command is the same with steamcmd.exe and a Windows path. If you installed the server through the Steam client's Tools section instead, Steam updates it like any other app; check that automatic updates are on for it in its properties, and stop the server before Steam starts patching files under it.

What validate does, and when to skip it

validate makes SteamCMD check every installed file against the manifest and redownload any that differ. It fixes a corrupted or half-finished install. It also overwrites any file in the install folder you changed - including start_server.sh or start_headless_server.bat if you edited the copy Steam installed.

Two consequences:

  • Keep your own start script with a different name, such as start_valheim.sh, so validate never resets your launch arguments.
  • BepInEx files are not part of the manifest, so validate leaves BepInEx/, doorstop_libs and start_server_bepinex.sh alone. If a modded server stops loading mods after an update anyway, check that it is still being started with start_server_bepinex.sh and not the vanilla script, then reinstall the current BepInExPack over the server - packs are occasionally updated alongside a game patch.

A plain +app_update 896660 without validate is fine for routine updates. Use validate when the server misbehaves after an update or the install was interrupted. Automating game server updates goes into the trade-off in general.

Modded servers: wait for the mods#

On a vanilla server, updating on patch day is always right. On a BepInEx server it is often wrong.

Mods hook into the game's code. A patch that renames or changes a method the mod patches breaks the mod - sometimes with an error at startup, sometimes silently, sometimes by corrupting what the mod saves. And because players run the same mods on their clients, their own game is in the same state after Steam updates it.

The sensible order on a modded server:

  1. Before the patch is installed anywhere, take a backup of the world and copy the whole BepInEx folder, plugins and config both.
  2. Check each mod's page for an update or a note saying it still works. Libraries such as Jotunn usually update first; mods that depend on them follow.
  3. Update the server only when every mod you rely on is ready. Until then, players who have already updated cannot join - which is the price of running mods.
  4. Update mods on the server and on every client together, ideally from a shared mod-manager profile, so versions match exactly.
  5. Start the server and read `BepInEx/LogOutput.log` for plugins that failed to load before anyone joins.

Players who updated the game before the mods were ready get a version mismatch from the game, a mod mismatch from Jotunn or ServerSync, or both. Those are different errors with different fixes - the mod one is covered in Valheim mod version mismatch kicks. What to do when a mod update breaks covers rolling back a single bad mod.

Rolling back a server update#

Steam does not offer older builds of the dedicated server in normal use. Once SteamCMD has updated an install, the old version is gone unless you kept it.

The practical rollback is therefore a copy made in advance:

bash
$ sudo systemctl stop valheim$ cp -a /home/valheim/server /home/valheim/server-0.219.14$ steamcmd +force_install_dir /home/valheim/server \    +login anonymous +app_update 896660 +quit

If the new build is bad, stop the server, move the new install aside and put the copy back. This works only if players can still run the old version, which they usually cannot - Steam has already updated their game. A server rollback is mostly useful for a modded group who all agree to stay on the old build, and that needs every player to have a copy of the old game too, which is beyond what most groups will do.

More often the right "rollback" is the world: if a patch and a broken mod combined to damage a save, restore the world from before the update, not the server binary. That is why the backup in step one of the modded checklist matters more than the copy of the install.

The public test branch#

Iron Gate tests big updates on a public test branch before release. Players opt in through Steam: the game's Properties, the Betas tab, and the code Iron Gate publishes with each test - historically yesimadebackups, which says what they think of skipping backups.

A player on the public test build cannot join a normal server, and a normal player cannot join a test server. To run a test server, install the server's matching branch:

bash
$ steamcmd +force_install_dir /home/valheim/ptb \    +login anonymous \    +app_update 896660 -beta public-test -betapassword yesimadebackups validate \    +quit

Check the current branch name and password in Iron Gate's own announcement before you use it; they have been stable for years, but they are theirs to change.

Rules for test servers:

  • Use a separate install folder and a separate save folder. A world opened on a test build may be saved in a format the release build cannot read.
  • Never point a test server at your main world. Copy it, and accept that the copy may be lost.
  • Players have to opt out again in Steam to go back to the normal server, and Steam then downloads the release build.

Timing updates for a group#

The cost of a Valheim update is not the download, which takes a minute. It is the half-hour of confusion when a group sits down to play and nobody can get in. A small amount of routine removes it.

  • Update at start-up, not mid-session. On a vanilla server, have the update run every time the server starts and schedule a daily restart at an hour when nobody plays. Patch day then fixes itself overnight.
  • Know when patches land. Iron Gate announces updates on Steam and their own channels. If one lands while people are online, a clean restart with an update takes a couple of minutes; announce it first.
  • Make one person responsible. Somebody in the group checks after every patch that the server's version line matches the game. On a modded server, the same person decides when to update.
  • Restart Steam on the client. A player who still gets "Incompatible version" after the server updated has an old game; restarting Steam usually triggers the download.

How the update happens on a panel host varies. Many panels run SteamCMD each time the server starts, so a restart is an update; others have a switch for it among the startup variables. On RE:NODE the Startup tab shows the variables the server starts with, the Restart button sends a clean stop so the world saves first, and the Schedules tab can run a backup and then a restart at a fixed hour. For a vanilla group that is the whole update routine; for a modded one, make sure nothing in that schedule pulls a new game build before your mods are ready. Restart schedules that help has examples of sensible timings.

Updates and the world file#

The world format changes with some updates. Valheim converts an older world when a newer build loads it, and saves it in the newer format. That has two effects worth knowing:

  • There is no way back for that world. Once the new build has saved it, an older build may refuse to load it. Your pre-update backup is the only copy the old version can read.
  • The first start after a big update is slower. The conversion and a fresh save on a large world can take noticeably longer than a normal start. Do not kill the process because the console is quiet; let it finish and save.

A good habit is a manual backup immediately before every update, labelled with the version it was taken on. The game server update day checklist works for Valheim as it stands.

FAQ#

Why does Valheim say Incompatible version when nothing changed?

Something did change - a game patch reached the players before the server. Compare the version on the main menu with the Valheim version line in the server log, then update whichever side is behind.

Do I need to update the server for every hotfix?

Treat it that way. Some small hotfixes keep the same network version and stay compatible, but you cannot tell which in advance, and an update on a vanilla server costs a restart.

Can I stop Steam updating the game so my group can stay on an old version?

Not reliably. Steam pushes updates when it starts, and the release branch does not offer older builds. Groups that need a frozen version are fighting the platform; it is easier to wait for mods and update together.

Does validate delete my world?

No. It only checks files in the install folder against Steam's manifest. Worlds live in the save folder, outside the install, unless you pointed -savedir inside it - which is a good reason not to.

Why can my Xbox friend not join after I updated the server?

The Xbox and Microsoft Store builds sometimes get patches later than Steam. Until theirs arrives, they are on the older version and the updated server rejects them. Waiting a day usually fixes it.

How long does a Valheim server update take?

The download is usually a minute or two. Add the clean stop, the start and the world load, and plan for five minutes - more on the first start after a large content update.