[{"data":1,"prerenderedAt":666},["ShallowReactive",2],{"\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose\u002F":3,"guides:en":497,"published-guide-paths":639},{"id":4,"title":5,"author":6,"body":7,"category":452,"date":453,"description":454,"excerpt":455,"extension":456,"faq":457,"featured":467,"featuredOrder":455,"indexOrder":468,"localeGroup":469,"meta":470,"navigation":471,"path":472,"primaryTool":455,"published":471,"related":473,"seo":477,"slug":478,"sources":479,"stem":495,"updated":453,"__hash__":496},"guides\u002Fguides\u002F19.minecraft-container-keeps-restarting-docker-compose.md","Minecraft Container Keeps Restarting: Diagnose the Docker Compose Loop","setupmc.com Team",{"type":8,"value":9,"toc":441},"minimark",[10,15,24,35,39,50,60,66,70,73,79,82,85,178,181,187,191,194,200,222,226,338,341,349,356,360,363,369,372,378,381,385,388,414,418],[11,12,14],"h2",{"id":13},"what-a-restart-loop-actually-means","What a restart loop actually means",[16,17,18,19,23],"p",{},"With ",[20,21,22],"code",{},"restart: unless-stopped",", Docker starts the same container again after its main process terminates. The restart policy is exposing a failure; it is not the cause.",[16,25,26,27,30,31,34],{},"An ",[20,28,29],{},"unhealthy"," status is different. The itzg image checks the Minecraft server with ",[20,32,33],{},"mc-health",", but a normal Docker restart policy does not restart a container merely because its healthcheck fails. If that happens, look for an auto-heal container, Portainer rule, or orchestrator.",[11,36,38],{"id":37},"stop-the-loop-without-deleting-evidence","Stop the loop without deleting evidence",[16,40,41,42,45,46,49],{},"Do not begin with ",[20,43,44],{},"docker compose down",", volume deletion, or a fresh ",[20,47,48],{},"\u002Fdata",". Disable the runtime restart policy on the existing container and let its current failing start end naturally:",[51,52,58],"pre",{"className":53,"code":55,"language":56,"meta":57},[54],"language-bash","docker compose ps -a\nmc_container_id=\"$(docker compose ps -a -q mc)\"\ndocker update --restart=no \"$mc_container_id\"\ndocker wait \"$mc_container_id\"\n","bash","",[20,59,55],{"__ignoreMap":57},[16,61,62,65],{},[20,63,64],{},"docker wait"," prints the exit code. This avoids sending a new stop signal that could replace the failure state you are trying to inspect. The production policy remains in Compose and returns when the service is recreated.",[11,67,69],{"id":68},"capture-exit-state-and-the-first-error","Capture exit state and the first error",[16,71,72],{},"Inspect the preserved last state:",[51,74,77],{"className":75,"code":76,"language":56,"meta":57},[54],"docker inspect \"$mc_container_id\" --format 'exit={{.State.ExitCode}} oom={{.State.OOMKilled}} error={{json .State.Error}} restarts={{.RestartCount}}'\ndocker compose logs --tail=250 --timestamps mc\n",[20,78,76],{"__ignoreMap":57},[16,80,81],{},"Read from the top of the failing startup. The final lines often contain only shutdown noise caused by the earlier error.",[16,83,84],{},"Useful interpretations:",[86,87,88,104],"table",{},[89,90,91],"thead",{},[92,93,94,98,101],"tr",{},[95,96,97],"th",{},"Result",[95,99,100],{},"Meaning",[95,102,103],{},"Next check",[105,106,107,131,154,167],"tbody",{},[92,108,109,113,116],{},[110,111,112],"td",{},"Exit 1",[110,114,115],{},"Initialization or application error",[110,117,118,119,122,123,126,127,130],{},"First ",[20,120,121],{},"ERROR",", ",[20,124,125],{},"Exception",", or ",[20,128,129],{},"[init]"," failure",[92,132,133,136,142],{},[110,134,135],{},"Exit 137",[110,137,138,139],{},"Process received ",[20,140,141],{},"SIGKILL",[110,143,144,145,148,149],{},"Check ",[20,146,147],{},"OOMKilled","; use the ",[150,151,153],"a",{"href":152},"\u002Fguides\u002Fminecraft-docker-exit-code-137-oomkilled\u002F","Exit 137 runbook",[92,155,156,159,164],{},[110,157,158],{},"Exit 143",[110,160,138,161],{},[20,162,163],{},"SIGTERM",[110,165,166],{},"Look for an operator, deployment, or stop timeout",[92,168,169,172,175],{},[110,170,171],{},"Running but unhealthy",[110,173,174],{},"Process still exists, health probe fails",[110,176,177],{},"Inspect health output and server readiness",[16,179,180],{},"Inspect the healthcheck history when the container did not exit:",[51,182,185],{"className":183,"code":184,"language":56,"meta":57},[54],"docker inspect \"$mc_container_id\" --format '{{json .State.Health}}'\ndocker compose logs --tail=250 mc\n",[20,186,184],{"__ignoreMap":57},[11,188,190],{"id":189},"validate-the-effective-compose-configuration","Validate the effective Compose configuration",[16,192,193],{},"Many loops come from editing a file that Compose is not actually using:",[51,195,198],{"className":196,"code":197,"language":56,"meta":57},[54],"docker compose config\ndocker compose images\ndocker image inspect \"$(docker compose images -q mc)\" --format '{{json .Config.Labels}}'\n",[20,199,197],{"__ignoreMap":57},[16,201,202,203,122,206,122,209,212,213,216,217,221],{},"Confirm the effective ",[20,204,205],{},"image",[20,207,208],{},"TYPE",[20,210,211],{},"VERSION",", Java tag, volumes, and memory settings. ",[20,214,215],{},"docker compose restart"," does ",[218,219,220],"strong",{},"not"," apply changed environment variables; recreation does.",[11,223,225],{"id":224},"match-the-first-error-to-the-cause","Match the first error to the cause",[86,227,228,241],{},[89,229,230],{},[92,231,232,235,238],{},[95,233,234],{},"First useful error",[95,236,237],{},"Likely cause",[95,239,240],{},"Fix",[105,242,243,260,274,291,305,316,327],{},[92,244,245,248,257],{},[110,246,247],{},"EULA is not accepted",[110,249,250,253,254],{},[20,251,252],{},"EULA"," missing or not ",[20,255,256],{},"TRUE",[110,258,259],{},"Correct Compose and recreate the service",[92,261,262,265,268],{},[110,263,264],{},"Unsupported class-file or Java error",[110,266,267],{},"Wrong Java image for Minecraft\u002Fmodpack",[110,269,270],{},[150,271,273],{"href":272},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server\u002F","Select the required Java tag",[92,275,276,281,284],{},[110,277,278,279],{},"Permission denied under ",[20,280,48],{},[110,282,283],{},"Host ownership differs from container UID\u002FGID",[110,285,286,287],{},"Follow the ",[150,288,290],{"href":289},"\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server\u002F","permissions runbook",[92,292,293,296,302],{},[110,294,295],{},"No matching server\u002Fmodpack version",[110,297,298,299,301],{},"Invalid ",[20,300,208],{},", version, project, or file ID",[110,303,304],{},"Pin a compatible release from the primary source",[92,306,307,310,313],{},[110,308,309],{},"Plugin\u002Fmod loading exception",[110,311,312],{},"Incompatible or duplicated artifact",[110,314,315],{},"Restore the last working set while stopped",[92,317,318,321,324],{},[110,319,320],{},"Cannot reserve memory",[110,322,323],{},"Heap exceeds available container\u002Fhost memory",[110,325,326],{},"Reduce heap or increase verified capacity",[92,328,329,332,335],{},[110,330,331],{},"Port already allocated",[110,333,334],{},"Another container\u002Fprocess owns the host port",[110,336,337],{},"Identify the owner; do not change ports blindly",[16,339,340],{},"For noisy image initialization, temporarily add:",[51,342,347],{"className":343,"code":345,"language":346,"meta":57},[344],"language-yaml","environment:\n  DEBUG: \"TRUE\"\n  DEBUG_EXEC: \"TRUE\"\n","yaml",[20,348,345],{"__ignoreMap":57},[16,350,351,352,355],{},"Use ",[20,353,354],{},"DEBUG_MEMORY: \"TRUE\""," only for JVM allocation failures. Remove debug flags after diagnosis because they make logs much larger and can expose more configuration detail.",[11,357,359],{"id":358},"apply-and-verify-the-correction","Apply and verify the correction",[16,361,362],{},"After editing Compose, recreate rather than restart:",[51,364,367],{"className":365,"code":366,"language":56,"meta":57},[54],"docker compose config\ndocker compose up -d --force-recreate mc\ndocker compose logs -f mc\n",[20,368,366],{"__ignoreMap":57},[16,370,371],{},"Wait for the normal ready message, then verify stability instead of declaring success after one minute:",[51,373,376],{"className":374,"code":375,"language":56,"meta":57},[54],"docker compose exec mc rcon-cli version\ndocker compose exec mc rcon-cli save-all flush\ndocker inspect \"$(docker compose ps -q mc)\" --format 'restarts={{.RestartCount}} health={{.State.Health.Status}}'\n",[20,377,375],{"__ignoreMap":57},[16,379,380],{},"Repeat the last command after several minutes. The restart count must stay unchanged.",[11,382,384],{"id":383},"do-not-hide-the-failure","Do not hide the failure",[16,386,387],{},"Avoid these non-fixes:",[389,390,391,395,401,404,407],"ul",{},[392,393,394],"li",{},"removing the restart policy and assuming the server is repaired",[392,396,397,398,400],{},"deleting ",[20,399,48],{}," before preserving the failing state",[392,402,403],{},"increasing every timeout without reading the first error",[392,405,406],{},"disabling the image healthcheck to conceal a server that never becomes ready",[392,408,409,410,413],{},"repeatedly pulling ",[20,411,412],{},"latest"," and changing the failure surface",[11,415,417],{"id":416},"next-steps","Next steps",[389,419,420,427,434],{},[392,421,422,423,426],{},"If the exit code is 137, continue with ",[150,424,425],{"href":152},"OOMKilled and memory diagnosis",".",[392,428,429,430,426],{},"For modpack initialization failures, use the ",[150,431,433],{"href":432},"\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker\u002F","CurseForge Docker runbook",[392,435,436,437,426],{},"Once stable, apply the ",[150,438,440],{"href":439},"\u002Fguides\u002Fsecure-minecraft-server-docker-compose\u002F","Minecraft Docker security baseline",{"title":57,"searchDepth":442,"depth":442,"links":443},2,[444,445,446,447,448,449,450,451],{"id":13,"depth":442,"text":14},{"id":37,"depth":442,"text":38},{"id":68,"depth":442,"text":69},{"id":189,"depth":442,"text":190},{"id":224,"depth":442,"text":225},{"id":358,"depth":442,"text":359},{"id":383,"depth":442,"text":384},{"id":416,"depth":442,"text":417},"docker-operations","2026-07-18","Find out why an itzg\u002Fminecraft-server container repeatedly restarts. This runbook preserves the first error, separates exited from unhealthy containers, and fixes the actual cause.",null,"md",[458,461,464],{"question":459,"answer":460},"Does an unhealthy container restart automatically?","Not from a normal Docker restart policy alone. The policy reacts when the container terminates. An external auto-heal service or orchestrator can choose to restart unhealthy containers.",{"question":462,"answer":463},"Why does docker compose restart not apply my fixed environment variables?","The restart command reuses the existing container configuration. Run docker compose up -d mc to recreate the service with the changed Compose configuration.",{"question":465,"answer":466},"Should I remove restart: unless-stopped while debugging?","Disable the existing container's runtime restart policy, wait for the next failure, and diagnose that stopped container. Keep the production policy in the Compose file and recreate the service after the cause is fixed.",false,"3","docker-minecraft-restart-loop",{},true,"\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose",[474,475,476],"minecraft-docker-exit-137-oom","itzg-permission-denied","java-version-minecraft-server",{"title":5,"description":454},"minecraft-container-keeps-restarting-docker-compose",[480,483,486,489,492],{"title":481,"url":482},"Docker restart policy documentation","https:\u002F\u002Fdocs.docker.com\u002Fengine\u002Fcontainers\u002Fstart-containers-automatically\u002F",{"title":484,"url":485},"Docker Compose restart reference","https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcli\u002Fdocker\u002Fcompose\u002Frestart\u002F",{"title":487,"url":488},"Docker Compose services reference","https:\u002F\u002Fdocs.docker.com\u002Freference\u002Fcompose-file\u002Fservices\u002F",{"title":490,"url":491},"itzg troubleshooting documentation","https:\u002F\u002Fdocker-minecraft-server.readthedocs.io\u002Fen\u002Flatest\u002Fmisc\u002Ftroubleshooting\u002F",{"title":493,"url":494},"itzg healthcheck documentation","https:\u002F\u002Fdocker-minecraft-server.readthedocs.io\u002Fen\u002Flatest\u002Fmisc\u002Fhealthcheck\u002F","guides\u002F19.minecraft-container-keeps-restarting-docker-compose","k7mydboFocxBBd-HLx0JDzSOmcG7eh58hnx4NhGL0fc",[498,505,511,517,522,527,533,538,543,544,549,554,559,565,570,575,581,587,593,599,605,610,616,622,628,633],{"path":499,"title":500,"description":501,"excerpt":455,"author":6,"date":502,"category":503,"localeGroup":504},"\u002Fguides\u002Fvelocity-proxy-docker-compose-itzg-mc-proxy","Set Up a Velocity Proxy with Docker Compose and itzg\u002Fmc-proxy","Run Velocity and Paper together with Docker Compose, route players through the proxy, keep backend ports private, and validate the complete connection path.","2026-08-01","getting-started","velocity-proxy-docker-compose",{"path":506,"title":507,"description":508,"excerpt":455,"author":6,"date":502,"category":509,"localeGroup":510},"\u002Fguides\u002Fvelocity-modern-forwarding-paper-docker","Configure Velocity Modern Forwarding with Paper in Docker","Match Velocity and Paper forwarding settings, protect the forwarding secret, block direct backend access, and verify that player identity reaches Paper safely.","security","velocity-modern-forwarding-paper",{"path":512,"title":513,"description":514,"excerpt":455,"author":6,"date":502,"category":515,"localeGroup":516},"\u002Fguides\u002Fvelocity-proxy-cannot-connect-backend-docker","Velocity Proxy Cannot Connect to a Backend in Docker: A Runbook","Fix Velocity backend connection failures by checking container state, Docker networks, service-name DNS, the container port, Paper readiness, and forwarding separately.","networking","velocity-backend-unreachable-docker",{"path":518,"title":519,"description":520,"excerpt":455,"author":6,"date":502,"category":515,"localeGroup":521},"\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker","Run Geyser and Floodgate on a Velocity Proxy with Docker","Add Bedrock crossplay at the Velocity edge, publish UDP 19132 correctly, configure Floodgate authentication, and keep Geyser off the individual backends.","geyser-floodgate-velocity-proxy",{"path":523,"title":524,"description":525,"excerpt":455,"author":6,"date":453,"category":452,"localeGroup":526},"\u002Fguides\u002Fupdate-minecraft-server-docker-compose-rollback","Update a Minecraft Server with Docker Compose and Roll Back Safely","Update an itzg\u002Fminecraft-server deployment without gambling with your world. This runbook covers version pinning, a cold backup, validation, and a real rollback path.","docker-minecraft-update-rollback",{"path":528,"title":529,"description":530,"excerpt":455,"author":6,"date":453,"category":531,"localeGroup":532},"\u002Fguides\u002Finstall-paper-plugins-docker-compose","Install and Update Paper Plugins with Docker Compose","Install Paper plugins reproducibly with itzg\u002Fminecraft-server. Compare a read-only \u002Fplugins source mount with managed Modrinth downloads, then validate every plugin after restart.","mods-plugins","paper-plugins-docker-compose",{"path":534,"title":535,"description":536,"excerpt":455,"author":6,"date":453,"category":531,"localeGroup":537},"\u002Fguides\u002Fmodrinth-modpack-itzg-minecraft-server-docker","Run a Modrinth Modpack with itzg\u002Fminecraft-server and Docker Compose","Deploy a server-compatible Modrinth modpack with Docker Compose, pin the pack version, match Java and client requirements, and validate the first start safely.","modrinth-modpack-docker",{"path":539,"title":540,"description":541,"excerpt":455,"author":6,"date":453,"category":452,"localeGroup":542},"\u002Fguides\u002Fmigrate-existing-minecraft-server-to-docker","Migrate an Existing Minecraft Server or World to Docker","Move an existing Minecraft server into itzg\u002Fminecraft-server without mixing migration and upgrades. This runbook covers world-only imports, full data moves, permissions, and rollback.","migrate-minecraft-server-to-docker",{"path":472,"title":5,"description":454,"excerpt":455,"author":6,"date":453,"category":452,"localeGroup":469},{"path":545,"title":546,"description":547,"excerpt":455,"author":6,"date":453,"category":531,"localeGroup":548},"\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker","Run a CurseForge Modpack with itzg\u002Fminecraft-server and Docker Compose","Deploy a CurseForge modpack with AUTO_CURSEFORGE, pin its file ID, protect the API key, handle manual downloads, and validate loader and client compatibility.","curseforge-modpack-docker",{"path":550,"title":551,"description":552,"excerpt":455,"author":6,"date":453,"category":553,"localeGroup":474},"\u002Fguides\u002Fminecraft-docker-exit-code-137-oomkilled","Minecraft Docker Exit Code 137: Diagnose OOMKilled Correctly","Exit code 137 means SIGKILL, not automatically an out-of-memory event. Confirm Docker OOMKilled state, compare JVM heap with container limits, and leave non-heap headroom.","performance",{"path":555,"title":556,"description":557,"excerpt":455,"author":6,"date":453,"category":509,"localeGroup":558},"\u002Fguides\u002Fsecure-minecraft-server-docker-compose","Secure a Minecraft Server with Docker Compose: Practical Hardening","Harden an itzg\u002Fminecraft-server deployment with online mode, a whitelist, file-based RCON secrets, a non-root container, reduced capabilities, limited ports, and trusted plugins.","minecraft-docker-security-hardening",{"path":560,"title":561,"description":562,"excerpt":455,"author":6,"date":453,"category":563,"localeGroup":564},"\u002Fguides\u002Fset-up-automatic-minecraft-backups-docker-mc-backup","Set Up Automatic Minecraft Backups with docker-mc-backup","Back up your Minecraft world automatically with itzg\u002Fmc-backup. This guide shows a safe sidecar setup, retention defaults, and how to validate that backups really work.","backups","docker-mc-backup-setup",{"path":566,"title":567,"description":568,"excerpt":455,"author":6,"date":453,"category":563,"localeGroup":569},"\u002Fguides\u002Frestore-minecraft-world-backup-docker","Restore a Minecraft World from Backup in Docker: A Safe Runbook","A backup is only useful if you can restore it safely. This guide shows how to restore a Minecraft world in Docker, avoid overwriting live data accidentally, and validate the result before reopening the server.","docker-minecraft-restore-runbook",{"path":571,"title":572,"description":573,"excerpt":455,"author":6,"date":453,"category":563,"localeGroup":574},"\u002Fguides\u002Fhetzner-snapshots-minecraft-world-volumes","Why Hetzner Snapshots Do Not Fully Protect Your Minecraft World","Hetzner Cloud Backups and Snapshots are useful, but they do not include attached Volumes. This guide explains the risk, the operational consequences, and the safer backup pattern for Minecraft.","hetzner-snapshots-volumes",{"path":576,"title":577,"description":578,"excerpt":455,"author":6,"date":579,"category":515,"localeGroup":580},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","Set Up Java and Bedrock Crossplay with Geyser and Floodgate","Want Bedrock players on phones or consoles to join your Java server? This guide shows a direct Paper-based Geyser and Floodgate setup without introducing a separate proxy layer.","2026-04-04","geyser-floodgate-crossplay",{"path":582,"title":583,"description":584,"excerpt":455,"author":6,"date":585,"category":503,"localeGroup":586},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","Paper vs Vanilla vs Fabric vs Forge: Which Minecraft Server Software Should You Choose?","Choosing the wrong server software creates avoidable pain later. This guide compares Vanilla, Paper, Fabric, Quilt, Forge, and NeoForge based on plugins, mods, performance, and operational complexity.","2026-04-03","minecraft-server-software-choice",{"path":588,"title":589,"description":590,"excerpt":455,"author":6,"date":591,"category":553,"localeGroup":592},"\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","View Distance vs Simulation Distance: Safe Starting Values for Paper","Paper exposes view-distance and simulation-distance separately, which makes them one of the safest first levers for performance tuning. This guide explains what each setting changes and which starting values are sensible.","2026-04-02","paper-view-distance-simulation-distance",{"path":594,"title":595,"description":596,"excerpt":455,"author":6,"date":597,"category":553,"localeGroup":598},"\u002Fguides\u002Fspark-profiler-paper-docker","Use Spark Profiler to Find Minecraft Lag in Paper and Docker","Paper bundles Spark starting with 1.21, which makes it the preferred profiler for diagnosing lag. This guide shows how to capture a useful report and how to read the first findings without guesswork.","2026-04-01","spark-profiler-paper-docker",{"path":600,"title":601,"description":602,"excerpt":455,"author":6,"date":603,"category":553,"localeGroup":604},"\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","Minecraft Server Lag Explained: TPS, MSPT, and 'Can’t Keep Up'","This guide explains what TPS and MSPT actually mean, why “Can’t keep up” appears in the console, and which checks help you separate CPU, chunk, entity, and plugin problems quickly.","2026-03-31","minecraft-lag-tps-mspt",{"path":606,"title":607,"description":608,"excerpt":455,"author":6,"date":609,"category":452,"localeGroup":475},"\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server","Fix Permission Denied in itzg\u002Fminecraft-server with UID\u002FGID and Bind Mounts","Seeing permission errors in \u002Fdata or files that Docker cannot write? This guide explains why itzg\u002Fminecraft-server defaults to UID 1000:GID 1000 and how to fix ownership safely.","2026-03-09",{"path":611,"title":612,"description":613,"excerpt":455,"author":6,"date":614,"category":452,"localeGroup":615},"\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","Administer a Docker Minecraft Server Safely with RCON and Console Access","Need to op a player, manage the whitelist, or stop the server cleanly? This guide shows how to use RCON and interactive console access with itzg\u002Fminecraft-server without exposing extra risk.","2026-03-08","docker-minecraft-rcon-console",{"path":617,"title":618,"description":619,"excerpt":455,"author":6,"date":620,"category":515,"localeGroup":621},"\u002Fguides\u002Fminecraft-domain-without-port-srv-record","Minecraft Domain Without a Port: How to Set Up an SRV Record","Want players to join via example.com instead of an IP and port? This guide shows how SRV records work for Minecraft Java Edition and how to configure them correctly.","2026-03-07","minecraft-srv-record-domain",{"path":623,"title":624,"description":625,"excerpt":455,"author":6,"date":626,"category":515,"localeGroup":627},"\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","How to Open Port 25565 for a Minecraft Server on Hetzner and Linux","Players cannot join even though the container is running? This guide checks Docker port publishing, the Linux firewall path, and the Hetzner Cloud Firewall without relying on misleading UFW assumptions.","2026-03-05","open-port-25565-hetzner-linux",{"path":629,"title":630,"description":631,"excerpt":455,"author":6,"date":632,"category":503,"localeGroup":476},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","Determining the Correct Java Version for Operating a Minecraft Server","If you want to set up a Minecraft server, you may encounter an error message related to the Java version when starting the server. In this article, you will learn how to determine the correct Java version for your Minecraft server.","2025-01-31",{"path":634,"title":635,"description":636,"excerpt":455,"author":6,"date":637,"category":503,"localeGroup":638},"\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","Setting up a Minecraft Server on a Hetzner Cloud Server with Docker Compose","In this article, we will show you how to set up a server for Minecraft: Java Edition on a Hetzner Cloud server. We will go through the steps of creating the cloud server, installing Debian, setting up an SSH key, and configuring Docker Compose for easy server management.","2025-01-28","hetzner-docker-setup",[640,641,642,643,644,645,646,647,648,649,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,634,600,594,588,582,576,523,528,534,539,472,629,545,550,555,499,506,512,518,623,617,611,606,560,566,571],"\u002Fde\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","\u002Fde\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","\u002Fde\u002Fguides\u002Fspark-profiler-paper-docker","\u002Fde\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","\u002Fde\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","\u002Fde\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","\u002Fde\u002Fguides\u002Fupdate-minecraft-server-docker-compose-rollback","\u002Fde\u002Fguides\u002Finstall-paper-plugins-docker-compose","\u002Fde\u002Fguides\u002Fmodrinth-modpack-itzg-minecraft-server-docker","\u002Fde\u002Fguides\u002Fmigrate-existing-minecraft-server-to-docker","\u002Fde\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose","\u002Fde\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","\u002Fde\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker","\u002Fde\u002Fguides\u002Fminecraft-docker-exit-code-137-oomkilled","\u002Fde\u002Fguides\u002Fsecure-minecraft-server-docker-compose","\u002Fde\u002Fguides\u002Fvelocity-proxy-docker-compose-itzg-mc-proxy","\u002Fde\u002Fguides\u002Fvelocity-modern-forwarding-paper-docker","\u002Fde\u002Fguides\u002Fvelocity-proxy-cannot-connect-backend-docker","\u002Fde\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker","\u002Fde\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","\u002Fde\u002Fguides\u002Fminecraft-domain-without-port-srv-record","\u002Fde\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","\u002Fde\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server","\u002Fde\u002Fguides\u002Fset-up-automatic-minecraft-backups-docker-mc-backup","\u002Fde\u002Fguides\u002Frestore-minecraft-world-backup-docker","\u002Fde\u002Fguides\u002Fhetzner-snapshots-minecraft-world-volumes",1786636762279]