Docker Minecraft PaperMC server for AMD64 and ARM64 platforms. Works on Synology, Raspberry Pi or any other systems that support docker.
Always up-to-date with the latest PaperMC version.
docker run --name mcserver -e MEMORYSIZE='1G' -v /home/joe/mcserver:/data:rw -p 25565:25565 -i marctv/minecraft-papermc-server:latest
The server will generate all data including the world and config files in /home/joe/mcserver
. Change that to an
existing folder.
docker run -d \
--name mcserver \
--restart=unless-stopped \
-e MEMORYSIZE="1G" \
-p 25565:25565/tcp \
-p 25565:25565/udp \
-v /home/docker/mcserver:/data:rw \
marctv/minecraft-papermc-server:latest
services:
minecraft:
image: marctv/minecraft-papermc-server:latest
restart: always
container_name: "mcserver"
environment:
MEMORYSIZE: "1G"
PAPERMC_FLAGS: ""
volumes:
- minecraftserver:/data
ports:
- "25565:25565"
# The following allow `docker attach minecraft` to work
stdin_open: true
tty: true
volumes:
minecraftserver:
docker pull marctv/minecraft-papermc-server:latest
docker stop mcserver
Or just use https://containrrr.dev/watchtower/
You can get the desired UID/GID (xxx) with the ID command (id username) then add the following to your docker run command:
-e PUID=xxx
-e PGID=xxx
If you have a big custom minecraft install (e.g. multiple plugins which generate files), changing ownership can take up a tremendous amount of time. You can skip this, by making sure that your files have the necessary permissions for the UID/GID that you passed using the environment variables above and then add the following variable:
-e SKIP_PERM_CHECK=true
If you prefer to use docker compose
, use the following commands:
Start the server:
docker compose up
Stop the server:
docker compose stop
Issue server commands after attaching to the container:
docker attach mcserver
# then you can type things like "list"
list
# which will show the current players online or
help
# to see all the commands available
Additionally, a Makefile
is provided to easily start, stop, and attach to the container.
make start # equivalent to `docker compose up -d --build`
make stop # equivalent to `docker compose stop --rmi all --remove-orphans`
make attach # equivalent to `docker attach mcserver`
make help # prints a help message
MEMORYSIZE = 1G
Not more than 70% of your RAM for your container. This is important. Because this is the RAM, your Minecraft Server will use within the container WITHOUT the operating system.
TZ = Europe/Berlin
Sets the timezone for the container. A list of valid values can be found on Wikipedia: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
PAPERMC_FLAGS = --nojline
Optional: Sets the command-line flags for PaperMC. Remove --nojline
if you want to enable color and tab-completion for
the server console.
JAVAFLAGS
Optional: Overrides the optimized java parameter configuration with your own. You can set your own Xms and Xmx values this way.
Tutorial (german) https://marc.tv/anleitung-stabiler-minecraft-server-synology-nas/
You can install this docker container by using my dedicated installer: https://github.com/mtoensing/RaspberryPiMinecraftDocker Or just follow these steps:
ssh pi@raspberrypi
sudo apt update && sudo apt upgrade
sudo reboot now
The Raspberry Pi will restart now.
curl -fsSL https://get.docker.com -o get-docker.sh
chmod +x get-docker.sh
./get-docker.sh
sudo apt-get install -y uidmap
dockerd-rootless-setuptool.sh install
sudo usermod -aG docker $USER
sudo systemctl enable docker
newgrp docker
cd
mkdir mcserver
docker run -d \
--restart unless-stopped \
--name mcserver \
-e MEMORYSIZE='1G' \
-e PAPERMC_FLAGS='' \
-v /home/pi/mcserver:/data:rw \
-p 25565:25565 \
-it docker.io/marctv/minecraft-papermc-server:latest
The server will generate all data including the world and config files in /home/pi/mcserver
.
docker attach mcserver
Here, you can use Minecraft server commands like whitelist add [userrname]
.
On GitHub https://github.com/mtoensing/Docker-Minecraft-PaperMC-Server
This server is live here: https://mc.marc.tv
Based on the work of Felix Klauke Thanks for your help!