Help with Minecraft servers
Minecraft server guides
Search for an error or choose a topic.
Getting Started & Choices
4 guides
Choose server software, a Java version, and hosting.
Paper vs Fabric: Which Minecraft server should you choose?
Paper for plugins or Fabric for mods? Compare compatibility, performance and Vanilla behavior, then build your Minecraft Docker Compose file.
Set up a Minecraft server on Hetzner with Docker Compose
Set up a Java server on Hetzner Cloud: Debian, SSH access, Docker Compose, and the first server start.
Minecraft Java version: Java 25, 21, 17 and class-file errors
Find the Java version for your Minecraft server. Fix class-file errors 69.0, 65.0 and 61.0 and choose the right itzg Docker image tag.
Set up Velocity and Paper with Docker Compose
Connect your proxy and server while keeping Paper ports isolated from the internet.
Docker Operations
5 guides
Manage, migrate, and update servers.
Manage Minecraft in Docker with RCON and the console
Run server commands, manage the whitelist, and stop the server without exposing RCON publicly.
Update and roll back Minecraft with Docker Compose
Back up configuration and data before updating, then restore both together if you need to roll back.
Find why your Minecraft container keeps restarting
Capture the container state and first startup error before interrupting the restart loop.
Fix permission denied errors for Minecraft in Docker
Match data-directory ownership to the container UID and GID.
Move an existing Minecraft server to Docker
Transfer your world, configuration, and extensions while keeping the original server available for rollback.
Mods & Plugins
3 guides
Install and maintain Paper plugins and modpacks.
Install Paper plugins with Docker Compose
Install plugins from a source directory or Modrinth and test updates before using them.
Run Modrinth modpacks with Docker Compose
Pin the pack version and Java runtime, then match the server and client before the first start.
Run CurseForge modpacks with Docker Compose
Configure AUTO_CURSEFORGE, pin the pack file, and handle the API key and manual downloads.
Networking
7 guides
Check ports, domains, proxies, and connections.
Open Minecraft port 25565 on Hetzner and Linux
Check Docker port publishing and firewalls when your server runs but players cannot connect.
Set up a Minecraft domain without a port using SRV
Connect a domain to your Java server and check its SRV and A/AAAA records.
Set up Geyser and Floodgate on Paper
Let Bedrock players join a Java server: install the plugins, configure RakNet or NetherNet, and test the connection.
Velocity cannot reach Paper: check the Docker connection
Check container state, the shared network, service name, and backend port.
Set up Geyser and Floodgate on Velocity with Docker
Install Geyser on the proxy, configure RakNet or NetherNet, and check Bedrock player authentication.
Fix NetherNet connections on your Bedrock server
Friends cannot join after an update? Check the new port rules and the address they can reach.
Set up NetherNet on your Geyser server
Set up the newer connection method for Bedrock players and find out why joins fail.
Backups
3 guides
Back up and restore worlds.
Set up automatic Minecraft backups with itzg/mc-backup
Add a backup container, set retention periods, and verify the resulting archives.
Restore a Minecraft world from a Docker backup
Stop the server, preserve the current data, and restore the selected backup.
Hetzner snapshots and Minecraft data on volumes
Hetzner snapshots exclude attached volumes. Check where your world is stored and back it up separately.
Performance
4 guides
Measure lag and investigate its cause.
Investigate Minecraft lag: TPS, MSPT, and “Can’t keep up”
Check tick times and investigate CPU, chunk, entity, and plugin problems.
Investigate lag with Spark Profiler in Paper and Docker
Record a profile while lag occurs and identify costly plugins, tasks, and server activity.
Configure view distance and simulation distance in Paper
Compare viewing distance and active simulation, then measure their effect on server load.
Minecraft exit code 137: check OOMKilled and memory limits
Exit code 137 means SIGKILL. Check OOMKilled, Java heap, and container limits to identify memory exhaustion.
Security
2 guides
Restrict access, file permissions, and ports.