Valheim Server Configuration: Every Setting That Matters

Valheim’s dedicated server is configured in three places, and knowing which is which saves a lot of searching. Almost everything about how the server presents itself and which world it loads is a launch argument passed to the server binary. Who may join and who has admin rights lives in plain-text list files in the server’s data directory. Anything a mod adds is configured in BepInEx config files. There is no single vanilla settings file you edit and restart.

Launch arguments: the main event

The bundled start script that ships with the server is your reference implementation. Copy the launch line into your own script so updates can’t overwrite your settings, then adjust these:

  • The server name — what appears in the browser. Purely cosmetic, but see the password rule below.
  • The port — the game port, 2456 by default. The query port is always the one above it.
  • The world name — the save file to load. If it doesn’t exist, the server creates it on first launch. This is how you switch worlds: change the name and restart.
  • The password — required for a listed server. At least five characters, and it must not appear anywhere inside the server name. Break either rule and the process refuses to start, which reads as a mysterious crash if you’re not watching the console.
  • Public or private — whether the server advertises itself to the browser. Private still accepts direct joins by IP.
  • Headless flags — the arguments that run it with no window and no rendering. Take these verbatim from the bundled script.
  • Crossplay — opt into the cross-platform network. Covered in How to Enable Crossplay on a Valheim Server.

A minimal Linux launch looks like this, with the headless and environment lines lifted from the shipped script:

./valheim_server.x86_64 \
  -nographics -batchmode \
  -name "My Viking World" \
  -port 2456 \
  -world "Midgard" \
  -password "longboat" \
  -public 1

Check the current argument names against your own install rather than any guide. The server binary accepts a help flag that prints the options it actually supports, and the bundled start script is always in sync with the build you downloaded. Argument names do change across patches — particularly the newer ones — and a stale flag is either silently ignored or stops the server from launching. Two minutes reading the shipped script beats an hour debugging a typo you inherited.

World modifiers

Later Valheim builds let you change combat difficulty, resource rates, portal behaviour, death penalties and so on — the same knobs the game exposes as world presets and modifiers when you start a world in single-player. The dedicated server can be launched with those settings applied, and they belong to the world, not the server.

Because the exact argument names and accepted values for modifiers have shifted as the feature developed, get them from your server’s own help output or the bundled script rather than from a blog post. Two things that stay true regardless:

  • Modifiers are per-world and apply to everyone on it. Agree as a group before changing them mid-campaign.
  • A preset is a bundle of individual modifiers. Setting a preset and then overriding one modifier is the usual way to get exactly what you want.

Permission list files

Three plain-text files in the server’s Valheim data directory control access. One SteamID64 per line, nothing else:

  • adminlist.txt — admin rights: kick, ban, and the admin console commands.
  • permittedlist.txt — an allow-list. If it contains any entries, only those players may join. Leave it empty unless you want that behaviour.
  • bannedlist.txt — blocked players.

Where that directory is depends on the platform:

Windows: %USERPROFILE%\AppData\LocalLow\IronGate\Valheim\
Linux:   ~/.config/unity3d/IronGate/Valheim/
Docker:  the mounted config folder on the host

On Linux it’s the home directory of whichever user runs the server — a detail that bites people who change the systemd service user and think their world vanished.

A restart guarantees the files are loaded. Full workflow in How to Whitelist Players on a Valheim Server and How to Kick and Ban Players on a Valheim Server.

World files

Also in that data directory, under worlds_local:

  • <World>.db — the world itself.
  • <World>.fwl — metadata and seed.
  • .old copies — the previous save, kept automatically as a one-step rollback.

Both files travel together. Copying a .db without its .fwl gives you a broken world, and renaming them is how you rename a world — the launch argument has to match the filename. This pair is the only irreplaceable thing on the machine; back it up.

Docker: same settings, different surface

The container images expose the same options as environment variables — server name, world name, password, public flag, plus a pass-through variable for raw server arguments. That pass-through is the escape hatch: anything the image doesn’t wrap, you can still send straight to the binary. Check your image’s own documentation for the current variable names, since they belong to the image rather than to the game, and see Running a Valheim Dedicated Server in Docker on Linux for a working Compose file.

Mod configuration

BepInEx plugins generate their own .cfg files under BepInEx/config on the first modded launch. That’s where you tune stack sizes, carry weight, map behaviour, and everything else a mod adds. Edit, then restart. Nothing about vanilla configuration lives there — Installing Valheim Mods on Your Server with BepInEx covers the layout.

What you can’t configure

Worth knowing before you go looking:

  • There’s no vanilla server.ini. If a guide tells you to edit one, it’s describing a mod or a hosting panel’s own file.
  • Settings aren’t live-reloaded. Launch arguments are read at start. Change, restart.
  • The player cap isn’t a vanilla setting. Valheim’s networking is built around small groups; raising the limit is mod territory, and every client needs the mod too.

A sane routine

  1. Keep your own start script backed up, and re-read the bundled one after every major game update to catch new or renamed options.
  2. Change one setting at a time and restart, so you know what broke.
  3. Write down what you changed — six months later, “why is the death penalty like this?” is a real question with no answer in the files.