Valheim
Table of Contents
- Valheim
- Table of Contents
- Running on a bare-metal Linux Server
- Running with Docker
- Docker Compose
- Bundled Tools
- Feature Information
- Guides
- Additional Information
- Sponsors
- Contributors โจ
Did you write a guide? or perhaps an article? Add a PR to have it added here in the readme <3
- How to Transfer Files
- External: Hosting with Dokku? Checkout this guide!
- External: Hosting Valheim on Rocket Pi X
- External: Valheim on AWS
- External: How to host a dedicated Valheim server on Amazon Lightsail
- External: Experience With Valheim Game Hosting With Docker
- External: AWS Cloudformation template using Elastic Container Service with a Spot Instance for cost savings
- Additional Information
- โค๏ธ Sponsors โค๏ธ
- โจ Contributors โจ
Running on a bare-metal Linux Server
From Release
- Navigate to
https://github.com/mbround18/valheim-docker/releases/latest
- Download the
bundle.zip
to your server - Extract the
bundle.zip
- Make the files executable
chmod +x {odin,huginn}
- Optional: Add the files to your path.
- Navigate to the folder where you want your server installed.
- Run
odin configure --password "Your Super Strong Password"
(you can also supply--name "Server Name"
,--port "Server Port"
, or other arguments available.) - Finally, run
odin start
.
More in-depth How-to Article: https://dev.to/mbround18/running-valheim-on-an-linux-server-4kh1
From Source
This repo bundles its tools in a way that you can run them without having to install docker! If you purely want to run this on a Linux based system, without docker, take a look at the links below <3
- Installing & Using Odin The tool Odin runs the show and does almost all the heavy lifting in this repo. It starts, stops, and manages your Valheim server instance.
- Installing & Using Huginn Looking for a way to view the status of your server? Look no further than Huginn! The Huginn project is a http server built on the same source as Odin and uses these capabilities to expose a few http endpoints.
Using the binaries to run on an Ubuntu Server, you will have to be more involved and configure a few things manually. If you want a managed, easy one-two punch to manage your server. Then look at the Docker section <3
Running with Docker
This image does use verion 3+ for all of its compose examples. Please use Docker engine >=20 or make adjustments accordingly.
If you are looking for a guide on how to get started click here
Mod Support! It is supported to launch the server with BepInEx but!!!!! as a disclaimer! You take responsibility for debugging why your server won't start. Modding is not supported by the Valheim developers officially yet; Which means you WILL run into errors. This repo has been tested with running ValheimPlus as a test mod and does not have any issues. See Getting started with mods
Download Locations
DockerHub
GitHub Container Registry
Environment Variables
See further on down for advanced environment variables.
Variable | Default | Required | Description |
---|---|---|---|
PORT | 2456 |
TRUE | Sets the port your server will listen on. Take note it will also listen on +2 (ex: 2456, 2457, 2458) |
NAME | Valheim Docker |
TRUE | The name of your server! Make it fun and unique! |
WORLD | Dedicated |
TRUE | This is used to generate the name of your world. |
PUBLIC | 1 |
FALSE | Sets whether or not your server is public on the server list. |
PASSWORD | <please set me> |
TRUE | Set this to something unique! |
ENABLE_CROSSPLAY | 0 |
FALSE | Enable crossplay support as of Valheim Version >0.211.8 |
TYPE | Vanilla |
FALSE | This can be set to ValheimPlus , BepInEx , BepInExFull or Vanilla |
MODS | <nothing> |
FALSE | This is an array of mods separated by comma and a new line. Click Here for Examples Supported files are zip , dll , and cfg . |
WEBHOOK_URL | <nothing> |
FALSE | Supply this to get information regarding your server's status in a webhook or Discord notification! Click here to learn how to get a webhook url for Discord |
WEBHOOK_INCLUDE_PUBLIC_IP | 0 |
FALSE | Optionally include your server's public IP in webhook notications, useful if not using a static IP address. NOTE: If your server is behind a NAT using PAT with more than one external IP address (very unlikely on a home network), this could be inaccurate if your NAT doesn't maintain your server to a single external IP. |
UPDATE_ON_STARTUP | 1 |
FALSE | Tries to update the server the container is started. |
ADDITIONAL_STEAMCMD_ARGS | `` | FALSE | Sets optional arguments for install |
Container Env Variables
Variable | Default | Required | Description |
---|---|---|---|
TZ | America/Los_Angeles |
FALSE | Sets what timezone your container is running on. This is used for timestamps and cron jobs. Click Here for which timezones are valid. |
PUID | 1000 |
FALSE | Sets the User Id of the steam user. |
PGID | 1000 |
FALSE | Sets the Group Id of the steam user. |
Auto Update
Variable | Default | Required | Description |
---|---|---|---|
AUTO_UPDATE | 0 |
FALSE | Set to 1 if you want your container to auto update! This means at the times indicated by AUTO_UPDATE_SCHEDULE it will check for server updates. If there is an update then the server will be shut down, updated, and brought back online if the server was running before. |
AUTO_UPDATE_SCHEDULE | 0 1 * * * |
FALSE | This works in conjunction with AUTO_UPDATE and sets the schedule to which it will run an auto update. If you need help figuring out a cron schedule click here |
AUTO_UPDATE_PAUSE_WITH_PLAYERS | 0 |
FALSE | Does not process an update for the server if there are players online. |
Auto update job, queries steam and compares it against your internal steam files for differential in version numbers.
Auto Backup
Variable | Default | Required | Description |
---|---|---|---|
AUTO_BACKUP | 0 |
FALSE | Set to 1 to enable auto backups. Backups are stored under /home/steam/backups which means you will have to add a volume mount for this directory. |
AUTO_BACKUP_SCHEDULE | */15 * * * * |
FALSE | Change to set how frequently you would like the server to backup. If you need help figuring out a cron schedule click here. |
AUTO_BACKUP_NICE_LEVEL | NOT SET |
FALSE | Do NOT set this variable unless you are following this guide here |
AUTO_BACKUP_REMOVE_OLD | 1 |
FALSE | Set to 0 to keep all backups or manually manage them. |
AUTO_BACKUP_DAYS_TO_LIVE | 3 |
FALSE | This is the number of days you would like to keep backups for. While backups are compressed and generally small it is best to change this number as needed. |
AUTO_BACKUP_ON_UPDATE | 0 |
FALSE | Create a backup on right before updating and starting your server. |
AUTO_BACKUP_ON_SHUTDOWN | 0 |
FALSE | Create a backup on shutdown. |
AUTO_BACKUP_PAUSE_WITH_NO_PLAYERS | 0 |
FALSE | Will skip creating a backup if there are no players. PUBLIC must be set to 1 for this to work! |
Auto backup job produces an output of a *.tar.gz
file which should average around 30mb for a world that has an average of 4 players consistently building on. You should be aware that if you place the server folder in your saves folder your backups could become astronomical in size. This is a common problem that others have observed, to avoid this please follow the guide for how volume mounts should be made in the docker-compose.yml
.
Scheduled Restarts
Scheduled restarts allow th operator to trigger restarts on a cron job
Variable | Default | Required | Description |
---|---|---|---|
SCHEDULED_RESTART | 0 |
FALSE | Allows you to enable scheduled restarts |
SCHEDULED_RESTART_SCHEDULE | 0 2 * * * |
FALSE | Defaults to everyday at 2 am but can be configured with valid cron |
Docker Compose
This image does use verion 3+ for all of its compose examples. Please use Docker engine >=20 or make adjustments accordingly.
Simple
This is a basic example of a docker compose, you can apply any of the variables above to the
environment
section below but be sure to follow each variables' description notes!
version: "3"
services:
valheim:
image: mbround18/valheim:latest
stop_signal: SIGINT
ports:
- "2456:2456/udp"
- "2457:2457/udp"
- "2458:2458/udp"
environment:
PORT: 2456
NAME: "Created With Valheim Docker"
WORLD: "Dedicated"
PASSWORD: "Banana Phone"
TZ: "America/Chicago"
PUBLIC: 1
volumes:
- ./valheim/saves:/home/steam/.config/unity3d/IronGate/Valheim
- ./valheim/server:/home/steam/valheim
Everything but the kitchen sink
version: "3"
services:
valheim:
image: mbround18/valheim:latest
stop_signal: SIGINT
ports:
- "2456:2456/udp"
- "2457:2457/udp"
- "2458:2458/udp"
environment:
PORT: 2456
NAME: "Created With Valheim Docker"
WORLD: "Dedicated"
PASSWORD: "Strong! Password @ Here"
TZ: "America/Chicago"
PUBLIC: 1
AUTO_UPDATE: 1
AUTO_UPDATE_SCHEDULE: "0 1 * * *"
AUTO_BACKUP: 1
AUTO_BACKUP_SCHEDULE: "*/15 * * * *"
AUTO_BACKUP_REMOVE_OLD: 1
AUTO_BACKUP_DAYS_TO_LIVE: 3
AUTO_BACKUP_ON_UPDATE: 1
AUTO_BACKUP_ON_SHUTDOWN: 1
WEBHOOK_URL: "https://discord.com/api/webhooks/IM_A_SNOWFLAKE/AND_I_AM_A_SECRET"
WEBHOOK_INCLUDE_PUBLIC_IP: 1
UPDATE_ON_STARTUP: 0
volumes:
- ./valheim/saves:/home/steam/.config/unity3d/IronGate/Valheim
- ./valheim/server:/home/steam/valheim
- ./valheim/backups:/home/steam/backups
Bundled Tools
Odin
This repo has a CLI tool called Odin in it! It is used for managing the server inside the container. If you are looking for instructions for it click here: Odin
Click here to see advanced environment variables for Odin
Huginn Http Server
Variable | Default | Required | Description |
---|---|---|---|
ADDRESS | Your Public IP |
FALSE | This setting is used in conjunction with odin status and setting this will stop odin from trying to fetch your public IP |
HTTP_PORT | anything above 1024 |
FALSE | Setting this will spin up a little http server that provides two endpoints for you to call. |
/metrics
provides a prometheous style metrics output./status
provides a more traditional status page.
Note on
ADDRESS
this can be set to127.0.0.1:<your query port>
or<your public ip>:<your query port>
but does not have to be set. If it is set, it will prevent odin from reaching out to aws ip service from asking for your public IP address. Keep in mind, your query port is +1 of what you set in thePORT
env variable for your valheim server.
Another note: your server MUST be public (eg.
PUBLIC=1
) in order for Odin+Huginn to collect and report statistics.
Feature Information
BepInEx Support
As of March 2021 the TYPE variable can be used to automatically install BepInEx. For details see Getting started with mods.
Webhook Support
This repo can automatically send notifications to discord via the WEBHOOK_URL variable. Only use the documentation link below if you want advanced settings!
Click Here to view documentation on Webhook Support
Guides
How to Transfer Files
This is a tutorial of a recommended path to transfering files. This can be done to transfer world files between hosts, transfer BepInEx configs, or even to transfer backups.
Click Here to view the tutorial of how to transfer files.
How to access your container in docker
docker exec -it $CONTAINER_NAME gosu steam bash
Additional Information
Discord Release Notifications
If you would like to have release notifications tied into your Discord server, click here:
Note: The discord is PURELY for release notifications and any + all permissions involving sending chat messages has been disabled. Any support for this repository must take place on the Discussions.
Versions
- latest (Stable): Mod support! and cleaned up the code base.
- 1.4.x (Stable): Webhook for discord upgrade.
- 1.3.x (Stable): Health of codebase improvements.
- 1.2.0 (Stable): Added additional stop features and sig for stopping.
- 1.1.1 (Stable): Patch to fix arguments
- 1.1.0 (Unstable): Cleaned up image and made it faster
- 1.0.0 (Stable): It works!
Sponsors
Contributors โจ
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!