Java Minecraft Server 1.20 auf Synology NAS installieren


Innerhalb von 5 Minuten kommt man mit einem Synology NAS mit Intel CPU (z.B. DS218+ kaufen) und viel RAM zu einem stabilen Minecraft-Server. Die Intel CPU brauchen wir zwingend für das Docker-Paket, welches die potente Basis für den Server bildet. Ich habe auch eine Anleitung für die Bedrock-Edition für iOS und Xbox ONE geschrieben.

Was wird benötigt?

  • Synology NAS mit Docker-Support (z.B. DS218+ kaufen)
  • Kompatible Arbeitsspeicherweiterung (z.B. 8GB DDR3-RAM kaufen)
  • Einen Router mit Port-Forwarding (z.B. FritzBox 7590 kaufen)
  • 5 Minuten eurer Zeit

Kompatibilität der Minecraft Clients mit den Servern

Der Server der neueren Bedrock-Edition läuft viel performanter als der Java-Edition. Die Bedrock-Edition findet sich auf den Konsolen und mobilen Geräten wieder. Dafür ist der dedizierte Bedrock-Server noch in der Alpha-Phase seitens Mojang und erlaubt keine Mods. Außerdem wurde der Server nur für x86-Architektur kompiliert. Das heißt: Es gibt keinen performanten Bedrock-Server für z.B. den ARM-basierten Raspberry Pi. Clientseitig fehlt dem Bedrock-Server die Unterstützung für die Nintendo Switch und macOS. Unglaublich aber wahr: für den Mac zudem keinen Bedrock-Edition Client.

ClientBedrock ServerJava Server
Android
iOS
XBOX ONE
Nintendo Switch
PS4
XBOX 360
PS3
Windows 7/8/10 Java
Windows 10 Bedrock
Linux
macOS
Welcher Client kann sich mit JAVA oder Bedrock Servern verbinden?

Geht das auch mit einem DS216j?

Wenn man ein Synology NAS der J-Reihe hat, dann wird die Leistung nicht reichen. Diese Geräte haben meistens nur 512 MB Arbeitsspeicher und sind in dieser Hinsicht auch nicht aufrüstbar. Wenn das NAS noch ein paar andere Aufgaben neben Minecraft haben sollte, dann hat man damit keinen Spaß. In dem Fall empfehle ich mein Tutorial für Minecraft auf einem Raspberry Pi 4.

Warum Docker und nicht das Minecraft-Paket?

Docker erlaubt den Starten des Server innerhalb von Sekunden. Außerdem trennen wir damit den Minecraft-Server vom Rest des Synology-System und können es so besser kontrollieren. Das Community Paket verwendet dazu noch eine alte Version des Servers und nicht das performantere PaperMC für für die aktuellen Versionen von Minecraft.

In wenigen Schritten zum Minecraft-Server

Dank Docker ist die Einrichtung mittlerweile kinderleicht. Wenn man sich an die hier beschriebenen Schritt hält, dann wird das auch klappen. Viele andere Menschen haben das schon vorher geschafft. Und wer nicht lesen mag, der schaut sich einfach das Schritt-für-Schritt-Video an. Viel Spaß.

Schritt 1: Installieren von Docker

Über die Paketverwaltung vom DiskStation Manager installieren wir nun Docker. Wenn Docker dort nicht auftaucht, dann ist deine Diskstation damit leider nicht kompatibel. Das sollte man auch nicht erzwingen sondern statt dessen die Lösung mit einem Raspberry Pi in Erwägung ziehen.

Schritt 2: Erstellen eines Shared Folders

Der Server braucht einen Speicherort auf der DiskStation in dem die Konfigurationsdateien und vor allem die Map liegt. Deswegen ist dieser Schritt wichtig, weil sonst Aktualisierungen des Containers zum Verlust der Minecraft Karte führen würden. Legt einfach einen Ordner im nun vorhandenen Shared Folder „docker“ an weil dort alle Rechte bereits vergeben sind.

Schritt 3: Runterladen des Docker images

In Docker selber suchst du nun in der Registry nach „MarcTV“ und wählst das Image „MinecraftPaperServer“ aus und lädst es runter. Docker fragt, ob du „latest“ „1.15.2“ oder „1.19“ als Tag runterladen willst. „Latest“ ist immer die jeweils neueste Version.

Das ebenfalls verfügbare Overviewer Image ist für die Generierung einer isometrischen Karte sobald der Server später läuft. Dies ist jedoch optional.

Schritt 4: Konfigurieren des Docker Containers

Nachdem wir das Image runtergeladen haben, kann es nun als Container konfiguriert und gestartet werden. Folgende Einstellungen sollten hier vorgenommen werden:

Docker ressource limitation

  • CPU priority: high
  • Memory Limit: 50% vom Arbeitsspeicher im NAS

Advanced Settings

  • enable auto-restart: yes

Volume

  • File/Folder: Das shared folder aus Schritt 1 hier auswählen
  • Mount path: /data

Port Settings

  • Local Port: 25565 TCP
  • Container Port: 25565 TCP
  • Local Port: 25565 UDP
  • Container Port: 25565 UDP

Environment Variables

VariableWert
MEMORYSIZENehmt hier 33% eures Arbeitsspeichers im NAS. So viel wie nur möglich.
TZTime Zone wie z.B. „Europe/Berlin“

Schritt 5: Starten des Servers

Nun muss man den Server nur noch starten und er ist im lokalen Netzwerk verfügbar. Das Starten selber dauert beim ersten mal ca. 3 Minuten. Danach ist er nach wenigen Sekunden jederzeit verfügbar und gestartet.

Die Konfiguration geschieht über die Datei server.properties, die nach dem ersten Start in dem shared folder zusammen mit den anderen Dateien generiert wurden.

Schritt 6: Freigeben des Servers über das Internet

Ich nutze eine Fritzbox. Dort kann man unter den Einstellungen Internet > MyFritz-Konto eine Adresse einrichten, über die man die Fritzbox außerhalb des eigenen Netzwerks erreichen kann.

Unter Internet > Freigaben > Gerät für Freigaben hinzufügen > [Gerät auswählen] > Neue Freigabe > MyFritz Freigabe > Andere Anwendung und dort den Port „25565“ für TCP und UDP freigeben.

Die MyFritz-URL ist dann die Server-Adresse, die man in Minecraft einträgt. Zum Beispiel u5xvqz2trolololom.myfritz.net Mein Server läuft durch einen SRV-Eintrag in meine DNS-Einstellungen der Domain hier mc.marc.tv

Hinweis für IPv6 Kunden

Viele Router laufen schon über IPv6 oder DS-Lite. Das bedeutet, dass die Portfreigabe komplizierter ist. Einfacher ist es beim Internetprovider anzurufen und sagen, dass man gerne auf eine IPv4 Anbindung wechseln möchte. Die Begründung sollte sein, dass IPv4 für einen beruflichen Dienst benötigt wird. Danach schaltet man unter „Internet“ -> „Zugangsdaten“ -> „IPv6“ auf „native IPv4 Anbindung“ um und erstellt dann die Portfreigabe.

Wie sieht das Dockerfile aus?

Da ich persönlich gerne Dinge unter meiner Kontrolle haben möchte, fühle ich mich wohler mit einem überschaubaren Code wohler. Das Dockerimage ist in meinem GitHub-Account verfügbar und ich freue mich über Verbesserungen. Dank an Felix Klauke. Auf seinem Dockerimage basiert meines und er gab mir hilfreiche Tipps.

Der Minecraft-Server auf dem Synology NAS
Der Minecraft-Server auf dem Synology NAS

Wie gelange ich auf die Kommandozeile des laufenden Containers?

Wenn der Container läuft, kommst du mit folgenden Schritten unter DSM in das Terminal:

  1. Docker App starten
  2. Container (z.B. marctv-minecraft-papermc-server)
  3. Rechtsklick und dann Details
  4. Tab: Terminal

Hinweis: Dort funktionieren die Tastaturabkürzungen für Kopieren und Einfügen nicht, sondern Rechtsklick und dort „Einfügen“ und „Kopieren“. Dort können Befehle wie op oder whitelist add verwendet werden.

Kommandozeile im Docker Container
Kommandozeile im Docker Container

Wie optimiere ich die Leistung des Servers?

„Can’t keep up! Is the server overloaded? Running 5190ms or 103 ticks behind“ ist eine Meldung, die man eventuell sofort nach dem ersten Start des Servers sieht. Der neue Server muss für die Spieler im laufenden Betrieb die Welt oder besser die „Chunks“ noch generieren. Das heißt, mit der Zeit wird die Geschwindigkeit deutlich besser.

Das Abschalten der Pillager Patrouillen hilft ebenfalls. Das sind Computergesteuerte Avatare, die permanent auf der Karte auftauchen und berechnet werden müssen. In der Datei „paper.yml“ kann man sie mit dem folgenden Befehl abschalten:

  disable-pillager-patrols: true

Grundsätzlich hilft bei großen Welten immer mehr RAM. Ich selber habe 16 GB (z.B. 2x 8GB DDR3-RAM kaufen) verbaut und zu Spitzenzeiten hatte der Server 6 oder gar 10 GB RAM zugewiesen bekommen. Zusätzlich hat der Einbau einer NAS SSD wahre Wunder bewirkt. Dadurch läd die Welt schneller. Auch Wechsel ins Nether und zurück werden massiv beschleunigt. Alternativ kann man im NAS eine RAM-Disk verwenden. Eine SSD ist aber deutlich sicherer. Da der Minecraft-Server eine Single-Thread-Anwendung ist und somit nur auf einem CPU-Kern laufen kann, bringen mehr CPU-Kerne hier leider wenig.

Konfiguration des Servers

Die Einstellungen für den Bedrock-Server müssen in Konfigurationsdateien vorgenommen werden. Diese wurden in den lokalen Verzeichnissen auf dem NAS erzeugt. Wichtig: Vor Änderungen den Server immer runterfahren bzw. den Container stoppen.

server.properties

Hier wird zum Beispiel eingestellt, ob eine Whitelist verwendet wird oder ob im Survival oder Creative-Modus gespielt wird:

gamemode=creative
force-gamemode=true

whitelist.json

Die whitelist.json sollte hingegen nicht manuell editiert werden. Um Benutzernamen der Whitelist hinzuzufügen, geht man auf die Kommandozeile im Terminal des Servers bzw. des Containers und gibt ein:

whitelist on
whitelist add BENUTZERNAME

BENUTZERNAME steht natürlich für den jeweiligen Account-Namen.

Wie aktualisiere ich den Minecraft Docker Container?

Unter DSM von Synology ist der Weg leider alles andere als intuitiv. Wenn der Container genau nach dieser Anleitung angelegt wurde, dann kann man den Container mit dem Server wie folgt aktualisieren:

  1. Docker App öffnen
  2. „Registry“ aufrufen
  3. „MarcTV“ eingeben
  4. Neueste Version des Minecraft-PaperMC-Servers runterladen.
  5. Warten bis der Download erfolgreich war. Das kann ca. 2 Minuten dauern.
  6. Den vorhandenen Minecraft Container stoppen.
  7. Mit rechter Maustaste den Befehl „clear“ ausführen.
  8. Den Container wieder starten.
„Clear“ löscht nicht die lokalen Inhalte sondern nur den Container

Man kann Docker Container auch automatisch mit Watchtower aktualisieren. Das bietet sich vor allem bei mehreren laufenden Containern an. Sonst kann es passieren, dass sich die Client nicht mit dem Server verbinden können, weil die Versionen nicht übereinstimmen.

Manchmal gibt es noch keinen aktuellen Paper Minecraft Server für den neusten Client
Manchmal gibt es noch keinen aktuellen Paper Minecraft Server für den neusten Client.

Wie installiere ich Plug-ins und Mods für die Java-Edition?

Der gesamte Server abzüglich der Linux-Umgebung befindet sich außerhalb des Containers. Jedenfalls, wenn diese Anleitung korrekt befolgt wurde. Zusätzliche Module lassen sich im gemounteten Ordner auf dem NAS installieren wie bei allen anderen Minecraft-Servern auch.

Wie starte ich eine alte Version von Minecraft?

Die eingesetzte Server-Software PaperMC ist nicht immer sofort auf dem neuesten Stand. Deswegen kann man in der Zeit einfach seinen Minecraft-Client mit einer alten Version starten. Dazu startet man den Minecraft Launcher und wählt oben im Menü „Installations“ und dann „New“ aus.

So legt man eine neue Installation mit einer alten Version an.

Dort kann man nun eine Installation anlegen mit einer älteren Version und diese beim Starten auswählen.

Wieso nutzt du nicht weiterhin den Raspberry Pi?

Der Raspberry Pi hat nur 1 GB Speicher, der nicht erweiterbar ist. Wenn nun ein paar Leute auf dem Server wirklich spielen und mit einer riesigen Eisenbahn neue Chunks erzeugen verbraucht das Speicher. Nachdem der Server dann mehrmals abgestürzt ist und ich sogar einmal ein Backup wiederherstellen musste, habe ich nach einer neuen Lösung gesucht. Für kleinere Karten ist der Raspberry Pi mit PaperMC allerdings immer noch ein idealer und sehr günstiger Anfang.


Beitrag veröffentlicht

in

von

Kommentare

370 Antworten zu „Java Minecraft Server 1.20 auf Synology NAS installieren“

  1. Avatar von Doug
    Doug

    The firewall has been disabled and the machine current is running your Bedrock server just fine, even with remote access. This is running on a DS1511+ with an Intel Atom D525, could this be the issue? Here is the error log:

    2022-11-27 18:23:00,stdout,Failed to download original jar
    2022-11-27 18:23:00,stdout,java.nio.file.AccessDeniedException: /data/cache
    2022-11-27 18:23:00,stdout, at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
    …then it continues with several more lines all followed by (Unknown Source)

    1. Avatar von Marc
      Marc

      No, I think you did something wrong when you configured the container:

      AccessDeniedException /data

      means that the container does not have access to the data dir

  2. Avatar von Doug
    Doug

    You are correct, I must have done something wrong. I deleted it and it is working now, albeit a little slow, probably because of the slow Synology.

    So my daughter and I have been enjoying your Bedrock version since the pandemic started. Now we have so much architecture in there I wanted to try and copy it to the Java server. I uploaded the world to Chunker and downloaded the latest Java version but cannot figure out how to copy the Java version to the new server. The newly generated Java server has a lot more files in it that what Chunker gave me. I tried copy the folders from the Chunker Bedrock conversion to the Java folder overwriting what was there but it just crashes when you run it. I had copied the entire folder before trying it so I just deleted the modified folder and renamed the copy and all is good again. Now I am looking online but have not yet found anything that describes how to install the Chunker output conversion of the Bedrock world to the Java Synology server. I would appreciate any advice and thank you for years of enjoyment for me and my 10 year old daughter!

    1. Avatar von Marc
      Marc

      Sorry, no idea how to convert from Bedrock to Java in 2022. I did not tackle that topic since 7 years. And back then, I converted from Java to Bedrock and not vice versa.

  3. Avatar von Couzin2000
    Couzin2000

    Hi! I have the java server running in Docker as a container on Ubuntu 22.04. My version of Docker Desktop is very different from yours, so the instructions are also gonna be different and I cannot find any instructions written out for Ubuntu.

    I would like to have the command-line instructions to run this container AND the command-line instructions for upgrading the container without losing the worlds I have.

    Here’s some info about my configuration:

    ————-
    Environment
    MEMORYSIZE
    4G

    PATH
    /opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

    JAVA_HOME
    /opt/java/openjdk

    LANG
    en_US.UTF-8

    LANGUAGE
    en_US:en

    LC_ALL
    en_US.UTF-8

    JAVA_VERSION
    jdk-17.0.4.1+1

    JAVAFLAGS
    -Dlog4j2.formatMsgNoLookups=true -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=mcflags.emc.gs -Dcom.mojang.eula.agree=true

    PAPERMC_FLAGS
    –nojline

    Mounts
    /DATA
    /home/couzin2000/minecraft

    Ports
    25565/tcp
    0.0.0.0:25565

    25565/udp
    Not bound
    ————

    Now, I’m not sure what the instructions „Re-download the image from the docker, Stop the container, Clear the container, Start the container“ means. How would I clear the container? Just delete it? If this is the case, how do I re-run the command I needed to run the container in the first place? Because I ran it through trial and error, and it must have worked, but I do not remember what command I ran. If you’re able to decipher what I sent and write in the command for the same settings, I woudl really appreciate that. Otherwise, I’m pretty much stuck on 1.19.2 and unable to upgrade!
    Thanks

    1. Avatar von Marc
      Marc

      Hi!

      I use Watchtower:

  4. Avatar von couzin2000
    couzin2000

    So by installing Watchtower as a container, all the OTHER containers are updated automatically? And I have no work to do in terms of backing up my world db before running this?

    Can I shut down Watchtower once it has run once, then turn it back on again to run all updates once, like a manual switch on/off?

    1. Avatar von Marc
      Marc

      yes, yes and yes

  5. Avatar von Traquil
    Traquil

    Hallo Marc,

    erstmal danke für den super organisierten Artikel!

    Ich habe jedoch eine Frage! Erst nach dem ersten Starten des Containers werden die Dateien im Ordner angelegt und dieser läuft dann sofort. Der Modus „Hardcore“ kann aber beispielsweise nicht geändert werden, falls der Minecraftserver schon erstellt wurde. Somit ist diese Option generell nicht anpassbar.

    Ist es irgendwie möglich dies vor der ersten Start des Containers zu definieren?

    Mit freundlichen Grüßen Traquil

    1. Avatar von Traquil
      Traquil

      Okay, bin selbst drauf gekommen, habe die Welt, indem ich die Ordner World,Nether,End gelöscht habe, nochmal neu erstellen lassen. Dann hat er solche Einstellungen setzen lassen.

      Danke nochmal für den Artikel!

  6. Avatar von Traquil
    Traquil

    Hallo Marc,

    ich hätte dann jetzt doch eine Frage.

    Ich habe zuletzt meinen Ram der Nas upgegradet und habe nun in den Dockereinstellungen die Speichergrenze auf 8192GB und bei den Umgebungsvariablen den MEMORYSIZE auf 8G umgestellt. Wenn ich auf dem Server dann aber über F3 die Mem-Daten abrufe nutzt er immer nur xy von 2048MB.
    Habe ich noch einen Punkt vergessen, an dem diese angepasst werden müssen? Kann es an anderen virtuelles Maschinen liegen, die Speicher nutzen, habe aber prinzipiell darauf geachtet, dass ich insgesamt nicht mehr vergebe als eingebaut ist.

    Vielen Dank
    Traquil

    1. Avatar von Marc
      Marc

      „Auf dem Server über die F3 Taste“

      Das verstehe ich nicht ganz. Meinst Du im Client? Wenn Du über die Environment Variable 8 Gigabyte einstellst, dann nimmt er die auch. Ggf. hast du nicht „8G“ sondern „8GB“ genommen? Aber Achtung: Wenn Du dem Docker Container nur 8 GB gibst und Minecraft auch 8, dann wird er crashen weil das OS im Container mindestens 800 MB benötigt.

  7. Avatar von Christian
    Christian

    Hi Marc,
    wir haben seit langer Zeit Deinen Java Minecraft Server im EInsatz. Bisher hat alles super geklappt ohne Fehlermeldung. Nach der letzten Aktualisierung startet der Container nicht mehr. Als Fehler wird „java: executable file not found in $path“ angezeigt. Hast Du einen Tipp für uns?
    Vielen Dank im Voraus.

    1. Avatar von Marc
      Marc

      Einfach neu einrichten. Das tolle an Docker ist ja, dass die Dateien außerhalb liegen. Wahrscheinlich lange nicht aktualisiert und nun schießen das irgendwelche Path Variablen rein. Ggd die manuell entfernen. Ich würde ihn neu einrichten.

    2. Avatar von Christian
      Christian

      Hat geklappt, vielen Dank.

  8. Avatar von Sebastian
    Sebastian

    Hallo Marc!
    Mein Sohn ist ganz verrückt nach Minecraft und spielt mit seinen Freunden auf unserem Server. Nun habe ich das Update zu 1.19.3 gemacht und bekomme ihn nicht mehr zum laufen. Im Terminal bleibt er immer bei erstellen der Welt stehen und zeigt folgende Zeilen an.
    [20:40:33 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [20:40:33 INFO]: Preparing level „world“
    [20:40:35 INFO]: Preparing start region for dimension minecraft:overworld
    [20:40:35 INFO]: Time elapsed: 388 ms
    [20:40:36 INFO]: Preparing start region for dimension minecraft:the_nether
    [20:40:36 INFO]: Time elapsed: 95 ms
    [20:40:36 INFO]: Preparing start region for dimension minecraft:the_end
    [20:40:36 INFO]: Time elapsed: 111 ms
    [20:40:36 INFO]: Running delayed init tasks
    [20:40:36 INFO]: Done (6.420s)! For help, type „help“
    [20:40:36 INFO]: Timings Reset

    Was kann ich tun?
    Vielen Dank

    1. Avatar von Marc
      Marc

      Faktisch läuft der Server. Selbes Netzwerk? Firewalls? Der Server läuft. Eventuell nochmal genau nach Anleitung neu einrichten. Denn da passt was nicht mit dem Zugriff auf die permission datei

    2. Avatar von Gabor
      Gabor

      Hallo,
      ich habe das gleiche Problem. Mehrfach neu installiert, keine Besserung. Evtl. einen weiteren Tipp?
      Danke vorab,
      Gabor

    3. Avatar von Marc
      Marc

      Wie gesagt, der Server läuft. Es steht dort keine Fehlermeldung, die das Gegenteil behauptet. Bitte das YouTube Video genau befolgen

  9. Avatar von Sebastian Kirst
    Sebastian Kirst

    Vielen dank für deine Antwort, ich werde es weiter probieren.

    1. Avatar von Karsten
      Karsten

      Hallo,

      hast du zufällig eine lösung für dieses Problem gefunden ?
      Ich habe mehrmals den server nach Anleitung installiert aber leider noch keine möglichkeit gefunden ….

      LG
      Karsten

    2. Avatar von Marc
      Marc

      Wie gesagt: der sercer läuft. Falsche ip genutzt? Firewall? Das hat jedenfalls nichts mit dem Container zu tun. Bei den anderen geht es ja auch.

  10. Avatar von Rudi Ratlos
    Rudi Ratlos

    Bei mir läuft der Server dank deiner sehr guten Anleitung nun schon viele Monate. Ich würde allerdings gerne ein tägliches Backup von den wichtigsten Daten des Servers machen. Oder halt von denen, die sich Täglich ändern. Hast du da einen Tipp, wie ich das schnell und einfach bewerkstelligen kann?

    1. Avatar von Marc
      Marc

      Einfach den lokalen Ordner sichern.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert