Valheim Server Configuration Guide

Valheim Server Settings: Launch Arguments, World Modifiers, Save Location and Ports

Published 2026-10-03 12 min read Valheim 1.0 dedicated server

A Valheim dedicated server has no settings file. Everything is set by arguments on its start line, plus three small text files that decide who is an admin, who is banned and who may join. This guide goes through every argument in Iron Gate's server manual, what each world modifier and preset really changes, where the world is saved and how to move one in, and which ports matter with and without crossplay.

Which version this covers. Valheim left Early Access with version 1.0 on 9 September 2026, and 1.0 changed how worlds are saved. Everything here was checked on dedicated server 1.0.16 installed with SteamCMD (app 896660) on Linux, against the Valheim Dedicated Server Manual PDF that ships with the server and Iron Gate's patch notes. Where we write "in our test", we started that server and looked at what it did.

The Start Line

On Windows the server is started by start_headless_server.bat, and on Linux by start_server.sh, both in the server's install folder. The Linux script that ships with 1.0.16 starts the server with this line:

./valheim_server.x86_64 -name "My server" -port 2456 -world "Dedicated" -password "secret" -crossplay

Steam resets both scripts every time the server updates, so the manual tells you to make a copy, edit the copy and start the server from it. Note that the shipped script already includes -crossplay; if you want a Steam-only server, remove it (see ports below).

Every Launch Argument

Argument Default What it does
-name "My server" – The name shown in the server list.
-port 2456 2456 The game port. The server uses this port and the next one (2456 and 2457 by default). On a crossplay server the number is still used to tell apart servers that share a public IP.
-world "Dedicated" – The world to load. If no world with that name exists, a new one is created with a random seed.
-password "secret" – The password players must enter. Iron Gate's start script states the rules: at least 5 characters, and the password can't be contained in the server name.
-public 1 1 1 lists the server in the in-game browser. 0 hides it; players then join with Join IP. The manual suggests 0 for a LAN server.
-savedir [path] see below Where worlds and the admin, ban and permitted lists are stored.
-logFile "path" – Writes the server log to this file.
-saveinterval 1800 1800 Seconds between world saves (30 minutes).
-backups 4 4 How many automatic backups to keep. The first is taken at the short interval, the rest at the long one: by default one backup 2 hours old and three 12 hours apart.
-backupshort 7200 7200 Seconds before the first automatic backup (2 hours).
-backuplong 43200 43200 Seconds between the later automatic backups (12 hours).
-crossplay off Runs the server on the crossplay backend (PlayFab), so players on every platform can join. Without it the Steam backend is used and only Steam players can see and join the server.
-instanceid "1" – Only for several servers on the same port from the same machine (same MAC address): give each a different value so each gets its own PlayFab ID.
-preset hard – Applies a world modifier preset. Valid values: Normal, Casual, Easy, Hard, Hardcore, Immersive, Hammer.
-modifier raids none – Sets one world modifier. Repeat it for each modifier you want to change.
-setkey nomap – Turns on one world modifier checkbox. Repeat it for each one.

The values in the Default column are the ones the manual gives. The community wiki's example start lines also add -nographics -batchmode.

The password rules are not enforced for you

In our test, 1.0.16 started normally with a 3-character password and printed no warning. The server will not stop you from breaking the rules, so follow them yourself: 5 or more characters, and nothing that appears in the server name.

World Modifiers: Presets, Modifiers and Checkboxes

These three arguments set the same options as the World Modifiers screen in the game. A modifier is stored in the world as a "global key", and a key at 100 means normal. To see exactly what each value does, we started a 1.0.16 server with each value and read the keys it saved into the world.

-modifier: the five sliders

Modifier Values What the server stored
combat veryeasy, easy, hard, veryhard veryeasy: player damage 125, enemy damage 50, enemy speed and size 90
easy: player damage 110, enemy damage 75, enemy speed and size 95
hard: player damage 85, enemy damage 150, enemy speed and size 110, enemy level-up rate 120
veryhard: player damage 70, enemy damage 200, enemy speed and size 120, enemy level-up rate 140
deathpenalty casual, veryeasy, easy, hard, hardcore casual: equipped items are kept, skill loss rate 15
veryeasy: skill loss rate 15
easy: skill loss rate 50
hard: unequipped items are deleted, skill loss rate 150
hardcore: all items are deleted and all skills reset
resources muchless, less, more, muchmore, most Resource rate 50, 75, 150, 200 and 300 (0.5x to 3x).
raids none, muchless, less, more, muchmore Event rate 0, 200, 150, 60 and 30. A higher event rate means more time between raids; 0 turns raids off.
portals casual, hard, veryhard casual: every item can go through portals, ores and metals included
hard: portals can't be used near an active boss
veryhard: no portals at all

The manual lists no "normal" value for a single modifier: normal is simply the absence of the key. To put everything back to normal, use -preset normal (below).

-setkey: the checkboxes

Key Effect
nobuildcostBuilding costs no materials.
playereventsRaids are chosen by each player's own progress rather than by which bosses have been killed on the server.
passivemobsEnemies don't attack until provoked.
nomapNo map or minimap.
noportalsNo portals. Not in the manual's list of -setkey values, but 1.0.16 accepted it and stored the key; it is the same key -modifier portals veryhard sets.

-preset: bundles of the above

Preset What it set in our test
normalClears every modifier back to normal.
casualCombat very easy, death penalty casual, resources more, raids none, portals casual, plus passive enemies and player-based raids.
easyCombat easy, raids less.
hardCombat hard, raids more.
hardcoreCombat very hard, death penalty hardcore, raids more, portals hard, no map.
immersiveNo map, no portals, and fire hazards (wood can catch fire and spread).
hammerNo build cost, passive enemies, raids none.

Three rules, all of which we confirmed on 1.0.16:

Where the World Is Saved

Without -savedir, the manual gives these default save folders:

System Default save folder
Windows%USERPROFILE%\AppData\LocalLow\IronGate\Valheim
Linux~/.config/unity3d/IronGate/Valheim

Inside it, worlds live in worlds_local, and adminlist.txt, bannedlist.txt and permittedlist.txt sit directly in the save folder. With -savedir, the same layout is created under the path you give.

The 1.0 save format

Before 1.0, a world was two files in worlds_local: MyWorld.fwl (name and seed) and MyWorld.db (everything that changed). 1.0 introduced a new save system that, in Iron Gate's words, "splits world data across chunks" and is "designed to be resilient against mid-write failures". On 1.0.16 a world is a folder:

worlds_local/ MyWorld/ _main.1.fwl2 name, seed and world modifiers _main.1.db2 _main.1.chunks _main.1.ok 00_00__0_1.chunk

The number goes up as the server saves again. Copy or back up the whole MyWorld folder, never single files out of it.

An older world still in the two-file format is converted the first time 1.0 loads it. In our test, 1.0.16 loaded a world made by the last pre-1.0 server, and on its first save wrote the new OldWorld folder and moved the original pair aside as OldWorld_backup_ plus a date and time, .fwl and .db, in worlds_local. Keep that backup. The early 1.0 conversion lost the level and variant of items on item and armour stands; Iron Gate fixed it in patch 1.0.12, so a world converted on 1.0.12 or later converts correctly.

Moving a single-player world onto the server

The world's modifiers travel with it: they are stored in the world, so you don't need to repeat them as arguments.

Admins, Bans and the Permitted List

The server creates three text files in its save folder. Each starts with a comment line, and you add one player ID per line below it:

File What it does
adminlist.txtPlayers who can use the admin console commands.
bannedlist.txtPlayers who can't join.
permittedlist.txtA whitelist. As soon as one player is on it, everyone else is banned.

The manual gives the ID format as [Platform]_[User ID], case-sensitive, for example Steam_ followed by the player's 17-digit Steam ID. You can read a player's ID from the server log, or in game from the F2 panel. 1.0 also introduced IDs that start with V_; patch 1.0.12 fixed the ban list and permitted list so that both the new form and the old Steam_ form work.

An admin presses F5 in game to open the console. The admin commands the manual lists are kick [name], ban [name], unban [name] and banned (lists banned players).

Ports, Port Forwarding and Crossplay

Steam backend (no -crossplay)

Players connect straight to your server, so the ports have to be reachable from the internet. Forward UDP 2456 and 2457, or your -port and the port after it, to the server, and allow them in its firewall. In our test, 1.0.16 listened on the game port over UDP (IPv4 and IPv6) and on the next port over UDP (IPv4), and on nothing else that needs forwarding. The second port was open even with -public 0.

2458?

A comment in the shipped start_server.sh says to forward 2456–2458. The manual says 2456–2457, and in our test nothing listened on 2458. Forwarding it does no harm, but it isn't needed.

Crossplay backend (-crossplay)

The server sends its traffic through a relay server, so the manual says no port forwarding is needed. Players can join with the server's public IP and port, with a join code, or from the server list. They can't join with a local (LAN) IP or a loopback address such as 127.0.0.1, which catches out people testing from the same house. Without -crossplay only Steam players can join, so anyone playing on another platform needs a crossplay server.

Valheim is built for 1 to 10 players on a server, and Iron Gate's 1.0 FAQ says that hasn't changed with 1.0.

Classic Pitfalls

1. Editing the shipped start script

Steam overwrites start_server.sh and start_headless_server.bat on every update, and your settings go with them. Edit a copy.

2. A password that breaks the rules

Under 5 characters, or contained in the server name (server "Vikings", password "Vikings123"). The server starts anyway, so nothing tells you. Pick a password that has nothing to do with the name.

3. -preset after -modifier

The preset wipes the modifiers you set before it. Always preset first, then modifiers.

4. Removing an argument and expecting the world to change back

Modifiers are saved in the world. Start once with -preset normal to clear them, then add back the ones you want.

5. Testing a crossplay server by LAN IP

A crossplay server can't be reached by a local or loopback IP. Use the public IP and port, or the join code.

6. Copying half a world

On 1.0, copy the whole world folder. For an old two-file world, the .fwl and .db belong together. And -world takes the world name, not the seed.

7. A permitted list with one name on it

Adding one player to permittedlist.txt turns it into a whitelist and locks out everyone not on it, the admin included if they forgot themselves.

8. Closing the window with the X

The manual says to stop the server with Ctrl+C. Closing the window may leave the server running in the background.

9. Forgetting to update the server

The dedicated server is a separate Steam app. When the game updates, update the server too; players can't join a server running a different version.

Skip the Hand-Editing

NodeMesh runs your Valheim server on your own PC or server, and its Config tab sets the start-line arguments for you as form fields: server name, world name, password, whether the server is listed, the difficulty preset, the five world modifiers (combat, death penalty, resources, raids, portals), the five checkboxes (no map, no portals, no build cost, passive enemies, player-based raids), the save interval, the number of backups and both backup intervals, and crossplay. NodeMesh puts -preset before the modifiers on the start line for you. You save, then restart from the same page.

NodeMesh starts the server with -savedir pointing at a save folder inside the server's own folder, so the world is in save/worlds_local and adminlist.txt, bannedlist.txt and permittedlist.txt are in save. Those lists are not Config-tab fields; edit them in the Files tab.

Run your Valheim server without editing start scripts

Host Valheim on your own hardware. NodeMesh's Config tab sets the arguments and world modifiers for you.

Start hosting with NodeMesh