This is a new Docker container to automatically set up and run a Minecraft server that both Java and Bedrock players can connect to! This allows everyone to play on your server no matter which edition of Minecraft you are using. It uses the Geyser and Floodgate plugins to accomplish this.
Since it uses the Paper Minecraft server it also supports any additional plugins that are compatible with Paper / Spigot. This gives you the ability to do many things that are currently impossible to do in Bedrock if you are hosting the official Bedrock dedicated server.
It is fully compatible with my Paper Minecraft Java Server Container and you can swap between these two containers without changing any configuration.
The official GitHub page is located here.
The Docker Hub page for the container is located here.
It’s now possible to convert your worlds between Bedrock and Java versions. Check out my guide on Chunker here for more information.
Features
- Sets up fully operational Minecraft server that allows both Java and Bedrock clients to connect
- Runs the highly efficient “Paper” Minecraft server
- Runs Geyser to allow Bedrock clients to connect and Floodgate to allow them to authenticate with their Bedrock credentials to a Java server
- Plugin support for Paper / Spigot / Bukkit
- Uses named Docker volume for safe and easy to access storage of server data files (which enables more advanced Docker features such as automatic volume backups)
- Installs and configures OpenJDK 18
- Automatic backups to minecraft/backups when server restarts
- Full logging available in minecraft/logs folder
- Updates automatically to the latest version when server is started
- Runs on all Docker platforms including Raspberry Pi
Usage
First you must create a named Docker volume. This can be done with:
docker volume create yourvolumename
Now you may launch the server and open the ports necessary with one of the following Docker launch commands.
With default ports:
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
With custom ports:
docker run -it -v yourvolumename:/minecraft -p 12345:12345 -e Port=12345 -p 54321:54321/udp -p 54321:54321 -e BedrockPort=54321 --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
With a custom Minecraft version (add -e Version=1.X.X, must be present on Paper’s API servers to work):
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e Version=1.17.1 --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
With a maximum memory limit in megabytes (optional, prevents crashes on platforms with limited memory, -e MaxMemory=2048):
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e MaxMemory=2048 --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
Using a custom timezone:
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e TZ="America/Denver" --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
Skipping backups on a certain folder:
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e NoBackup="plugins" --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
Skipping permissions check:
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e NoPermCheck="Y" --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
Change number of backups:
docker run -it -v yourvolumename:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e BackupCount=1 --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
Configuration / Accessing Server Files
The server data is stored where Docker stores your volumes. This is typically a folder on the host OS that is shared and mounted with the container. I’ll give the usual locations here but if you’re having trouble just do some Googling for your exact platform and you should find where Docker is storing the volume files.
You can find your exact path by typing:
docker volume inspect yourvolumename
This will give you the fully qualified path to your volume like this:
{ "CreatedAt": "2022-05-09T21:08:34-06:00", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/yourvolumename/_data", "Name": "yourvolumename", "Options": {}, "Scope": "local" }
On Linux it’s typically available at:
/var/lib/docker/volumes/yourvolumename/_data
On Windows it’s at
C:\ProgramData\DockerDesktop
but may be located at something more like
\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
if you are using WSL (Windows Subsystem for Linux).
On Mac it’s typically
~/Library/Containers/com.docker.docker/Data/vms/0/
If you are using Docker Desktop on Mac then you need to access the Docker VM with the following command first:
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
You can then normally access the Docker volumes using the path you found in the first step with docker volume inspect.
Most people will want to edit server.properties. You can make the changes to the file and then restart the container to make them effective.
Backups are stored in the “backups” folder
Log files with timestamps are stored in the “logs” folder.
Plugin Support for Paper / Spigot / Bukkit
This is a “Paper” Minecraft server which has plugin compatibility with Paper / Spigot / Bukkit.
Installation is simple. There is a “plugins” folder on your Docker named volume.
Navigate to your server files on your host operating system (see accessing server files section if you don’t know where this is) and you will see the “plugins” folder.
You just need to drop the extracted version of the plugin (a .jar file) into this folder and restart the container. That’s it!
Some plugins have dependencies so make sure you read the installation guide first for the plugin you are looking at.
A popular place to get plugins is: dev.bukkit.org
Troubleshooting Note – Oracle Virtual Machines
A very common problem people have with the Oracle Virtual Machine tutorials out there that typically show you how to use a free VM is that the VM is much more difficult to configure than just about any other product / offering out there.
It is because there are several steps you need to take to open the ports on the Oracle VM. You need to both:
- Set the ingress ports (TCP/UDP) in the Virtual Cloud Network (VCN) security list
- *and* set the ingress ports in a Network Security Group assigned to your instance
Both of these settings are typically required before you will be able to connect to your VM instance. This is purely configuration related and has nothing to do with the script or the Minecraft server itself.
I do not recommend this platform due to the configuration difficulty but the people who have gone through the pain of configuring an Oracle VM have had good experiences with it after that point. Just keep in mind it’s going to be a rough ride through the configuration for most people.
Troubleshooting Note – Hyper-V
There is a weird bug in Hyper-V that breaks UDP connections on the Minecraft server. The easy workaround for this is that you have to use a Generation 1 VM with the Legacy LAN network driver.
There is a second fix that was shared by bpsimons here. For that fix you need to install ethtool first with sudo apt install ethtool. Next in your /etc/network/interfaces file add “offload-tx off” to the bottom as the issue appears to be with TX offloading.
Here’s an example:
# The primary network interface auto eth0 iface eth0 inet static address 192.168.1.5 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 gateway 192.168.1.1 offload-tx off
This can also be done non-persistently with the following ethtool command:
ethtool -K eth0 tx off
Additional Support
The comments section right here is the best place for support. The second best place is the GitHub issues section.
I will add additional documentation based on what problems people are running into / questions people are asking because right now I’m not really sure what those will be yet. Definitely let me know if you need any of these things!
Hey James, I was wondering if the server uses all available ram or if I have to allocate more for it to do so. Thanks.
Hey Ray J,
I’d definitely recommend allocating more to do so. Hopefully that helps!
Thanks! It runs better now.
Hello again! Hope you can help. I have installed a secondary drive on my Pi, and would like to run the Minecraft server from that SSD rather than the boot SD card. Since creating the volume puts it on the boot drive by default, do you know how can I move it to the SSD?
Many, many thanks for this project!
Hey DeltaGemini,
You can use hard paths instead of a volume like this:
docker run -it -v /path/to/yourfolder:/minecraft
/path/to/yourfolder should point to a folder on the SSD.
Hopefully that helps!
Perfect! Thank you so much
Hi James,
Had my server offline for about a month while I worked on network refresh and the like.
Started up the server, ran updates on it, reboot, launched using default ports command as always, it does its thing, Launch MC app, and it has in big red letters “Paper 1.19.4”
Clearly one thing updated, the other didn’t…Thoughts?
Hey Arathi,
Either do a:
docker pull 05jchambers/legendary-minecraft-geyser-floodgate:latest
or launch with:
-e Version=1.20.1
It will not update major Minecraft revisions by default. You need to specify it or pull the latest version which has a default version of 1.20.1 now.
Hopefully that helps!
Thanks James, that fixed the issue.
Hey Arathi,
Glad to hear it, enjoy and take care!
Just started using AMP (game panel) wish THIS and all things you make was there 😛 (hint not hint maby, sigh)
Hey Ostehovelen,
I’ve definitely thought about doing something like this and another similar suggestion I have got a lot of is Portainer. I definitely do want to dive into these eventually. Thanks for the hint and take care!
Looks like all my clients updated today to 1.20 and are complaining that “the server does not support Java Edition 1.20 which is required for Geyser to connect.” From reading the comments I thought that ViaVersion would handle it but the message I get says “The server needs to update or have ViaVersion plusing installed. Original disconnect message: Outdated server! I’m still on 1.19.4”
Anything I need to check or change to get it back to where 1.20 clients can connect?
Thanks!
Hey John,
ViaVersion added support for 1.20 about 17 hours ago. That was almost exactly when you made this post. Restarting your server should download the latest version.
Hopefully that helps!
Hi James,
Thanks for your reply!
It looks like ViaVersion is not updating. Early in the startup sequence I get:
Floodgate is up to date
Geyser is up to date
Unable to check for updates to ViaVersion!
Starting Minecraft server...
And then later:
[07:38:16 INFO]: [ViaVersion] Enabling ViaVersion v4.6.3-SNAPSHOT
[07:38:16 INFO]: [ViaVersion] ViaVersion detected server version: 1.19.4 (762)
[07:38:16 WARN]: [ViaVersion] ViaVersion does not have any compatible versions for this server version!
[07:38:16 WARN]: [ViaVersion] Please remember that ViaVersion only adds support for versions newer than the server version.
[07:38:16 WARN]: [ViaVersion] If you need support for older versions you may need to use one or more ViaVersion addons too.
[07:38:16 WARN]: [ViaVersion] In that case please read the ViaVersion resource page carefully or use https://jo0001.github.io/ViaSetup
[07:38:16 WARN]: [ViaVersion] and if you're still unsure, feel free to join our Discord-Server for further assistance.
[07:38:16 INFO]: [Geyser-Spigot] Enabling Geyser-Spigot v2.1.1-SNAPSHOT
[07:38:16 INFO]: [Geyser-Spigot] ******************************************
[07:38:16 INFO]: [Geyser-Spigot]
[07:38:16 INFO]: [Geyser-Spigot] Loading Geyser version 2.1.1-SNAPSHOT (git-master-f3cc93c)
[07:38:16 INFO]: [Geyser-Spigot]
[07:38:16 INFO]: [Geyser-Spigot] ******************************************
[07:38:22 INFO]: [Geyser-Spigot] Started Geyser on 0.0.0.0:19132
[07:38:22 INFO]: [Geyser-Spigot] Done (5.705s)! Run /geyser help for help!
[07:38:22 INFO]: Running delayed init tasks
[07:38:22 WARN]: [Geyser-Spigot] You are using an outdated version of ViaVersion; please download the newest version from https://ci.viaversion.com/job/ViaVersion/
[07:38:22 INFO]: Done (10.484s)! For help, type "help"
[07:38:22 INFO]: Timings Reset
[07:38:22 INFO]: [ViaVersion] Finished mapping loading, shutting down loader executor!
[07:38:22 WARN]: [ViaVersion] There is a newer plugin version available: 4.7.0, you're on: 4.6.3-SNAPSHOT
Is there something to check on this end for why the container is unable to update ViaVersion?
Thanks!
Hey John,
That’s a bug that was fixed almost 6 months ago. The current version of ViaVersion is actually 4.7.1. You are 10 versions out of date.
Just pull the latest version of the container with:
docker pull 05jchambers/legendary-minecraft-geyser-floodgate:latest
That should get it going here!
Hi James,
I also got this message. When stopping the container and start it again with the long sudo command, I get this:
Last login: Thu Jun 8 17:11:05 on ttys000
marijnsijbers@MacSiep-Pro ~ % ssh pi@raspberrypi.local
pi@raspberrypi.local's password:
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Jun 8 16:11:10 2023 from 2a02:a452:a55b:1:d828:6699:e083:deb3
pi@raspberrypi:~ $ sudo screen docker run -it -v Minecraft:/minecraft -p 25565:25565 -p 19132:19132/udp -p 19132:19132 -e ScheduleRestart="3:30" --restart unless-stopped 05jchambers/legendary-minecraft-geyser-floodgate:latest
[09:27:58 INFO]: Preparing start region for dimension minecraft:the_nether
[09:27:58 INFO]: Time elapsed: 133 ms
[09:27:58 INFO]: Preparing start region for dimension minecraft:the_end
[09:27:59 INFO]: Time elapsed: 147 ms
[09:27:59 INFO]: [floodgate] Enabling floodgate v2.2.2-SNAPSHOT (b87-e23f1b2)
[09:28:01 INFO]: [ViaVersion] Enabling ViaVersion v4.6.3-SNAPSHOT
[09:28:01 INFO]: [ViaVersion] ViaVersion detected server version: 1.19.4 (762)
[09:28:01 WARN]: [ViaVersion] ViaVersion does not have any compatible versions for this server version!
[09:28:01 WARN]: [ViaVersion] Please remember that ViaVersion only adds support for versions newer than the server version.
[09:28:01 WARN]: [ViaVersion] If you need support for older versions you may need to use one or more ViaVersion addons too.
[09:28:01 WARN]: [ViaVersion] In that case please read the ViaVersion resource page carefully or use https://jo0001.github.io/ViaSetup
[09:28:01 WARN]: [ViaVersion] and if you're still unsure, feel free to join our Discord-Server for further assistance.
[09:28:01 INFO]: [Geyser-Spigot] Enabling Geyser-Spigot v2.1.1-SNAPSHOT
[09:28:01 INFO]: [Geyser-Spigot] ******************************************
[09:28:01 INFO]: [Geyser-Spigot]
[09:28:01 INFO]: [Geyser-Spigot] Loading Geyser version 2.1.1-SNAPSHOT (git-master-231e9a1)
[09:28:01 INFO]: [Geyser-Spigot]
[09:28:01 INFO]: [Geyser-Spigot] ******************************************
[09:28:24 INFO]: [Geyser-Spigot] Started Geyser on 0.0.0.0:19132
[09:28:24 INFO]: [Geyser-Spigot] Done (22.51s)! Run /geyser help for help!
[09:28:24 INFO]: Running delayed init tasks
[09:28:24 WARN]: [Geyser-Spigot] You are using an outdated version of ViaVersion; please download the newest version from https://ci.viaversion.com/job/ViaVersion/
[09:28:24 INFO]: Done (41.179s)! For help, type "help"
[09:28:24 INFO]: Timings Reset
[09:28:24 INFO]: [ViaVersion] Finished mapping loading, shutting down loader executor!
[09:28:25 WARN]: [ViaVersion] There is a newer plugin version available: 4.7.0, you're on: 4.6.3-SNAPSHOT
It does not update ViaVersion.
Hey Marijn,
You have almost as old of a ViaVersion as John but yours is slightly newer than his. The problem is the same though. You need to pull the latest version of the container with:
That’s a bug that was fixed almost 6 months ago. The current version of ViaVersion is actually 4.7.1. You are actually 10 versions out of date. ViaVersion changed their update server around that time so you will need an update to have ViaVersion update itself.
docker pull 05jchambers/legendary-minecraft-geyser-floodgate:latest
That should get it going here!
Hello James, same by mine: ViaVersion – Unable to check for updates to ViaVersion! I´m running Version 4.7.0. Can´t find 4.7.1 as you wrote. But it is still working. Ido have another warning:
...*** Warning, you've not updated in a while! ***
*** Please download a new build as per instructions from https://papermc.io/downloads/paper ***..."
I´ve just runned “docker pull 05jchambers/legendary-minecraft-geyser-floodgate:latest” after stopping the container. My container is in an extra volume called MC-Paper. After pulling I´ve just to start the container again or do I have write a special update command?
Best regards
Michael
I pulled down the latest ViaVersion jar and put it in the plugins directory of the container and it is now working. I still cannot figure out why it is not able to update on its own.
Same here. Not updating. But I never were able to look into the docker folder, so that is not an option for me.
Hey would you ever be open to making the instructions include using portainer? It has been really useful to manage things docker related!
Trying to simply run the container (I’m quite used with Docker containers), I get the following message, could you tell me what I miss there ?
Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,Paper Minecraft Java Server Docker + Geyser/Floodgate script by James A. Chambers
,Latest version always at https://github.com/TheRemote/Legendary-Java-Minecraft-Geyser-Floodgate
,Don't forget to set up port forwarding on your router! The default port is 25565 and the Bedrock port is 19132
,Port used: 25565
,Bedrock port used: 19132
,Taking ownership of all server files/folders in /minecraft...
,Complete
,Updating to most recent paperclip version ...
,Unable to connect to update website (internet connection may be down). Skipping update ...
,Starting Minecraft server...
,Error: Unable to access jarfile /minecraft/paperclip.jar
,
Hey Thierry,
The issue here is that you have no DNS. It can’t contact the update web site. You can confirm this with:
sudo docker run alpine:latest ping google.com
This usually occurs due to using an older version of your operating system. For example when we’ve seen this in the past people are not running their latest release and will be running things like Ubuntu 20.04 instead of 22.04 (the latest) or the previous Debian version. Updating to your latest OS release should fix this.
Hopefully that helps!