Valheim 1.0 Dedicated Server Setup Guide
Host a Valheim 1.0 dedicated server: install the server tool (AppID 896660), open UDP 2456-2457, set admin lists, and fix Switch 2 crossplay workaround.
Install Valheim's Dedicated Server (AppID 896660), forward UDP 2456-2457, edit start_headless_server.bat or start_server.sh. Access: adminlist.txt, bannedlist.txt, permittedlist.txt (filled = invite-only). Worlds pair WorldName.db with WorldName.fwl. Linux needs libatomic1, libpulse-dev, libpulse0, SteamAppId=892970. Hotfix 1.0.12 accepts Steam_ and V_ IDs.
Self-hosting a Valheim 1.0 dedicated server comes down to a handful of concrete moves: install the free Valheim Dedicated Server tool on Steam (AppID 896660), forward UDP 2456–2457 to the host machine, point a start script at your world name and a password of at least five characters, and back up the matching .db / .fwl world-file pair. This guide walks through each step - plus the 1.0.12 hotfix changes for ban IDs and Switch 2 crossplay - and follows Iron Gate’s official support documentation, the official 1.0 announcement, and the 1.0.12 hotfix notes.
The seven-step flow at a glance:
- Install the server tool via SteamCMD (AppID 896660).
- Configure the start script with your world name, password, and port (exact file names and parameters are in Step 2 below).
- Forward UDP 2456–2457 - or your custom
-portand the port immediately above it - if you use the Steam backend. - Manage access through
adminlist.txt,bannedlist.txt, andpermittedlist.txtnext to the world files. - Move or back up a world by copying the matching
WorldName.db+WorldName.fwlpair together. - On Linux, install the required runtime libraries and set the
SteamAppIdenvironment variable (details in Step 6 below). - Keep the server tool updated so it matches the 1.0 client players launch.
Before You Start: What the Official Docs Say
Iron Gate publishes an official guide to dedicated servers at valheimgame.com/support. Two details from it matter most:
- The default port range the server uses is 2456-2457 (UDP): the game port you set, and that port plus one for Steam queries.
- There are two connection backends: the Steam backend (port-forwarded) and the Crossplay backend (relay-based, using a join code for console and PC crossplay).
The 1.0 announcement separately confirms the new chunk-based save architecture, which splits world data across chunks to reduce serialized data and make saves more resilient.
| Parameter | Official / Baseline Setting | Source & Notes |
|---|---|---|
| Steam Dedicated Tool AppID | 896660 | Confirmed (Steam Store) |
| Base Game Client AppID | 892970 | Confirmed (Steam Store) |
| Default Port Range | UDP 2456–2457 (game + Steam query on the next higher port) | Confirmed (Official Support Guide) |
| Crossplay Parameter | -crossplay (PlayFab relay) | Confirmed (Official Support Guide) |
| Save Architecture | 1.0 Chunk-based multi-file save | Confirmed (Official 1.0 Patch Notes) |
| Memory Baseline | 8 GB RAM baseline for small groups | Attributed (Community host baseline) |
Step 1: Install the Dedicated Server Tool
The dedicated server is a separate free tool on Steam, AppID 896660, under the name Valheim Dedicated Server. On a headless machine the standard method is SteamCMD:
-
Install SteamCMD on your machine.
-
Run:
steamcmd +force_install_dir ./valheim_server +login anonymous +app_update 896660 validate +quit -
Confirm the install directory contains the server binary and the default startup scripts (
start_headless_server.baton Windows,start_server.shon Linux).
Official tip: make a copy of the startup script and edit the copy. The original file is reset each time the server updates through Steam, which would wipe your settings.
Step 2: Configure Startup Arguments
Every Valheim server setting is a launch parameter on the start line - there is no server config file. The official command list and corroborating host guides agree on these:
valheim_server.exe -nographics -batchmode -name "MyVikingRealm" -port 2456 -world "Valheim1_0_World" -password "SecretViking99" -public 1 -crossplay -saveinterval 900 -preset normal
| Parameter | Default | What it does |
|---|---|---|
-name "Name" | none (required) | Server name shown in the browser. |
-port 2456 | 2456 | Game port. The server also uses the next higher port (2457) for Steam queries. |
-world "Name" | none (required) | World to load or create. |
-password "Secret" | none | Join password. At least 5 characters, and it must not appear in the server/world name. |
-savedir [PATH] | game default | Where worlds and permission files are read/written. |
-public 1 | 1 | 1 lists the server in the browser; 0 hides it (join by IP/code only). |
-logFile [path] | console only | Writes the server log to a file. |
-saveinterval 1800 | 1800 | Seconds between autosaves (default 30 min). Lower = less lost on crash, more stutter. |
-backups 4 | 4 | How many rolling world backups to keep. |
-backupshort 7200 | 7200 | Age of the first automatic backup (2h). |
-backuplong 43200 | 43200 | Spacing of later backups (12h). |
-crossplay | off | Enables the PlayFab crossplay backend (console join codes, no port forwarding). |
-instanceid "text" | none | Only needed when several crossplay servers share one public IP. |
-preset [name] | normal | World-modifier preset: Normal, Casual, Easy, Hard, Hardcore, Immersive, Hammer. |
-modifier [name] [value] | none | Fine-tunes one modifier (Combat, DeathPenalty, Resources, Raids, Portals). |
-setkey [name] | none | Toggles a checkbox modifier: nobuildcost, playerevents, passivemobs, nomap. |
-nographics -batchmode are headless flags that should stay on for a server. To bake the same difficulty and world rules a single-player world can set (portal item-transfer, raid frequency, resource rates) into your dedicated world at launch, use -preset and -modifier so everyone joins identical rules. Note that the Hammer preset counts as a temporary cheat state in 1.0, so achievements stop unlocking while it is on.
Step 3: Port Forwarding (Steam Backend Only)
If you use the Steam backend, external players need to reach the server:
- Log in to your router’s admin panel.
- Open the Port Forwarding or Virtual Server section.
- Add a rule forwarding the range 2456-2457 as UDP to the host machine’s internal IP. (If you set a custom
-port, forward that port and the next higher port.) - If a software firewall is active on the host, allow inbound UDP on that range.
Valheim uses UDP only - there is no TCP listener and no RCON. With the Crossplay backend, the server connects out to a relay instead, so those port rules are not required for console players to join.
Step 4: Server Permission Files (adminlist / bannedlist / permittedlist)
Access control lives in three plain-text files in the default save directory, next to worlds_local:
adminlist.txt- grants admin commands to the listed players.bannedlist.txt- blocks the listed players.permittedlist.txt- an allowlist. As soon as it contains any entry, every player not on it is refused, so a server with one permitted name becomes invite-only. Leave it empty for a normal password-protected server.
Each file holds one Platform User ID per line, in the case-sensitive format [Platform]_[UserID] (for example Steam_76561198000000000, or the newer V_123456789 format introduced in 1.0). You can read a player’s ID from the in-game F2 panel or from the server log as they connect. Bans written through the in-game ban command persist in bannedlist.txt automatically.
The in-game admin commands (open the console with F5) are:
kick [name]- disconnects a player.ban [name]- bans a player (writes to bannedlist.txt).unban [name]- removes a ban.banned- lists currently banned players.
These take the player name; the permission files take the Platform User ID. That asymmetry is intentional - names are what you see in the moment, IDs survive a rename. The official guide states the files are read at startup, so stop the server, edit, then restart for changes to apply.
1.0.12 note: the new
V_123456789ID format made olderSteam_123456789entries stop matching. Hotfix 1.0.12 accepts both formats, so existing entries work again.
Step 5: World Files - the .db / .fwl Pair
A Valheim world is two files that must travel together, sharing the same base name:
WorldName.db- the actual world state: terrain, buildings, explored areas, and all progression.WorldName.fwl- the world’s identity and metadata: the name, the seed, the generator version, and a unique identifier.
The seed lives in the .fwl. This has a useful consequence: to put a specific seed on a server without importing an existing world, upload only the .fwl and let the server generate the .db itself. To move an existing world, upload both files together with identical base names, and set the server’s -world to that base name (not the display name inside the .fwl).
Practical rules:
- A missing or mismatched
.fwlmakes Valheim generate a brand-new world and ignore your.db- the most common “my world disappeared” failure. - Your single-player worlds live in
worlds_local; a dedicated server reads fromworlds(or its ownworlds_local). That one-suffix difference is why “I uploaded my world and the server made a new one” happens. Take the pair from the right folder. - Valheim also writes rolling
.oldbackups next to the pair (roughly every 20 minutes). To restore one, stop the server and remove the.oldsuffix so the name matches its partner. - Stop the server before copying or moving world files, and transfer in binary mode over FTP - a text-mode transfer can silently corrupt the
.db. - Because 1.0 uses the chunk-based save system, a server world is now a folder of chunk files rather than one monolithic database. Keep the whole world folder together when backing up or migrating.
Step 6: Linux Dependencies
On Linux, the dedicated server needs the SteamCMD client libraries plus a few extras the official support guide calls out specifically:
libatomic1libpulse-devlibpulse0
Without these, the server may start but PlayFab registration fails and no crossplay join code is ever printed. Your start script must also export the environment variable SteamAppId=892970 - the game’s app ID, not the server’s 896660. This trips up almost everyone who writes their own script.
The dedicated server has minimum library requirements of GLIBC_2.29 and GLIBCXX_3.4.26. If your distribution is older, one alternative to upgrading is to run via Docker: the server ships with docker_start_server.sh, which builds a container with the correct runtime. Linux runs valheim_server.x86_64; stop it with CTRL+C, never kill -9, because Valheim saves on shutdown and a hard kill discards everything since the last autosave.
Step 7: Keep It Online and Healthy
A dedicated server only needs to keep running:
- Run it under a service, screen session, or Docker so it survives your own logout.
- Watch the log for crashes and world corruption messages.
- Update the server tool after Valheim patches - 1.0-era builds expect matching client and server versions, or players cannot connect.
- Schedule a periodic restart to clear memory on long-running servers.
Hotfix 1.0.12 Notes for Server Admins
The 11 September 2026 hotfix changed two things server owners will notice:
Banlist and whitelist ID formats. Valheim 1.0 introduced a new player ID format (V_123456789), which made older ban and whitelist entries written as Steam_123456789 stop matching. Hotfix 1.0.12 accepts both formats, so existing entries work again and you can keep either style when adding new ones.
Switch 2 crossplay. The hotfix could not be uploaded to Switch 2, so Switch 2 players cannot currently join other platforms’ servers. If you run the Steam dedicated server tool, you can restore Steam-to-Switch 2 crossplay by right-clicking Valheim Dedicated Server in Steam → Properties → Game Versions & Betas → select default_old, then update. The trade-off: you run without the 1.0.10/1.0.12 fixes. There is no workaround for PlayStation 5 or Xbox servers connecting to Switch 2.
Also from 1.0.12: items on armour and item stands no longer lose durability or upgrade level in worlds that have not been loaded since 1.0. If your server’s world has been played on 1.0, advise players not to remove high-level items from stands without a world backup, since a complete fix is still in the works.
Hosting Architecture: Self-Hosted vs. Cloud Dedicated Server Comparison
When establishing a permanent 1.0 Viking realm, server hosts choose between running on personal hardware or leasing an external managed game server. Each route carries practical trade-offs:
| Dimension | Self-Hosted (Home Hardware / Homelab) | Managed Cloud Game Server |
|---|---|---|
| Setup Complexity | High (Requires router port forwarding for UDP 2456–2457, firewall rules, and script management) | Low (Instant deployment via web control panel) |
| Uptime & Availability | Dependent on home electrical grid and local PC remaining powered on | High datacenter uptime with automated crash recovery |
| DDoS Protection | Limited to standard residential ISP protections | Enterprise-grade carrier DDoS mitigation included |
| Network & Latency | Constrained by home residential upload bandwidth | Low-latency backbone connections |
| Maintenance & Updates | Manual SteamCMD updates and script adjustments on every patch | Automated background updates with simple mod management |
| Cost Profile | Zero subscription fees; host incurs local electricity and hardware wear | Predictable monthly hosting subscription |
Sizing and Hardware Recommendations for 1.0
Iron Gate has not published an official hardware tier table because world performance depends heavily on terraforming volume, instance counts, and player density. Based on operational baselines from community server admins:
- Small Exploration Outpost (2 to 4 Players): A modern quad-core CPU, 8 GB of system RAM, and solid-state storage. Suitable for close groups exploring central biomes together.
- Mid-Sized Clan Settlement (5 to 8 Players): A high-clock quad-core CPU, 12 to 16 GB of system RAM, and NVMe storage. Recommended when players build separate expansive bases or enter the resource-dense Mistlands and Deep North regions simultaneously.
- Large Community Realm (8 to 10 Players): A dedicated server instance with fast single-core clock speeds, 16 GB of system RAM, and automated daily backup routines to handle 1.0 chunk serialization.
If you are evaluating a seed before opening a server, see the Seed guide or our Seed Viewer. For the coordinate and teleport commands that help scout a world, see the Console Commands guide.
Frequently Answered Questions
What ports must be forwarded for a Valheim dedicated server?
Iron Gate's official dedicated server guide states that the default port range the server uses is 2456-2457. The server listens on the port you set (default 2456) and on that port plus one (2457) for Steam server queries, so forward both as UDP to the host's internal IP. If you set a custom -port, forward that port and the next higher port. With the Crossplay backend no port forwarding is needed because traffic is relayed.
How does crossplay work on a Valheim dedicated server?
Iron Gate's official server guide describes two backends. With the Steam backend you port-forward the default range. With the Crossplay backend (enabled by -crossplay) the server transmits data through a PlayFab relay and uses a join code, which is how console players connect to a community server without port forwarding.
Where are Valheim 1.0 save files stored?
World files live in the IronGate Valheim save directory: worlds_local on Windows (AppData/LocalLow/IronGate/Valheim) and the equivalent path on Linux (~/.config/unity3d/IronGate/Valheim). Each world is a pair - WorldName.db and WorldName.fwl - kept together. Backup the pair rather than the whole install.
Why do my banlist or whitelist entries stop working after 1.0?
Valheim changed the player ID format for bans and whitelists in 1.0. Hotfix 1.0.12 made the old format work again: entries such as Steam_123456789 are now accepted alongside the new V_123456789 format, so servers no longer need to re-add legacy entries.
Can Switch 2 players join my dedicated server?
Not at the moment. The 1.0.12 hotfix could not be uploaded to Switch 2, so crossplay between Switch 2 and other platforms is temporarily unavailable. Steam servers can restore Steam-to-Switch 2 crossplay by selecting the default_old beta branch on the dedicated server tool, at the cost of missing the 1.0.10/1.0.12 fixes; there is no workaround for PlayStation 5 or Xbox to Switch 2.
What do the adminlist, bannedlist, and permittedlist files do?
They are three plain-text files in the save directory that control server access. adminlist.txt grants admin commands (kick, ban, unban, banned) to the listed players. bannedlist.txt blocks the listed players. permittedlist.txt is an allowlist - but as soon as it contains any entry, everyone NOT on it is refused, so a server with one permitted name becomes invite-only. Each holds one Platform User ID per line, in the case-sensitive [Platform]_[UserID] format.