Sep 4, 2024 3 min read

Valheim Server: The Ultimate Guide to Self-Hosting

Valheim Server: The Ultimate Guide to Self-Hosting
Table of Contents

Valheim Server is a dedicated game server for the popular survival game Valheim. Self-hosting a Valheim Server allows you to control your gaming environment, customize server settings, and ensure data control while enjoying multiplayer gameplay with friends or community members. In this guide, we’ll walk you through installing, configuring, managing, and optimizing Valheim Server, with a focus on actionable steps and hands-on examples.

Installing Valheim Server

πŸ“¦ Docker/Docker Compose Setup

A Docker-based setup is the most efficient way to deploy Valheim Server. Below is a docker-compose.yml file tailored to Valheim Server.


version: '3.8'

services:

valheim:

image: lloesche/valheim-server

container_name: valheim-server

ports:

- "2456-2458:2456-2458/udp"

environment:

- VALHEIM_SERVER_NAME=YourServerName

- VALHEIM_SERVER_PASS=YourSecurePassword

- VALHEIM_SERVER_PORT=2456

volumes:

- ./valheim-data:/config

restart: unless-stopped

To deploy the server, run the following commands:


mkdir valheim-server && cd valheim-server

nano docker-compose.yml  # Paste the YAML content above

docker-compose up -d

This will spin up a Valheim Server container with persistent data storage in the valheim-data directory.

πŸš€ Manual Installation

For a manual installation directly on a Linux server, follow these steps:

  1. Install required dependencies:

sudo apt update

sudo apt install -y steamcmd wget unzip

  1. Create a directory for Valheim Server:

mkdir ~/valheim-server && cd ~/valheim-server

  1. Download and install the Valheim Dedicated Server:

steamcmd +login anonymous +force_install_dir ~/valheim-server +app_update 896660 validate +quit

  1. Launch the server:

cd ~/valheim-server

./start_server.sh -name "YourServerName" -port 2456 -world "YourWorldName" -password "YourSecurePassword"

This will start the server using the specified parameters.

Configuring Nginx as a Reverse Proxy

🌐 Nginx Configuration

Set up Nginx as a reverse proxy to route traffic to your Valheim Server. Create an Nginx configuration file:


sudo nano /etc/nginx/sites-available/valheim

Add the following content:


server {

listen 80;

server_name yourdomain.com;

location / {

proxy_pass http://127.0.0.1:2456;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

}

}

Enable the site and reload Nginx:


sudo ln -s /etc/nginx/sites-available/valheim /etc/nginx/sites-enabled/

sudo nginx -t

sudo systemctl reload nginx

πŸ”’ SSL/TLS Setup

Secure your server with a Let's Encrypt SSL certificate:


sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d yourdomain.com

Set up automatic renewal of certificates:


sudo systemctl reload nginx

πŸ› οΈ Testing and Reloading Nginx

Verify the configuration and reload Nginx:


sudo nginx -t

sudo systemctl reload nginx

Logging and Debugging Valheim Server

πŸ—ƒοΈ Enabling Debug Logs

To enable debug logs, edit the server start command or Docker environment variables:


./start_server.sh -name "YourServerName" -logfile "valheim_log.txt"

For Docker Compose, add -logfile /config/logs/valheim_log.txt to the VALHEIM_ARGS environment variable.

πŸ“„ Viewing Logs

To view logs in Docker:


docker logs -f valheim-server

For manual installations:


tail -f ~/valheim-server/valheim_log.txt

πŸ› οΈ Troubleshooting Common Issues

  • Ports not open: Ensure the correct UDP ports (2456-2458) are open in your firewall:

sudo ufw allow 2456:2458/udp

  • Server crashes: Check logs for errors and inspect system resource usage.

πŸ“€ Exporting Logs

Export logs for advanced analysis:


scp ~/valheim-server/valheim_log.txt user@remote-server:/path/to/logs

Backup and Restore

πŸ—‚οΈ File-Based Backups

Back up your Valheim data directory:


tar -czvf valheim-backup.tar.gz ~/valheim-server

πŸ”„ Database Backups

If you use mods that rely on databases, back up the database file:


cp ~/valheim-server/config/db.sqlite ~/backups/db_backup.sqlite

πŸ“… Automated Backup Scripts

Automate backups with a cron job:


crontab -e

Add the following line:


0 3 * * * tar -czvf ~/backups/valheim-$(date +\%F).tar.gz ~/valheim-server

Updating and Upgrading Valheim Server

⬆️ Updating Docker Images

Pull the latest Docker image and redeploy:


docker-compose pull

docker-compose up -d

πŸ› οΈ Manual Updates

For manual installations, use SteamCMD:


steamcmd +login anonymous +force_install_dir ~/valheim-server +app_update 896660 validate +quit

πŸ” Checking for Updates

Set up a script to check for updates:


steamcmd +login anonymous +app_info_update 1 +app_info_print 896660 +quit

Leveraging Valheim Server’s Unique Features

πŸ”§ Enabling APIs

To enable mods or integrate APIs, use Valheim Plus. Download and configure it:


wget https://github.com/valheimPlus/ValheimPlus/releases/latest/download/ValheimPlus.zip

unzip ValheimPlus.zip -d ~/valheim-server/BepInEx

🌟 Advanced Configurations

Modify server parameters in start_server.sh or Docker Compose for custom gameplay, such as increasing world size or changing game difficulty.

Wrapping Up

In this guide, we covered installation, configuration, logging, backups, updates, and advanced features of Valheim Server. Self-hosting provides unparalleled customization and control, enabling you to create an optimized multiplayer environment for your needs. Start implementing these steps today to harness the full potential of your Valheim Server!

Great! You’ve successfully signed up.
Welcome back! You've successfully signed in.
You've successfully subscribed to Selfhosted Ninja.
Your link has expired.
Success! Check your email for magic link to sign-in.
Success! Your billing info has been updated.
Your billing was not updated.