setupmc.com

Einen bestehenden Minecraft-Server zu Docker umziehen

Übernimm Welt, Konfiguration und Erweiterungen und behalte den ursprünglichen Server für einen Rückwechsel.

Docker-Betrieb
setupmc.com Team

Migration und Veränderung trennen

Der erste Docker-Start sollte den alten Server möglichst genau nachbilden:

  • gleiche Minecraft-Version
  • gleicher Servertyp oder Modloader
  • gleicher Weltname
  • gleiche Plugins beziehungsweise Mods und Konfigurationen

Nur der Betriebsort ändert sich. Aktualisiert wird später, nachdem Docker einen echten Backup- und Spieltest bestanden hat.

Voraussetzungen

  • Konsolenzugriff zum sauberen Stoppen der Quelle
  • vollständiges Quell-Backup außerhalb des Migrationsverzeichnisses
  • genaue Minecraft-, Server-, Loader-, Plugin- und Mod-Versionen
  • genug Platz, um die alte Installation unverändert zu behalten
  • ein Docker-Hostverzeichnis im Besitz der Container-UID, normalerweise 1000:1000

Falls das Ökosystem unklar ist, bestimme es vor dem Kopieren mit dem Vergleich der Serversoftware.

Schritt 1: Quelle einfrieren und erfassen

Notiere level-name aus server.properties, Software-/Versionsausgabe, Java-Version, Plugin-/Mod-Liste und alle externen Ports. Stoppe den Quellserver sauber und kontrolliere, dass sein Prozess beendet ist.

Lege vor jeder Änderung ein Gesamtarchiv an:

tar -czf "minecraft-source-$(date +%Y%m%d-%H%M%S).tgz" /pfad/zum/alten-server

Speichere das Archiv außerhalb dieses Quellordners, damit es sich nicht selbst einschließt.

Variante A: nur eine Welt importieren

Nutze WORLD, wenn du die Welt übernehmen, aber bewusst mit frischer Serverkonfiguration beginnen willst. Lege die gestoppte Quellwelt unter ./import/world ab:

services:
  mc:
    image: itzg/minecraft-server:java25
    restart: unless-stopped
    ports:
      - "127.0.0.1:25565:25565"
    environment:
      EULA: "TRUE"
      TYPE: PAPER
      VERSION: "26.1.2"
      LEVEL: world
      WORLD: /import/world
    volumes:
      - ./data:/data
      - ./import:/import:ro

Das Image sucht in der Quelle nach level.dat und kopiert die Welt in den durch LEVEL benannten Ordner. Normalerweise geschieht der Import nur, solange diese Zielwelt fehlt. Füge kein FORCE_WORLD_COPY: "TRUE" hinzu; sonst würde die Quelle bei jedem Start erneut über das Ziel kopiert.

Enthält das Archiv mehrere level.dat, setze WORLD_INDEX erst, nachdem du den richtigen Treffer identifiziert hast.

Variante B: vollständige Serverdaten umziehen

Diese Variante übernimmt auch Plugins/Mods und deren Konfiguration. Beginne mit leerem ./data und kopiere die gestoppte Installation:

mkdir -p data
cp -a /pfad/zum/alten-server/. ./data/
sudo chown -R 1000:1000 ./data

Verwende danach denselben /data-Mount sowie TYPE, VERSION, Loader und Java-Version wie in der Quelle. Das Image verwaltet seine Serverdatei selbst; alte Startskripte und JARs können im archivierten Ursprung bleiben, statt Teil des neuen Betriebs zu werden.

Falls deine Compose-Datei nicht 1000:1000 nutzt, setze die dort konfigurierte UID und GID ein. Bei Schreibfehlern unter /data hilft der Permission-denied-Guide.

Grenze einer Paper-Migration

Dateien zu kopieren ersetzt keinen unterstützten Wechsel der Serversoftware. Die aktuelle Paper-Dokumentation hält fest:

  • Vanilla kann über den dokumentierten Weg zu Paper migrieren
  • Fabric-/Forge-Welten mit eigenen Mod-Daten können nicht einfach zu Paper werden
  • ein direkter Wechsel von Spigot/CraftBukkit zu Paper ist seit 26.1 grundsätzlich nicht möglich; der dokumentierte Weg führt zuerst über Vanilla

Führe eine notwendige Konvertierung an einer Kopie durch, bevor Docker hinzukommt – oder bilde zuerst den alten Servertyp in Docker nach.

Privat starten und prüfen

Durch die Bindung an 127.0.0.1 können entfernte Spieler während des Ersttests nicht beitreten.

docker compose config
docker compose up -d
docker compose logs -f mc
docker compose exec mc rcon-cli version
docker compose exec mc rcon-cli save-all flush

Prüfe Seed und bekannte Orte, Nether und Ende, Spielerinventare und Positionen, Rechte, Plugins/Mods sowie einen Stop-/Start-Zyklus. Erstelle und teste anschließend ein Docker-Backup, bevor du die Portbindung für Spieler öffnest.

Rollback

Stoppe den Docker-Stack und starte die unangetastete Quellinstallation wieder. Lass nie beide Instanzen auf dasselbe Weltverzeichnis zugreifen und veröffentliche sie nicht gleichzeitig auf demselben Port.

Bewahre Quelle und Archiv auf, bis der Docker-Server Backups, Neustarts und repräsentativen Spielbetrieb zuverlässig überstanden hat.

Fehlerbehebung

SymptomWahrscheinliche UrsacheSichere Reaktion
Eine neue leere Welt erscheintLEVEL, WORLD oder Bind Mount ist falschStoppen, level.dat-Pfade prüfen und mit leerem Ziel wiederholen
Nether oder Ende wirkt zurückgesetztNicht unterstützte Konvertierung oder falsches WeltlayoutSofort stoppen und Migrationsdoku der Quellsoftware befolgen
/data ist nicht beschreibbarHost-Besitz passt nicht zu UID/GIDBesitz korrigieren; kein chmod -R 777 verwenden
Plugins oder Mods scheiternTyp, Loader, Version, Java oder Abhängigkeiten weichen abQuell-Stack nachbilden, bevor du irgendetwas aktualisierst
Spieler können während des Tests beitretenPort ist auf allen Interfaces offenBis zum Abschluss nur an 127.0.0.1 binden

Nächste Schritte

Java-Konfigurator

Compose-Datei erstellen

Wähle Server-Software, Version und Einstellungen und lade deine Konfiguration herunter.

Java-Konfigurator öffnen

Häufige Fragen