Game Server Hosting im Home Lab: Valheim mit Docker & Proxmox
Dein eigener Valheim-Server mit Docker: Unabhängig von Server-Abschaltungen
Moin, liebe Home-Lab-Enthusiasten und Admins! Wer von uns kennt es nicht? Man verbringt Stunden in einem Online-Spiel, baut Welten auf, knüpft Kontakte – und dann kommt die Hiobsbotschaft: Die Server werden abgeschaltet. Erst kürzlich traf es wieder ein Spiel wie "Firewall Ultra", und das ist nur ein Beispiel in einer langen Reihe. Diese Nachrichten sind für mich immer wieder ein Weckruf, wie wichtig es ist, die Kontrolle über die eigene Infrastruktur und die eigenen Daten zu behalten. Gerade im Gaming-Bereich, wo man oft an kommerzielle Anbieter gebunden ist, fühlt sich das manchmal wie ein Schlag ins Gesicht an.
Aber hey, wir sind hier bei smoth.me, und wir lassen uns nicht entmutigen! Statt zu lamentieren, handeln wir. In meiner Erfahrung ist die beste Antwort auf solche Abhängigkeiten das Self-Hosting. Warum sollte man sich auf Dritte verlassen, wenn man mit den richtigen Tools und etwas Know-how seinen eigenen, stabilen Game-Server betreiben kann? Genau das schauen wir uns heute an: Wie du einen eigenen Valheim-Server auf deiner Proxmox-Umgebung mit Docker zum Laufen bringst. Valheim ist ein fantastisches Survival-Spiel, das sich hervorragend für ein privates Server-Setup eignet und uns alle notwendigen Schritte für ein allgemeines Game-Server-Hosting-Szenario lehrt.
Mein Ziel ist es, dir einen praxisnahen Guide an die Hand zu geben, der dir nicht nur die Befehle zum Kopieren liefert, sondern auch erklärt, warum wir bestimmte Dinge tun. So bist du bestens gerüstet, um auch andere Game-Server oder Dienste in deinem Home Lab zu hosten.
Voraussetzungen: Was du mitbringen solltest
Bevor wir loslegen, lass uns kurz klären, was du für dieses Projekt benötigst. Keine Sorge, es sind die üblichen Verdächtigen, die in jedem guten Home Lab zu finden sind:
- Ein Proxmox VE Host: Das ist unsere Basis. Ob ein alter PC, ein kleiner Server oder ein NUC – Hauptsache, Proxmox läuft stabil.
- Eine VM oder ein LXC auf Proxmox: Ich persönlich bevorzuge für Game-Server eine dedizierte Ubuntu Server (LTS) VM. LXCs sind zwar ressourcenschonender, aber für Game-Server, die oft spezifische Kernel-Module oder komplexere Dateisystem-Zugriffe benötigen, bietet eine VM mehr Isolation und Kompatibilität. Für Valheim würde ein LXC mit `unprivileged` und `nesting` funktionieren, aber eine VM ist der "sichere" Weg. Ich gehe hier von einer VM aus.
- Grundkenntnisse Linux Shell: Du solltest dich auf der Kommandozeile wohlfühlen, wissen, wie man Dateien editiert (z.B. mit Nano oder Vim) und grundlegende Befehle wie `apt update` oder `ls` kennt.
- Grundlagen Docker und Docker Compose: Keine Angst, du musst kein Docker-Experte sein, aber ein Verständnis für Images, Container, Volumes und Ports ist hilfreich. Wir werden Docker Compose nutzen, um das Setup zu vereinfachen.
- Ausreichend Ressourcen: Valheim ist nicht extrem hungrig, aber unterschätze es nicht, besonders wenn mehrere Spieler gleichzeitig online sind.
- RAM: Mindestens 4 GB für die VM, besser 6-8 GB, wenn du noch andere Dinge darauf laufen lassen willst oder viele Spieler erwartest.
- CPU: Mindestens 2 Cores, besser 4 Cores, die du der VM zuweist.
- Speicher: 20-30 GB SSD-Speicherplatz sollten ausreichen, da das Spiel selbst und die Savegames nicht gigantisch sind. SSD ist hier wichtig für Performance.
- Netzwerkkonfiguration: Du benötigst eine statische IP-Adresse für deine VM und die Möglichkeit, Port-Forwardings auf deinem Router einzurichten, damit deine Freunde von außen auf den Server zugreifen können.
Wenn du diese Punkte abhaken kannst, bist du bestens vorbereitet. Los geht's!
Schritt-für-Schritt-Anleitung: Dein Valheim-Server entsteht
Wir bauen das Ganze systematisch auf. Zuerst die VM, dann Docker, und schließlich den Valheim-Server selbst.
1. Die Game-Server-VM auf Proxmox vorbereiten
Als Erstes erstellen wir eine neue VM in Proxmox. Ich empfehle hier ein schlankes Ubuntu Server LTS Image. Lade dir das aktuelle ISO herunter und lade es in deinen Proxmox Storage.
VM erstellen und konfigurieren:
- Klicke in Proxmox auf "VM erstellen".
- General: Gib deiner VM einen Namen, z.B.
valheim-server. - OS: Wähle dein Ubuntu Server ISO aus.
- System: Standardeinstellungen sind meist okay.
- Disks: Wähle 30 GB (SSD, falls verfügbar) und setze das Cache-Mode auf "Write back" für bessere Performance.
- CPU: Weise 4 Cores zu.
- Memory: Stelle 6144 MB (6 GB) RAM ein.
- Network: Nutze das Bridged-Netzwerk (
vmbr0), damit die VM eine eigene IP bekommt.
Starte die VM und installiere Ubuntu Server. Während der Installation solltest du SSH aktivieren, das spart dir später die Proxmox-Konsole. Nach der Installation meldest du dich per SSH an.
ssh deinuser@deine-vm-ip
System aktualisieren und vorbereiten:
Zuerst bringen wir das System auf den neuesten Stand und installieren ein paar nützliche Tools.
sudo apt update
sudo apt upgrade -y
sudo apt install -y curl git nano ufw
Wichtig zu wissen: `ufw` (Uncomplicated Firewall) werden wir später nutzen, um die VM selbst abzusichern.
2. Docker und Docker Compose installieren
Jetzt kommt Docker ins Spiel. Ich nutze immer die offizielle Installationsanleitung, um die neueste Version zu bekommen und Abhängigkeiten korrekt zu handhaben.
Docker Engine installieren:
# Alte Versionen deinstallieren (falls vorhanden)
for pkg in docker.io docker-doc docker-compose docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin; do sudo apt remove $pkg; done
# Docker GPG-Key hinzufügen
sudo apt update
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Docker Repository hinzufügen
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
# Docker installieren
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Nach der Installation solltest du deinen Benutzer zur Docker-Gruppe hinzufügen, damit du `docker`-Befehle ohne `sudo` ausführen kannst. Danach musst du dich einmal ab- und wieder anmelden.
sudo usermod -aG docker $USER
Teste die Installation:
docker run hello-world
Wenn du die "Hello from Docker!"-Nachricht siehst, ist Docker erfolgreich installiert.
3. Valheim Server mit Docker Compose einrichten
Wir nutzen das hervorragende Docker-Image von `lloesche/valheim-server`. Dieses Image ist gut gepflegt und bietet viele Konfigurationsmöglichkeiten über Umgebungsvariablen.
Verzeichnisstruktur erstellen:
Ich lege gerne ein dediziertes Verzeichnis für jeden Dienst an. Das hält alles schön organisiert.
mkdir -p ~/valheim-server
cd ~/valheim-server
docker-compose.yml erstellen:
Jetzt kommt der Kern der Konfiguration. Erstelle eine Datei namens `docker-compose.yml` in diesem Verzeichnis:
nano docker-compose.yml
Füge folgenden Inhalt ein:
version: '3.8'
services:
valheim:
image: lloesche/valheim-server:latest
container_name: valheim-server
cap_add:
- NET_ADMIN # Benötigt für UPnP, wenn aktiviert
ports:
- "2456:2456/udp"
- "2457:2457/udp"
- "2458:2458/udp"
environment:
# Allgemeine Server-Einstellungen
- SERVER_NAME=smoth.me-Valheim
- WORLD_NAME=smothworld
- SERVER_PASSWORD=dein_sicheres_passwort # ÄNDERN!
- SERVER_PUBLIC=1 # 1 für öffentlich, 0 für privat (nicht in der Serverliste sichtbar)
- SERVER_PORT=2456 # Standard-Port, nicht ändern, wenn du keine Ahnung hast
# Admin-Benutzer (Steam64 ID)
- ADMIN_STEAMIDS=DEINE_STEAM64_ID_HIER # Optional: Kommagetrennte Liste von Steam64 IDs für Admins
# Server-Backup-Einstellungen
- BACKUP_INTERVAL=3600 # Sekunden (1 Stunde)
- BACKUP_AMOUNT=24 # Anzahl der Backups
# Weitere Einstellungen
- TZ=Europe/Berlin # Zeitzone
- RESTART_IF_NOT_FOUND=true # Server neustarten, wenn nicht in der Serverliste gefunden
- AUTO_UPDATE=true # Server automatisch updaten (kann zu Downtime führen)
volumes:
- ./data:/config # Hier werden Savegames und Konfigurationsdateien gespeichert
restart: unless-stopped
stop_grace_period: 2m
Erklärung der Parameter:
image: lloesche/valheim-server:latest: Wir nutzen das aktuellste Image des Valheim-Servers.container_name: valheim-server: Ein sprechender Name für unseren Container.cap_add: - NET_ADMIN: Manchmal nötig für bestimmte Netzwerkfunktionen innerhalb des Containers, z.B. UPnP.ports:: Hier mappen wir die Ports. Valheim benötigt standardmäßig 2456-2458 UDP.2456:2456/udp: Der Haupt-Game-Port.2457:2457/udp: Der Query-Port.2458:2458/udp: Der Port für Steamworks-Kommunikation.
environment:: Hier konfigurieren wir den Server selbst.SERVER_NAME,WORLD_NAME,SERVER_PASSWORD: Selbsterklärend. Ändere das Passwort!SERVER_PUBLIC=1: Setzt den Server auf öffentlich, sodass er in der Serverliste erscheint. Für einen privaten Server auf0setzen.ADMIN_STEAMIDS: Mein Tipp: Füge hier unbedingt deine Steam64 ID ein! Du findest deine ID z.B. auf steamid.io. Damit kannst du Ingame-Admin-Befehle nutzen.BACKUP_INTERVAL,BACKUP_AMOUNT: Wichtige Einstellungen für automatische Backups. Der Server sichert deine Welt regelmäßig.TZ: Setze deine Zeitzone.AUTO_UPDATE: Ich lasse das persönlich auf `true`. Der Server wird dann beim Start automatisch aktualisiert. Bedenke, dass das bei einem laufenden Server zu einer kurzen Unterbrechung führt, wenn du ihn neu startest.
volumes: - ./data:/config: Wichtig zu wissen: Hier werden deine Weltdaten und Konfigurationsdateien gespeichert. Das `data`-Verzeichnis wird im gleichen Ordner wie deine `docker-compose.yml` erstellt. Wenn du den Container löschst, bleiben deine Daten erhalten!restart: unless-stopped: Der Container startet automatisch neu, es sei denn, du stoppst ihn manuell. Perfekt für Server-Uptime.
Server starten:
Wenn deine `docker-compose.yml` fertig ist, kannst du den Server starten:
docker compose up -d
Der `-d` Parameter sorgt dafür, dass der Container im Hintergrund läuft (detached mode). Der erste Start kann etwas dauern, da das Docker-Image heruntergeladen und der Valheim-Server initialisiert wird.
Du kannst den Status des Containers überprüfen mit:
docker ps
Und die Logs ansehen, um den Startvorgang zu verfolgen oder Probleme zu debuggen:
docker compose logs -f valheim
Wenn alles gut geht, solltest du im Log sehen, dass der Server gestartet ist und auf Verbindungen wartet.
4. Netzwerkkonfiguration
Damit deine Freunde auf deinen Server zugreifen können, müssen die Ports nicht nur im Docker-Container, sondern auch auf deiner VM und deinem Router geöffnet sein.
Firewall auf der VM (UFW):
Wir haben `ufw` bereits installiert. Jetzt konfigurieren wir es:
sudo ufw allow 22/tcp # SSH
sudo ufw allow 2456/udp
sudo ufw allow 2457/udp
sudo ufw allow 2458/udp
sudo ufw enable
sudo ufw status
Bestätige die Aktivierung mit `y`. `ufw status` sollte dir zeigen, dass die Regeln aktiv sind.
Port-Forwarding auf deinem Router:
Dieser Schritt ist stark Router-abhängig. Logge dich in die Admin-Oberfläche deines Routers ein (meist über die IP-Adresse des Routers im Browser, z.B. `192.168.1.1`). Suche nach den Einstellungen für "Port-Forwarding", "NAT" oder "Freigaben".
Erstelle für die folgenden Ports jeweils eine Weiterleitung auf die interne IP-Adresse deiner Valheim-VM:
- Port:
2456, Protokoll:UDP - Port:
2457, Protokoll:UDP - Port:
2458, Protokoll:UDP
Wichtig zu wissen: Stelle sicher, dass deine VM eine statische IP-Adresse hat, entweder direkt in der VM oder über eine DHCP-Reservierung in deinem Router. Sonst kann sich die IP ändern und das Port-Forwarding geht ins Leere.
5. Server-Management: Updates und Backups
Der Server läuft! Aber ein guter Admin weiß, dass die Arbeit hier nicht endet.
Updates:
Da wir `AUTO_UPDATE=true` gesetzt haben, aktualisiert sich der Valheim-Server selbst, wenn du den Docker-Container neu startest. Für Docker-Image-Updates musst du das Image pullen und den Container neu erstellen:
cd ~/valheim-server
docker compose pull valheim # Zieht das neueste Image
docker compose up -d --force-recreate # Erstellt den Container neu mit dem neuen Image
Backups:
Die automatischen Backups, die wir über die Umgebungsvariablen konfiguriert haben, werden im `data`-Verzeichnis deiner VM unter `/config/backups` gespeichert. Mein Tipp: Sorge dafür, dass dieses `data`-Verzeichnis regelmäßig auf ein externes Speichermedium oder in die Cloud gesichert wird! Ein Proxmox Backup der gesamten VM oder ein Cronjob, der das `data`-Verzeichnis zippt und wegkopiert, sind hier gute Optionen. Verlorene Spielstände sind frustrierender als jede Server-Abschaltung.
Häufige Fehler und Lösungen
In meiner Erfahrung gibt es ein paar Stolpersteine, über die man beim Einrichten eines Game-Servers immer wieder stolpert. Hier sind die häufigsten und wie du sie löst:
1. Freunde können sich nicht verbinden (Verbindungstimeout)
Das ist der Klassiker und fast immer ein Netzwerkproblem.
- Problem: Der Server ist gestartet, aber niemand kann sich verbinden.
- Lösung:
- VM-Firewall prüfen: Hast du `ufw` auf deiner VM aktiviert und die Ports 2456-2458 UDP freigegeben? (`sudo ufw status`)
- Router Port-Forwarding: Sind die Ports 2456-2458 UDP auf die korrekte interne IP-Adresse deiner Valheim-VM weitergeleitet? Überprüfe das doppelt.
- Öffentliche IP: Gib deinen Freunden die korrekte öffentliche IP-Adresse deines Heimnetzwerks. Du findest diese z.B. über "Wie ist meine IP" auf Google.
- ISP-Einschränkungen: Manche ISPs blockieren bestimmte Ports oder bieten kein echtes Dual-Stack Lite an, was das Port-Forwarding erschwert. Das ist seltener, aber möglich. Ein Blick in die Router-Einstellungen oder ein Anruf beim Provider kann Aufschluss geben.
2. Server startet nicht oder stürzt direkt ab
Wenn der Container nicht startet oder sofort beendet wird.
- Problem: `docker ps` zeigt den Container nicht an oder er ist im Status "Exited".
- Lösung:
- Logs prüfen: Das Wichtigste ist, die Logs des Containers zu lesen: `docker compose logs valheim`. Hier findest du meist den genauen Fehlergrund.
- Umgebungsvariablen: Oft sind Tippfehler oder fehlende Werte in den Umgebungsvariablen in der `docker-compose.yml` die Ursache. Überprüfe besonders `SERVER_PASSWORD` und `WORLD_NAME`.
- Ressourcenmangel: Wenn die VM nicht genug RAM oder CPU hat, kann der Server nicht starten. Überprüfe die Auslastung deiner VM in Proxmox.
- Dateiberechtigungen: Manchmal hat der Docker-Prozess keine Schreibrechte im Volume-Verzeichnis (`./data`). Das Image `lloesche/valheim-server` ist hier aber meist robust und läuft als non-root User im Container, was solche Probleme minimiert.
3. Server erscheint nicht in der Serverliste / "Keine Verbindung möglich" im Spiel
Der Server läuft, aber das Spiel findet ihn nicht oder kann keine Verbindung aufbauen.
- Problem: Spieler können den Server nicht über die Serverliste finden oder direkt via IP keine Verbindung aufbauen.
- Lösung:
- SERVER_PUBLIC: Prüfe, ob `SERVER_PUBLIC=1` in deiner `docker-compose.yml` gesetzt ist, wenn der Server öffentlich sein soll.
- Direkte Verbindung: Versucht, euch direkt über die öffentliche IP und den Port (z.B. `deine.oeffentliche.ip:2456`) zu verbinden, anstatt über die Serverliste. Manchmal dauert es eine Weile, bis der Server in der Steam-Serverliste erscheint.
- Server-Passwort: Stelle sicher, dass das Passwort im Spiel exakt mit `SERVER_PASSWORD` übereinstimmt.
- Steam64 ID: Wenn du `ADMIN_STEAMIDS` gesetzt hast, prüfe, ob deine ID korrekt ist. Falsche IDs führen zwar nicht zu Verbindungsproblemen, aber du kannst keine Admin-Befehle nutzen.
Fazit
Glückwunsch! Du hast es geschafft, deinen eigenen Valheim-Server auf deiner Proxmox-Umgebung mit Docker zu hosten. Du bist jetzt nicht mehr von den Launen kommerzieller Anbieter abhängig und hast die volle Kontrolle über deine Spielwelt. Dieses Setup ist ein fantastisches Beispiel dafür, was im Home Lab alles möglich ist und wie du mit Docker und Proxmox eine robuste und flexible Infrastruktur aufbaust.
Die Prinzipien, die wir hier gelernt haben – VM-Erstellung, Docker-Installation, `docker-compose.yml` für die Konfiguration, Port-Forwarding und Fehlerbehebung – lassen sich auf unzählige andere Dienste und Game-Server übertragen. Egal ob Minecraft, Terraria, ARK oder andere Anwendungen: Mit diesem Wissen bist du bestens gerüstet, um dein Home Lab weiter auszubauen und deine digitale Unabhängigkeit zu festigen.
Was kommt als Nächstes? Vielleicht möchtest du ein Monitoring für deinen Server einrichten (z.B. mit Prometheus und Grafana), automatische Offsite-Backups implementieren oder sogar einen Reverse Proxy wie Nginx Proxy Manager davor schalten, um den Zugriff noch sicherer zu machen. Die Möglichkeiten sind endlos!