Homelab, achter Schritt — Einen eigenen Minecraft-LXC vorbereiten

Fuer den Minecraft-Server der Kinder ist jetzt ein eigener LXC auf Proxmox vorbereitet und in Coolify als Server hinzugefuegt. Er bekommt eine eigene Adresse im Server-VLAN und eigene Ressourcen. Hier stehen die Befehle fuer den Aufbau, einschliesslich einer erneut aufgetauchten Locale-Warnung. Das Minecraft-Deployment selbst steht noch aus.

Ein eigener LXC fuer Minecraft#

Die Coolify-Instanz laeuft bereits im LXC 120 unter 10.10.10.20. Fuer Minecraft kommt ein zweiter LXC dazu. So lassen sich CPU und RAM separat begrenzen und der Minecraft-Gast unabhaengig von der Verwaltung neu starten oder sichern.

Proxmox verwaltet den LXC. Coolify verbindet sich spaeter per SSH mit diesem Gast und steuert dort Docker, in dem Minecraft laufen soll. Eine weitere Coolify-Installation ist dafuer nicht erforderlich. Ein LXC verwendet weiterhin den Kernel des Proxmox-Hosts; die Grundlagen stehen unter LXC-Container verstehen.

EinstellungWert
Proxmox-Nodepve01
CT-ID und Hostname121, minecraft
SystemUbuntu 24.04 LTS, amd64
CPU und RAM4 Kerne, 6144 MiB RAM
Speicher32 GiB auf local-lvm
Swap-Limit512 MiB
Container-Typunprivilegiert
Zusaetzliche Featuresnesting=1,keyctl=1 fuer Docker im LXC
Adresse und Gateway10.10.10.21/24, 10.10.10.1
DNS und SuchdomainPi-hole 10.10.10.3, xlab.internal

Die Ressourcen sind ein Startwert fuer den Familienserver. Was tatsaechlich gebraucht wird, haengt spaeter unter anderem von Edition, Spielerzahl, Sichtweite und Mods ab.

Das Ubuntu-Template herunterladen#

Alle folgenden Shell-Befehle werden auf dem Proxmox-Host als root ausgefuehrt, hier auf pve01. pct exec 121 -- ... startet dabei den Befehl hinter -- innerhalb des neuen LXC; ein vorheriger Wechsel in den Container ist nicht noetig.

Fuer diesen Aufbau werden local als Template-Storage, local-lvm fuer die Container-Disk und vmbr0 als Bridge verwendet. Vor einer Wiederholung muessen CT-ID 121 und IP 10.10.10.21 frei sein. Die Adresse muss ausserhalb des dynamischen DHCP-Bereichs liegen oder passend reserviert sein.

pveam update

MC_TEMPLATE=$(pveam available --section system \
  | awk '$2 ~ /^ubuntu-24\.04-standard_.*_amd64/ {print $2; exit}')

pveam download local "${MC_TEMPLATE:?Kein Ubuntu-24.04-Template gefunden}"

Der Template-Name kommt aus dem aktuellen Katalog. Damit ist im Befehl keine konkrete Archivversion festgeschrieben. Proxmox: Template-Verwaltung

Den Container erstellen und starten#

Nach erfolgreichem Download in derselben Shell:

pct create 121 "local:vztmpl/${MC_TEMPLATE:?Template fehlt}" \
  --hostname minecraft \
  --ostype ubuntu \
  --unprivileged 1 \
  --features nesting=1,keyctl=1 \
  --cores 4 \
  --memory 6144 \
  --swap 512 \
  --rootfs local-lvm:32 \
  --net0 name=eth0,bridge=vmbr0,ip=10.10.10.21/24,gw=10.10.10.1 \
  --nameserver 10.10.10.3 \
  --searchdomain xlab.internal \
  --onboot 1 \
  --start 1

--start 1 startet den LXC sofort, --onboot 1 auch beim Hochfahren des Hosts. --swap 512 setzt das erlaubte Swap-Limit; es legt keine eigene Swap-Datei an. Proxmox: pct-Befehlsreferenz

Das Server-VLAN 10 liegt am Proxmox-Uplink bereits native/untagged an. Deshalb enthaelt net0 keinen zusaetzlichen tag=10. Diese Einstellung gehoert zu meinem Switch- und Bridge-Aufbau; eine IP aus dem Servernetz allein stellt die VLAN-Zuordnung nicht her.

SSH fuer Coolify vorbereiten#

Coolify braucht eine SSH-Verbindung zum neuen Gast. Die Pakete lassen sich direkt vom Proxmox-Host aus installieren:

pct exec 121 -- apt-get update
pct exec 121 -- apt-get install -y openssh-server curl ca-certificates
pct exec 121 -- systemctl enable --now ssh

Beim letzten Befehl erschien dieselbe Warnung wie zuvor beim Coolify-LXC:

perl: warning: Setting locale failed.
        LANG = "en_US.UTF-8"

Die Locale war als Spracheinstellung gesetzt, im frischen Container aber nicht verfuegbar. Das allein bedeutet noch nicht, dass SSH nicht gestartet wurde.

Die Locale-Warnung beheben#

Auch dieser Fix laeuft vom Proxmox-Host aus:

pct exec 121 -- env LC_ALL=C apt-get install -y locales
pct exec 121 -- locale-gen en_US.UTF-8
pct exec 121 -- update-locale LANG=en_US.UTF-8

LC_ALL=C gilt hier nur fuer die Paketinstallation. Anschliessend erzeugt locale-gen die fehlende Locale und update-locale setzt den Standard fuer den Container. Damit war die Warnung behoben. Ubuntu: Locales

Den SSH-Status separat pruefen:

pct exec 121 -- systemctl is-active ssh

Erwartet wird active. Fuer eine interaktive Shell im LXC gibt es ausserdem:

pct enter 121

Nach pct enter laufen Befehle direkt im Container. Mit exit geht es zurueck auf den Proxmox-Host.

Den Gast in Coolify hinzufuegen#

Der neue Server ist inzwischen in der bestehenden Coolify-Instanz hinzugefuegt. Die Verbindung verwendet die Gast-IP 10.10.10.21 und SSH auf Port 22. Fuer die Anmeldung muss der oeffentliche Teil des in Coolify hinterlegten SSH-Schluessels im Minecraft-LXC unter /root/.ssh/authorized_keys stehen.

Der Ablauf in Coolify ist Servers → Add → Manual. Als Serveradresse wird 10.10.10.21, als Benutzer root und als Schluessel der passende SSH-Key eingetragen. Ueber Validate Server & Install Docker Engine prueft Coolify die Verbindung und kann Docker auf dem Gast einrichten. Nach erfolgreicher Validierung laesst sich der Server als Deployment-Ziel auswaehlen. Coolify: Server hinzufuegen

Der Zugriff der Kinder folgt mit dem Deployment#

Der Minecraft-LXC bleibt im Server-VLAN 10, die Kindergeraete bleiben im Kids-VLAN 25. Fuer das Spiel braucht es eine gezielte Ausnahme in der Firewall: vom Kids-Netz 10.10.25.0/24 zur neuen Server-IP 10.10.10.21, begrenzt auf den Spielport. Die Regel muss vor der allgemeinen Sperre von Restricted nach Internal stehen.

Fuer einen Java-Server mit Standardport waere das TCP 25565. Die Freigabe muss zum tatsaechlich veroeffentlichten Host-Port passen; die Minecraft-Vorlage von Coolify bildet diesen auf den Spielport im Docker-Container ab. Die Kinder verbinden sich dann direkt mit dem Minecraft-LXC. Fuer den Zugriff im Heimnetz ist keine Portweiterleitung am Internetanschluss erforderlich.

Abgeschlossen sind die Vorbereitung des LXC, der Locale-Fix und das Hinzufuegen des Servers in Coolify. Die Wahl der Minecraft-Edition, das Deployment mit dauerhafter Weltablage und Backup sowie die Firewall-Freigabe und ein Verbindungstest aus dem Kids-Netz stehen noch aus.