
Manual-first Windows server guide
Valheim Dedicated Server Setup: Steam, Cross-Play and Saves
This Valheim guide starts with the decision that changes every networking step: Steam-only direct hosting or PlayFab cross-play relay. It then protects the matched world database and metadata files, keeps the copied launch script reproducible, preserves platform-ID permission lists, and uses Iron Gate's CTRL+C shutdown procedure before backups or updates.
Valheim does not center server setup on an INI file; the copied launch script is the configuration surface. Steam mode uses a consecutive UDP port pair and can be joined locally, while -crossplay moves joining to PlayFab, needs no router forwarding and cannot be tested through loopback or a local IP. World state is a matched .db/.fwl pair, not one interchangeable save file.
Steam server App ID
896660
The project/Steam catalog uses this ID; recheck the current manifest because Iron Gate's web guide names the tool but does not print the number.
Steam-backend ports
UDP 2456–2457 by default
Use the selected base port and base+1 as a consecutive pair.
Cross-play backend
PlayFab relay with -crossplay
It needs no router forwarding and cannot be joined through loopback or a local IP.
Default Windows save root
%USERPROFILE%/AppData/LocalLow/IronGate/Valheim
Use -savedir to relocate the worlds and permission files together.
Clean stop
CTRL+C in the server command window
Iron Gate warns not to use the window close button because the process may continue in the background.
Player capacity
Up to 10 players
Do not present unsupported high-population tuning as normal Valheim server capacity.
Protect the server first: Press CTRL+C in the server command window and wait for shutdown; do not close the window with X. Back up the matched world .db/.fwl pair, native backup variants, permission lists and customized launch script before updates, imports or world recovery.
Size the host before downloading
PC and capacity guidance
Iron Gate's reviewed server guide does not publish CPU, RAM or disk minimums. The hardware figures here are conservative editorial starting points and must be presented separately from the official 10-player design limit.
| Profile | Players | Memory | Processor | Storage |
|---|---|---|---|---|
| Small vanilla group Conservative starting point | A few friends, within Valheim's 10-player design | 8 GB or more total RAM is an editorial lab starting point | Modern 4-core host | SSD with room for the world pair, native backups and an off-tree snapshot |
| Host also plays or uses unofficial mods Conservative starting point | Combined game client/server or a long-lived modified world | 16 GB total RAM is a safer editorial starting point, with peak commit measured | Modern multi-core CPU with client and server headroom | SSD plus a known-good vanilla recovery point |
Steam or PlayFab
Choose the backend before opening ports
A Steam-only server and a cross-play server have different joining and router behavior, so backend choice comes before firewall advice.
- 1
Install the official server tool
Use Steam Library > Tools or SteamCMD on Windows/Linux; Microsoft Store installs include a documented Windows Server folder and launch batch.
- 2
Copy and edit the launch script
Preserve the supplied original, then set distinct -name, -world, -password, -port, -public and -savedir values in the copy.
Do not publish a screenshot containing the join password or a user-profile path.
- 3
Select networking intentionally
Omit -crossplay for Steam-only direct hosting; add it for PlayFab-supported cross-play and do not add unrelated router rules.
Acceptance test
Start, persist a world and verify joining
Prove readiness, world identity and a clean restart before inviting the full group.
- 1
Wait for server readiness
Do not treat process existence as ready; wait for the official guide's Game server connected message.
- 2
Join using the chosen backend
For Steam mode, test LAN and then base/base+1 from a separate outside network. For cross-play, use a join code, browser or public address rather than local/loopback IP.
- 3
Stop with CTRL+C and verify persistence
Create recognizable world state, press CTRL+C, wait for exit, then start again and verify the same world and permission behavior.
Do not use the command-window X; Iron Gate says the server can continue in the background.
Keep every layer consistent
Ports, firewall, and router setup
Open only the services your Valheim server actually uses. The game process, Windows Firewall rule, router forward, and player join address must all agree on the same port and protocol.
| Port | Protocol | Purpose | Exposure | Notes |
|---|---|---|---|---|
| 2456 (configurable base) | UDP | Steam-backend server/game communication | Internet playersRequired for this use | Forward only for direct outside Steam-backend joins; PlayFab cross-play does not require router forwarding.[val-server-guide][val-crossplay] |
| 2457 (base + 1) | UDP | Second port in Valheim's required consecutive pair | Internet playersRequired for this use | Reserve base and base+1 for each Steam-backend instance.[val-server-guide] |
Never expose an administration or RCON port merely so players can join. Keep remote administration private whenever possible, use a strong unique credential, and confirm the game's own security model before forwarding it.
Know what must survive a reinstall
Files, worlds, and configuration
| File or folder | Purpose | Backup | Notes |
|---|---|---|---|
| %USERPROFILE%/AppData/LocalLow/IronGate/Valheim/worlds_local/<world>.db | Primary world database | Critical | Always move and restore it with the matching .fwl file and relevant native backup variants.[val-server-guide] |
| %USERPROFILE%/AppData/LocalLow/IronGate/Valheim/worlds_local/<world>.fwl | World metadata paired with the database | Critical | Do not restore .db or .fwl alone; confirm the current worlds_local layout during release testing.[val-server-guide] |
| adminlist.txt, bannedlist.txt and permittedlist.txt in the save root | Platform-ID administration, ban and allowlist state | Critical | A permittedlist with any entry becomes exclusive; IDs are case-sensitive and use [Platform]_[User ID].[val-server-guide] |
| Copied start_headless_server.bat or start_server.sh | Reproducible server name, world, backend, save and backup arguments | Recommended | Edit a copy because updates can replace the supplied original script.[val-server-guide] |
| Setting or file | Location | What it controls | Restart? |
|---|---|---|---|
-name and -worldUse different stable values and quote names containing spaces | Copied launch script | Choose browser identity and create/select the exact world.[val-server-guide] | Yes |
-port-port 2456 | Copied launch script | Sets the base port; the server also uses base+1.[val-server-guide] | Yes |
-crossplayInclude only when supported-platform cross-play is intended | Copied launch script | Selects the PlayFab relay backend instead of Steam-only networking.[val-server-guide][val-crossplay] | Yes |
-savedirAn absolute path outside replaceable server binaries | Copied launch script | Relocates worlds and permission files together.[val-server-guide] | Yes |
-saveinterval, -backups, -backupshort and -backuplongStart with official defaults: 1800 seconds, 4 copies, 7200 and 43200 seconds | Copied launch script | Controls automatic save and backup cadence/retention.[val-server-guide] | Yes |
-public-public 0 for a controlled first test | Copied launch script | Chooses browser visibility; a hidden server can still use Join IP where the backend supports it.[val-server-guide] | Yes |
Avoid incompatible clients and unsafe shortcuts
Players, mods, and administration
Cross-play and editions
The -crossplay switch selects PlayFab relay, allowing supported-platform joins without router forwarding but preventing local-IP and loopback joining.
- Without -crossplay, the Steam backend accepts Steam clients and needs the consecutive UDP pair forwarded for outside direct hosting.
- Cross-play joins can use the public address/port, join code or server list.
- Xbox consoles can join a cross-play server but cannot host a dedicated server.
- When multiple cross-play servers share the same MAC address and port, give each a unique -instanceid.
Mods and extensions
Valheim has no official mod support; every loader, server package and client dependency remains an unofficial compatibility and recovery decision.
- Iron Gate says mods are used at the player's risk and compatibility is not guaranteed after updates.
- The Valheim 1.0 FAQ says Steam Workshop will not be available at launch.
- Do not auto-install or remove a third-party mod without a world backup and explicit compatibility check.
- Keep a known-good vanilla recovery point, especially around the 1.0 release.
Administration
Valheim uses case-sensitive platform IDs in text permission files and in-game admin commands; the official guide does not document native RCON.
- Use one [Platform]_[User ID] value per line, obtained from the log or F2 panel.
- Adding any entry to permittedlist.txt turns it into an exclusive allowlist.
- Admins can kick, ban, unban and inspect the ban list through the F5 console.
- Protect join codes and passwords even when PlayFab removes the router-forwarding requirement.
Preserve a return path before maintenance
Updates, backups, and rollback
Update without gambling the world
Valheim 1.0 is scheduled for 2026-09-09, so this 2026-08-30 guide requires a post-release server/manual and mod-compatibility recheck before final publication.
- 1
Record and stop cleanly
Record server/client version, backend, world, arguments and modifiers, then press CTRL+C and confirm process exit.
- 2
Copy the matched recovery set
Preserve .db and .fwl together with native backups, all permission lists and the customized launch script outside the install path.
- 3
Update and test privately
Update the official server package, compare the newly supplied manual/script, wait for Game server connected, then verify world, permissions, backend and a matching-client join.
Back up and prove the restore path
A Valheim world recovery keeps its .db database and .fwl metadata together, along with relevant native backups and the permission context used by the server.
- 1
Resolve the active save root
Read -savedir if present; otherwise use the documented Windows or Linux default and identify the exact -world name.
- 2
Stop and copy the pair
Use CTRL+C, wait for exit, then copy matching .db/.fwl files, backup variants and permission lists to a dated separate location.
- 3
Restore as a matched set
Restore both files from the same point, start privately, verify world landmarks/player-built state and complete another clean restart.
Diagnose before reinstalling
Common Valheim server problems
A Valheim cross-play server rejects local IP or 127.0.0.1
What players see
The PlayFab server is online, but the host cannot join through a LAN or loopback address.
Likely cause
Iron Gate says cross-play servers cannot be joined with a local IP; joining uses relay-compatible routes instead.
- 1.Keep the world and launch script unchanged while isolating the network path.
- 2.Use the join code, browser entry or public address/port.
- 3.Do not open extra router ports for a PlayFab relay diagnosis.
Valheim loads a new or wrong world after migration
What players see
The server starts, but player buildings or terrain progress are missing.
Likely cause
The wrong -savedir/-world was used, or .db and .fwl came from different recovery points.
- 1.Stop with CTRL+C and copy the current save root before changing it.
- 2.Resolve -savedir and -world from the copied launch script.
- 3.Restore a matched .db/.fwl pair from one dated snapshot.
Valheim refuses everyone except one listed player
What players see
Previously admitted friends are rejected after permittedlist.txt is edited.
Likely cause
Once the permitted list contains an entry, it becomes an exclusive allowlist; IDs are also platform-qualified and case-sensitive.
- 1.Back up all permission files before editing.
- 2.Collect each exact Platform User ID from F2 or the server log.
- 3.Add every intended player or intentionally clear the allowlist, then restart cleanly.
Valheim remains running after the window closes
What players see
The next start collides with an old process or port.
Likely cause
The command-window X was used instead of Iron Gate's CTRL+C shutdown procedure.
- 1.Do not launch a second writer against the same world.
- 2.Confirm whether valheim_server.exe is still running and preserve logs/save state.
- 3.Use CTRL+C for future stops and wait for completion before copying or updating.
Every focused Valheim troubleshooting guide
Evidence stays visible
Sources and verification
Technical behavior changes with server builds. These are the references reviewed for this guide. Official documentation wins if a later patch changes a path, port, command, or compatibility rule.
[val-server-guide] Iron Gate
A Guide to Dedicated Servers ↗Reviewed 2026-08-30 · Official documentation
[val-crossplay] Iron Gate
Cross-play FAQ ↗Reviewed 2026-08-30 · Official documentation
[val-faq] Iron Gate
Valheim FAQ ↗Reviewed 2026-08-30 · Official documentation
[val-one-faq] Iron Gate
Valheim 1.0 FAQ ↗Reviewed 2026-08-30 · Official documentation
[val-mod-position] Iron Gate
Regarding mods ↗Reviewed 2026-08-30 · Official documentation
[val-mod-faq] Iron Gate
Modding FAQ for the asset-bundle update ↗Reviewed 2026-08-30 · Official documentation
[val-ashlands] Iron Gate
Getting Ready for the Ashlands ↗Reviewed 2026-08-30 · Official documentation
Keep learning
Related guides
Host a game server at home
Choose a reachable backend and build a safe Windows/Linux hosting baseline.
Open guide →
Valheim troubleshooting
Resolve backend, world-pair and permission failures with backup-first steps.
Open guide →
Valheim dedicated-server FAQ
Review focused answers for cross-play, saves, shutdown and unofficial mods.
Open guide →