Wer einen Minecraft Bedrock Server für iOS, Android, Windows, PlayStation 4 und XBOX ONE auf seinem Synology NAS hosten möchte, kann dies nun tun. Die Minecraft Java-Version bietet allerdings immer noch mehr Features wie Unterstützung durch Overviewer und macOS. Die Bedrock-Edition wird immer populärer und somit interessanter und man sollte sich alle Wege offen halten. Vor allem, weil Mojang seit Dezember 2018 eine offizielle Dedicated Server Software für Ubuntu und Windows anbietet. Deswegen lernen wir nun, wie wir einen Bedrock-Server auf einem Synology NAS installieren.

Inhaltsverzeichnis

Andy's XBOX ONE und mein iPhone auf dem meinem Bedrock Server
Andy’s XBOX ONE in Köln und meine iPhone-Version in Hannover auf dem Synology Bedrock Server

Kompatibilität der Minecraft Clients mit den Servern

Die neuere Bedrock-Edition läuft viel performanter als die Java-Edition und ist mit den Konsolen und mobilen Geräten kompatibel. Dafür ist der Dedicated Bedrock Server noch in der Alpha-Phase seitens Mojang und erlaubt keine Mods. Clientseitig fehlt außerdem die Unterstützung für die Nintendo Switch und macOS. Unglaublich aber wahr: Für den Mac gibt es keine Bedrock-Edition.

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?

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

Schritt 1: Erstellen eines Shared Folders

Der Server braucht einen Speicherort auf der DiskStation in dem die Konfigurationsdateien und vor allem die Map liegt. Dafür legt man im Control Panel ein dediziertes Shared Folder an.

Schritt 2: 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.

Bedrock Server Docker Image im Synology Repository
Bedrock Server Docker Image im Synology Repository

Schritt 3: Runterladen des Dockerimages

In Docker selber suchst du nun in der Registry nach „MarcTV“ und wählst das Image „Minecraft Bedrock Server“ aus und lädst es runter. Das Image kann auch auf DockerHub runtergeladen werden.

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

  • Folder: Das shared folder aus Schritt 1 hier auswählen
  • Mount path: /bedrock-server/worlds

server.properties

  • File: Die lokale Konfigurationsdatei für den Server. Kopiert einfach diese hier lokal ins NAS.
  • Mount path: /bedrock-server/server.properties

whitelist.json

  • File: Die lokale whitelist.json für den Server. Kopiert einfach diese hier lokal ins NAS.
  • Mount path: /bedrock-server/whitelist.json
So sieht der mount path mit server.properties Datei (NICHT Verzeichnis!) aus.
So sieht der mount path mit server.properties Datei (NICHT Verzeichnis!) aus.

Port Settings

  • Local Port: 19132 TCP
  • Container Port: 19132 TCP
  • Local Port: 19132 UDP
  • Container Port: 19132 UDP
Korrektes Port-Mapping für Docker

Whitelist und Adminrechte

Auf dem Terminal des Synology Docker Containers könnt ihr Befehle ausführen. Zum Beispiel jemanden auf die Whitelist setzen:

whitelist add MarcTV

Fügt einen Nutzer in die whitelist.json hinzu. Überprüft hier, ob der Benutzer auch wirklich in der Datei eingetragen wurden.

Ihr könnt einem Nutzer auch Adminrechte geben. Dies funktioniert nur, wenn der entsprechende Nutzer online ist.

op MarcTV // Adminrechte für den Usernamen
deop MarcTV // entfernen der Adminrechte
Die /op Befehle funktionieren nur, wenn der User online ist

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.

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 „19132“ freigeben.

Verbinden auf den Server per XBOX ONE

Aktuell muss die Server-Adresse manuell auf einem Raspberry Pi oder PC mit einem Python-Script als LAN-Server zur Verfügung gestellt werden.

MCC Toolchest PE für Windows
MCC Toolchest PE für Windows

Konvertieren der Minecraft Java-Karte für Bedrock

Das Tool MCC Toolchest PE kann zur Konvertierung von Java-Karten zur Bedrock-Edition genutzt werden. Nicht verwechseln mit Tool MCC Toolchest ohne PE im Namen. Dafür öffnet man eine Bedrock-Edition Karte und wählt im Kontextmenü Tools > Convert > From Java und wählt die Java-Karte. Anschließend speichern nicht vergessen.

Der Bedrock-Server braucht deutlich weniger Leistung als der Paper-Java-Server

Wie hoch ist die CPU-Last?

Während der Bedrock-Server sehr genügsam ist und selten über 5% CPU Last verursacht, sorgt der PaperMC Java-Server schnell für 25% und mehr CPU-Last. Da der Java-Server eine Single-Thread Anwendung ist, wird bei einer Quad-Core-CPU wie in dem Synology DS1019+ (kaufen) nur ein Viertel der vorhandenen Leistung genutzt. Bei mir geht die Leistung manchmal auch auf über 35% CPU-Last. Das liegt entweder am Boost-Mode der CPU oder daran, dass der Java PaperMC-Server neben dem Hauptthread noch andere Dinge berechnet.

Docker Container automatisch aktualisieren

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.

Läuft der Bedrock-Server auch auf einem Raspberry Pi 4?

Die Bedrock-Server Software gibt es aktuell nur für x86-CPU Architekturen wie von Intel und AMD. Der Raspberry Pi 1 bis 4 nutzt einen ARM Prozessor. Es ist deswegen nicht sinnvoll möglich einen Bedrock-Server auf einem Pi zu betreiben. Aus diesem Grund ist diese Anleitung für ein Synology NAS mit einer Intel CPU und Docker angelegt.

Die Zukunft

Ich werden unseren Minecraft Java Server unter mc.marc.tv so lange weiter nutzen, bis alle der folgenden Bedingungen erfüllt sind:

  1. MOJANG stellt die Unterstützung der Java-Version ein
  2. Bedrock-Edition erscheint für MacOS
  3. XBOX ONE,PS4  und Nintendo Switch erhalten offiziellen Support für dedizierte Server
  4. Overviewer generiert isometrische Ansichten von Bedrock-Karten

Das Eintreten aller dieser Bedingungen ist sehr unwahrscheinlich. MOJANG möchte mit den kostenpflichtigen Realms Geld verdienen und Overviewer unterstützt seit wenigen Monaten überhaupt erst Minecraft 1.13.2.

This is an early release (alpha) which we don’t fully support yet. It might contain severe issues and we could stop supporting it at any time.

MOJANG Anfang 2019 über ihren Bedrock Server

Wenigstens gibt es einen Migrationspfad auf Bedrock der heute schon funktioniert. So hält man sich alle Optionen offen. Durch den Alpha-Status bleibt nun alles bei der Java-Version für unseren aktuellen Minecraftserver.

Beteilige dich an der Unterhaltung

122 Kommentare

  1. Dear Marc, I’d also like to thanks for your fantastic work, I’m trying to create an MC playground for my daughters :)
    I ran into a trouble following your instructions, I cannot join the server from iOS devices, nor from LAN or WAN, it doesn’t matter. Port is forwared, checked with port scanner, listens when the docker image is running. MC app on iOS device always says „Failed to connect to the world“. What am I doing wrong? The only difference I see from your setup is the evironment variables. Mine was created default with the following entries:
    PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    LD_LIBRARY_PATH:.
    and I added manually this: MEMORYSIZE: 3G

    Could this be any reason why I fail to connect to this instance? Apart from this everything seems to me okay, in the shared folder the Bedrock level folder is created with db folder and neccesary files under it, log say the world is created upon server start, so I can’t think of anything. Any help would be much much appreciated.
    Log:
    [2020-01-10 09:46:12 INFO] Starting Server
    [2020-01-10 09:46:12 INFO] Version 1.14.1.4
    [2020-01-10 09:46:12 INFO] Session ID XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXX
    [2020-01-10 09:46:12 INFO] Level Name: Bedrock level
    [2020-01-10 09:46:12 INFO] Game mode: 0 Survival
    [2020-01-10 09:46:12 INFO] Difficulty: 1 EASY
    [2020-01-10 09:46:17 INFO] IPv4 supported, port: 19132
    [2020-01-10 09:46:17 INFO] IPv6 not supported
    [2020-01-10 09:46:17 INFO] IPv4 supported, port: 33094
    [2020-01-10 09:46:17 INFO] IPv6 not supported
    [2020-01-10 09:46:20 INFO] Server started.

    1. Hi Zsolt,
      are you sure that you mapped the ports locally? Look at the screenshot in this article.

    2. you mean in the docker? yes, both of them are on the suggested 19132 (and opened up in router as well):
      screnshot

      What I just noticed, that my server popped up as a LAN server – and I could join the world luckily – under the FRIENDS tab. Previously I was trying to add it on the third tab, external servers, but if I add it there, I cannot join. I tried both method: adding it with the NAS‘ local lan ip, no luck. Adding it with it’s dynDNS domain name, still no luck. How could I join the server when I’m outside home, and how can my girls invite their friends to play together through WAN connection? Many many thanks for your suggestions, and keep up the good work. If I can make this properly work, next step will be the isometric map, so I can watch them playing :)

    3. It will work if you open the ports of your nas to the internet. This depends heavily on your router. Look it up in the manual of your browser on how to open ports to the web.

    4. Dear Marc,
      Some progress has been achieved :)
      Now I properly see my server online with its version number, reads my World’s name set in server.properties, and shows the 0 of 10 max player is online. Now I get a different error message: when I try to connect to my server, the app says: „In order to play with your friends, you need to connect via Wi-Fi“. I assume (maybe wrong) that it requires me to be in the same LAN with server?? Or does it refer to something else?

      I only made the following changes since:
      – uploaded a whitelist.json, and added it as mounted file, so far no content, but server property is set to ‚white-list=false‘, so I think it’s not the root cause
      – uploaded a server.properties file and added it as mounted file, with the following content, if you could perhaps give me some tips what to change in the file in order to play from WAN, I would greatly appreciate it:
      server-name=**********
      gamemode=creative
      difficulty=peaceful
      allow-cheats=true
      max-players=10
      online-mode=false
      white-list=false
      server-port=19132
      server-portv6=19133
      view-distance=32
      tick-distance=4
      player-idle-timeout=30
      max-threads=0
      level-name=***********
      level-seed=
      default-player-permission-level=member
      texturepack-required=false

      Thanks in advance for all your efforts!!

    5. „In order to play with your friends, you need to connect via Wi-Fi“ means: connect via Wifi and not cellular network. You can disable this in the options of Minecraft.

    6. Oh yesssss.
      Thanks a lot Marc, that did the trick, sorry for not finding this obivous switch by myself :(
      Finally everything configured perfectly, I can reach my MC world from anywhere in the world :)

      Last step for me to find out how to restrict access to it for only my daughters and their little friends :)

      Thanks a lot for making this thing publicly available and for giving such a caring support and help to us noobs. Keep it up man!

    7. Look at the server.properties file. There is a whitelist parameter. Look the git dockerhub instructions of my container if you need help. They are in english:
      =)

  2. Hallo Marc,
    vielen Dank für den Bedrock Server. Wir greifen auf den Server mit Win 10 PC‘s und Android Tablets zu. Es klappt wunderbar, auch das Hochladen anderer Welten auf den Server. Was wir nicht geschafft haben, ist die Installation von Resource/Behavior/Texture Packs auf den Server zur Erweiterung der Möglichkeiten. Die Packs haben wir in die entsprechenden Verzeichnisse geladen, in server.properties wurden texturepack-required=true gesetzt. Leider ist es uns nicht gelungen, die Packs zu installieren.
    Ist es überhaupt möglich, Packs auf dem Bedrock Server zu installieren? Wenn ja, hast Du ein beliebiges Beispiel für uns, damit wir das mal testen können?
    Vielen Dank im Voraus.

  3. Frage. In der Anleitung steht:
    „Die Einstellungen für den Bedrock-Server müssen in Konfigurationsdateien vorgenommen werden. Diese wurden in den lokalen Verzeichnissen auf dem NAS erzeugt.“

    Wo? Ich finde dort weder eine server.properties, noch eine whitelist.json oder irgendeine Konfigurationsdatei.
    Es gibt in dem mcserver-share einen Ordner „Bedrock Level“ und das wars. Wo finde ich die Konfigurationsdateien? Wie kann ich den Server konfigurieren?

  4. Sorry ,aber das funktioniert nicht. Ich habe genau das gemacht was oben steht:

    server.properties

    File: Die lokale Konfigurationsdatei für den Server. Einfach eine leere Datei nehmen.
    Mount path: /bedrock-server/server.properties
    whitelist.json

    File: Die lokale whitelist.json für den Server. Einfach eine leere Datei nehmen.
    Mount path: /bedrock-server/whitelist.json

    Ich habe leere Dateien im Share erstellt und dann den Mountpath wie in Anleitung geschrieben eingestellt. Das Ergebnis sind dann leere Dateien (die ich ja selbst erstellt habe). Aber müssten da nicht Konfigurationsdaten drinstehen sobald ich den Server starte?
    Und wenn ich im Terminal zum Beispiel den Befehl „Withelist on“ eingebe, bekomme ich nur ein lapidares „not implemented“ zurück. Irgendwo fehlt mir hier eine Information. So wie beschrieben klappt es nicht.

    1. Achso, die erstellten Konfig-Dateien muss man selber füllen. :-)
      (Ich dachte der Server erstellt beim ersten Starten eine Default-Datei).
      Ich habe jetzt Deine Vorlagen aus der korrigierten Anleitung genommen und nun geht es.
      Vielen Dank für Deine Hilfe und danke für die Anleitung.

  5. Hi Marc,
    I’m about to buy a ds918+ and was thinking about to run pihole and a minecraft bedrock server as dockers.
    The ds918+ is pretty strong for a „normal“ user, but it is only a celeron J3455 and so it would be interesting to know how much the system is struggling with the bedrock server edition (CPU usage).
    Would be nice to know how many percent of the cpu will be blocked for about 3-4 persons playing on it. RAM would be 16GB, which should be fine for the bedrock edition.
    I want to run the server during the normal usage.

    1. To make a long story short: Bedrock takes up about 5% CPU load on a Quad-Core at max. While the Java-Paper-Server needs at the one core for its own. Even if no one is online.

      I added a short chapter to this article this goes more into detail. I also provided a screenshot for comparison between java and bedrock.

    2. Hi,
      Thank you for the information. I use the bedrock server on a ssd now (4th bay in a ds918+).
      Almost no performance impact.

      Greetz

  6. Kleiner Tipp für alle, die lokal in „Chat und Befehle“ unter „/“ die Möglichkeiten haben, „Weltspawnpunkt setzen“, „Teleportieren“, Uhrzeit“ und „Wetter“ einzustellen, auf dem Bedrockserver jedoch nicht:
    Bitte eine neue Welt unter 1.14. auf dem Bedrockserver erstellen. Mit der so erzeugten „level.dat“ im Verzeichnis des Bedrockservers die alte „level.dat“ überschreiben. Damit werden auch die Commandbefehle zur Verfügung gestellt.

  7. Hallo,
    Mir ist eine Idee eingefallen, mit der du ggf. noch dein Containerkontigent aufstocken kannst.
    Es ist ja nicht möglich mit der Switch auf externe Server beizutreten, jedoch ist es mittels eines DNS Servers im Netzwerk möglich die DNS Adresse von den 5 „internen“ Adressen auf eine lokale IP Adresse weiterzuleiten.
    Dieser Server kann dann auch nur bei der Switch hinzugefügt werden und über die Docker Parameter könnte man angeben welche DNS (variable 1) zu welcher IP Adresse (Variante 2) weitergeleitet wird.
    Somit könnte jeder den DNS Namen selber ändern, falls Microsoft dies msl tut.
    Darüber würden sich bestimmt viele freuen. Ich habe es mal mit einem Pihole zum laufen bekommen, es kann aber auch „schlanker“ mit dem CoreDNS Docker verwicklicht werden.
    Ein eigenständiger Docker wäre noch netter, aber damit kenne ich mich leider nicht aus.
    Wenn du jemanden kennst, der sich hiermit auskennt, wäre es bestimmt ein recht gut umsetzbare Mini-Projekt.

    Grüße

    1. Hi, hast Du es erfolgreich geschafft mit meinem Bedrock Server in Docker per DNS Proxy zu connecten? Das du das ausführen wie genau und mit welchem Tool? Dann könnte man das ggf. echt mal vorkonfigurieren. Vielleicht gibt es das auch

    2. Hi,
      über einen Raspberry mit PiHole konnte ich mit dem folgenden Befehl eine Weiterleitung umsetzen:
      „pihole -a hostrecord mco.lbsg.net 192.168.178.29“
      wobei die 29 mein Bedrock Server ist. Mit der WAN Adresse funktionierte es auch.

      Es gibt jedoch auch die Möglichkeit dies etwas schlanker auf einen anderen Weg zu lösen:

      Jedoch habe ich es noch nicht so ganz verstanden wie man die „Corefile“ Datei gescheit in den CoreDNS Docker integriert (mit Docker und Co beschäftige ich mich erst eine Woche).

      Aber ja, der Trick funktioniert an sich. Das kann ich bei der aktuellen Version von Bedrock (mit deinem Server) bestätigen.

      Vielleicht kennst du ja noch Leute die in der Docker und Netzwerk Thematik was drauf haben. Es ist eigentlich nichts schweres.

      Grüße

    3. Ich werde heute noch einen andere Anleitung ausprobieren:

      Mit dem Kommando „WILDCARD_DNS“ kann man Adressen intern vergeben und mittels „DNS_FORWARDER=’192.168.178.1′“ kann man den Rest über den hinterlegten Dienst in der Fritzbox laufen lassen.

      So zumindest die Theorie.

    4. Hi,
      ich habe die DNS-Weiterleitung nun mit dem internen DNS-Server von Synology umgesetzt.
      DNS Server > Zones > Create > Master Zone
      Domaine-Name: lbsg.net
      Master-DNS: 1.1.1.1 / 8.8.8.8 oder jeden anderen öffentlichen DNS Server

      Edit > ressource record > Create> a typ
      Name: play
      IP-Adresse: meine DNS Adresse

      Natürlich im Internetrouter noch die DS als DNS Server hinterlegen

    5. Ok, hast Du da mal eine detailierte Anleitung zu? Ich dachte, DNS Server für Synology geht nur mit einer festen IP-Adresse nach draußen ins Internet?

      Kann ich damit dann subdomains einer Domain auf einzelne Docker Container mappen? Das wäre ja sehr cool

  8. Hi Marc, thanks for your work. Nice Docker implementation.

    I tried to install your Docker image on Synology. Everything works like a charm on iPhone. Unfortunately I cannot get it to work on XBOX One S.
    The server doesn’t show up under friends. I also tried to connect to it using the WAN implementation. Then I got the error: „failed to connect to the world“.
    On the log file I don’t see any entries.

    To check if I didn’t configure my XBOX wrongly, I also installed Bedrock on a Windows PC. That works like a charm on iPhone and XBOX. This one does show up under the tab Friends.
    The only special configuration I have on my Synology is a Bond of 2 Lan interfaces.

    Any thoughts?

    1. Maybe something with you LAN or firewall? Are you looking at the right place in Minecraft? If it shows up on you iphone it should show up on you xbox

  9. Hallo Marc,
    der Server läuft soweit ganz gut.
    Ich habe dazu aber noch ein paar Fragen.
    Gibt es die Möglichkeit einen aktuellen Spielstand von der Badrock Edition (Tablet) mit dem Speicherstand auf den Server zu bekommen. Ein einfaches Kopieren in den Worlds Ordner hat leider nur den Seed übernommen, den Rest leider nicht.
    Kann man Backups der Welt auf dem Server ziehen und gibt es einen Weg den kompletten Spielstand zurück auf den Client zu portieren?
    Kann man irgendwo die Koordinaten einschalten? Mit den OP Berechtigungen sieht man den Schalter zwar, aber er schaltet nicht, oder ist das ein Bug?
    Kann man mehr als die auf der Website bei Mojang bekannten Parameter dem Server übergeben?

    Vielen Dank im Voraus
    Michael

    1. Im Container läuft der ganze normale Server von Mojang. Das heißt, alles was es dazu an Dokumention im Netz gibt zur Konvertierung von Welten oder Konfiguration muss auch hier funktionieren. Der Server glaubt, er läuft in einer Ubuntu-Umgebung.
      Wenn du was rausfindest, teil es hier gerne mit allen!

  10. Hallo zusammen,
    also das Problem mit den Koordinaten ist behoben.
    Im Spiel selbst kann man es trotz OP Rechten nicht umschalten. Anscheinend handelt es sich da um einem BUG.
    Auf der Kommandoshell im Docker Server selbst kann man mit dem Befehl
    gamerule showCoordinates true
    die Koordinaten im Spiel einschalten.

    Hat jemand schon eine Idee für den kompletten Savegame transfer zwischen Server und Client?

    Vielen Dank im voraus
    Michael

Schreib einen Kommentar

Wie kann ich mich verifizieren lassen?