Skip to content
Riot Bits

Riot Bits

  • Home
  • News
  • Guides
  • Video Guides
  • Patch Notes
  • Report Abuse
  • Toggle search form
Valheim

Valheim – How to Setup Dedicated Server (Linux)

Posted on 10/15/202110/15/2021 By aidalgol No Comments on Valheim – How to Setup Dedicated Server (Linux)
  • Title: Valheim
  • Release Date: February 2, 2021
  • Developer: Iron Gate AB
  • Publisher: Coffee Stain Publishing

All the guides I have found on setting up a dedicated Valheim server on Linux had gaps in one place or another, so I decided to document my own setup for the benefit of others. This guide is aimed at users wanting to set up the Valheim Dedicated Server on a headless Linux server. If you simply want to run this on an always-on desktop with a graphical login, this guide may not be as useful to you.

This guide is written for Debian 11 (bullseye), but much if not all of it will also apply to Ubuntu, as it is based on Debian. Credit has to go to the Hosting Servers guide on the Valheim Fandom wiki for basic information on how to invoke the server executable, which ports need to be exposed to the outside world, and configuration options.

Install the game via SteamCMD

SteamCMD is basically headless Steam for headless servers. We need it to download the Valheim Dedicated Server.

Set Up Multiarch

SteamCMD is provided by Debian, but as an i386 (32-bit x86) package, so you will need to add the i386 architecture to dpkg on your system to install i386 packages. (For more information see MultiArch/HOWTO on the Debian wiki.) To do this, run the following commands.

$ sudo dpkg --add-architecture
$ sudo apt-get update

Install SteamCMD

Now install SteamCMD itself.

$ sudo apt-get install steamcmd

Set up a Separate User and Group for Steam

It is always best to run services as a dedicated user and group from everything else on your system, so that if a service is compromised, an attacker can only access that service’s files. (We will further harden the Valheim system service later.) Normally you would create a “system” user for system services, but Steam, even the headless SteamCMD, does not seem to behave properly unless it is run in a normal user environment. (See the man page adduser(8) for details on how a system user is different from a normal user.)

Create the steam user with the “adduser” command, disabling logins as we are only going to use this account via “sudo”.

$ sudo adduser --disabled-login steam

Run SteamCMD

Sadly, SteamCMD does not have a very good interface, so this next part will be a bit awkward for those of you already familiar with the Linux command line. Run the commands as follows (command output is omitted.)

$ sudo -iu steam  # Opens a login shell as the "steam" user.  See the man page sudo(8).
$ steamcmd
Steam>login anonymous
Steam>force_install_dir ./valheim/
# The Valheim server has a different appID from the client. Check this link.
Steam>app_update 896660
Steam>quit
^C

If the “quit” command just leaves the program hanging with no prompt, type Ctrl+C to completely quit. This appears to be a bug in SteamCMD.

Now that you have the Valheim Dedicated Server installed, it’s time to set up the service to run it.

Run the Valheim Server via Systemd

The Valheim Dedicated Server comes with a wrapper script to run the server, but we are going to run the server executable directly for our systemd service unit.

The Systemd Unit

Write the following code to the file “/usr/local/lib/systemd/system/valheim.service”.

[Unit]
Description=Valheim Dedicated Server
After=network-online.target

[Service]
Type=exec
User=steam
Group=steam
Environment="LD_LIBRARY_PATH=/home/steam/valheim/linux64" "SteamAppId=892970"
ExecStart=/home/steam/valheim/valheim_server.x86_64 -name "I forgot to name my server" -world "Midgard" -port 2456 -password "secret"

# Security settings
LockPersonality=true
NoNewPrivileges=true
RestrictRealtime=true
RestrictNamespaces=true
SystemCallArchitectures=native
SystemCallFilter=~@obsolete @clock @debug @module @mount @privileged @reboot @setuid @cpu-emulation
CapabilityBoundingSet=
RestrictAddressFamilies=AF_INET AF_INET6
RestrictSUIDSGID=true
PrivateDevices=true
PrivateTmp=true
PrivateMounts=true
PrivateUsers=true
ProtectControlGroups=true
ProtectHome=tmpfs
BindPaths=/home/steam
ProtectKernelModules=true
ProtectKernelTunables=true
ProtectSystem=full
ProtectClock=true
ProtectKernelLogs=true
ProtectProc=invisible
ProtectHostname=true
RemoveIPC=true
InaccessiblePaths=/srv/

A full explanation of the systemd directives used in this unit is beyond the scope of this guide, but for those interested, the relevant man pages are as follows.

  • systemd.unit(5)
  • systemd.service(5)
  • systemd.exec(5)
  • systemd.resource-control(5)

Specifying a World

The “-world” argument is optional; if you leave it out, the server will generate a world for you from a random seed on the first run.

Otherwise, it specifies the name of a world to use, which must exist in the directory “/home/steam/.config/unity3d/IronGate/Valheim/worlds/”. In the systemd unit above, we specify the world named “Midgard”, so there must exist a file named “/home/steam/.config/unity3d/IronGate/Valheim/worlds/Midgard.fwl”. This lets you use a world copied from elsewhere.

If you want to use an existing world from your PC, keeping your progress, you must also copy the corresponding “.db” file to the same location as the “.fwl” file.

If you want to use a new world but with a specific seed, you must create the world with the game client, as the server provides no way of specifying a seed for the initial world creation.

Enabling the Service

That defines the service, but systemd does not know about it until it reloads units. Do this by running

$ sudo systemctl daemon-reload

Then enable it with

$ sudo systemctl enable valheim.service

Now the Valheim server will automatically start on boot, but not until the network is up (that’s what the line “After=network-online.target” does.) To start it now without rebooting, run

$ sudo systemctl start valheim.service

That's everything we are sharing today for this Valheim guide. This guide was originally created and written by aidalgol. In case we fail to update this guide, you can find the latest update by following this link.

If you believe that any of the content on this site violates your rights, including your intellectual property rights, please contact us immediately using our contact form.
Guides Tags:Valheim

Post navigation

Previous Post: Far Cry 6 – How to Get P226 Pistol
Next Post: Herding Dog Achievement Guide

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

  • Title: Valheim
  • Release Date: February 2, 2021
  • Developer: Iron Gate AB
  • Publisher: Coffee Stain Publishing

Disclaimer

All content cited is derived from their respective sources. If you think we have used your content without permission, make sure to reach us and we will be taking it seriously.
  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Service

Copyright © 2025 Riot Bits.

Powered by PressBook News WordPress theme