[{"data":1,"prerenderedAt":609},["ShallowReactive",2],{"\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker\u002F":3,"guides:en":440,"published-guide-paths":582},{"id":4,"title":5,"author":6,"body":7,"category":398,"date":399,"description":400,"excerpt":401,"extension":402,"faq":403,"featured":413,"featuredOrder":401,"indexOrder":414,"localeGroup":415,"meta":416,"navigation":417,"path":418,"primaryTool":401,"published":417,"related":419,"seo":423,"slug":424,"sources":425,"stem":438,"updated":399,"__hash__":439},"guides\u002Fguides\u002F20.curseforge-modpack-itzg-minecraft-server-docker.md","Run a CurseForge Modpack with itzg\u002Fminecraft-server and Docker Compose","setupmc.com Team",{"type":8,"value":9,"toc":384},"minimark",[10,15,24,27,31,53,57,60,70,81,84,92,96,103,121,125,132,138,141,145,148,151,174,181,185,191,194,198,209,215,219,222,245,254,258,357,361],[11,12,14],"h2",{"id":13},"keep-pack-loader-java-and-memory-together","Keep pack, loader, Java, and memory together",[16,17,18,19,23],"p",{},"A CurseForge pack declares its Minecraft version, mod loader, mods, and configuration. ",[20,21,22],"code",{},"AUTO_CURSEFORGE"," reads that manifest and installs the matching Forge or Fabric loader automatically.",[16,25,26],{},"Do not independently choose a newer loader because it looks preferable. Pin one tested modpack file and use the Java and memory requirements published for that release.",[11,28,30],{"id":29},"prerequisites","Prerequisites",[32,33,34,38,41,44,47,50],"ul",{},[35,36,37],"li",{},"a CurseForge pack with server support",[35,39,40],{},"the pack's normal file ID, not its separate server-file download",[35,42,43],{},"enough RAM and disk for the selected pack",[35,45,46],{},"the Java image tag required by its Minecraft version",[35,48,49],{},"the same pack release on test clients",[35,51,52],{},"a complete backup before importing an existing world",[11,54,56],{"id":55},"compose-baseline-with-a-pinned-file","Compose baseline with a pinned file",[16,58,59],{},"The file ID below is the pinned ATM8 example used by the itzg documentation. It is intentionally an older, concrete example; replace the slug, file ID, Java tag, and memory together for your chosen pack.",[61,62,68],"pre",{"className":63,"code":65,"language":66,"meta":67},[64],"language-yaml","services:\n  mc:\n    image: itzg\u002Fminecraft-server:java17\n    restart: unless-stopped\n    ports:\n      - \"25565:25565\"\n    environment:\n      EULA: \"TRUE\"\n      TYPE: AUTO_CURSEFORGE\n      CF_SLUG: all-the-mods-8\n      CF_FILE_ID: \"4248390\"\n      CF_API_KEY_FILE: \u002Frun\u002Fsecrets\u002Fcf_api_key\n      MEMORY: 6G\n    mem_limit: 8g\n    volumes:\n      - .\u002Fdata:\u002Fdata\n      - .\u002Fdownloads:\u002Fdownloads:ro\n    secrets:\n      - cf_api_key\n\nsecrets:\n  cf_api_key:\n    file: .\u002Fcf_api_key.secret\n","yaml","",[20,69,65],{"__ignoreMap":67},[16,71,72,73,76,77,80],{},"Create ",[20,74,75],{},"cf_api_key.secret"," beside Compose, restrict its host permissions, and keep it out of version control. A personal key is optional while the image ships a key; if you do not supply one, remove both ",[20,78,79],{},"CF_API_KEY_FILE"," and the secret declarations.",[16,82,83],{},"Validate without exposing the secret value:",[61,85,90],{"className":86,"code":88,"language":89,"meta":67},[87],"language-bash","docker compose config\ndocker compose pull mc\n","bash",[20,91,88],{"__ignoreMap":67},[11,93,95],{"id":94},"why-the-file-id-matters","Why the file ID matters",[16,97,98,99,102],{},"Without ",[20,100,101],{},"CF_FILE_ID",", the image locates the newest pack file again on a later startup. That makes an ordinary restart an implicit pack and loader upgrade.",[16,104,105,106,108,109,112,113,117,118,120],{},"You can pin with a specific file URL, ",[20,107,101],{},", or ",[20,110,111],{},"CF_FILENAME_MATCHER",". A numeric file ID is the clearest operational record. Do not select the pack's separately published ",[114,115,116],"strong",{},"server file",": it normally lacks the CurseForge manifest required by ",[20,119,22],{},".",[11,122,124],{"id":123},"first-start-on-empty-data","First start on empty data",[16,126,127,128,131],{},"Use a fresh ",[20,129,130],{},".\u002Fdata"," for the first installation:",[61,133,136],{"className":134,"code":135,"language":89,"meta":67},[87],"mkdir -p data downloads\ndocker compose up -d\ndocker compose logs -f mc\n",[20,137,135],{"__ignoreMap":67},[16,139,140],{},"The initial start downloads many artifacts and can take considerably longer than Paper. Wait for the server-ready message. If it fails, preserve the first error before the restart policy hides it behind repeated logs.",[11,142,144],{"id":143},"handle-projects-that-require-manual-downloads","Handle projects that require manual downloads",[16,146,147],{},"CurseForge authors can prohibit third-party automated downloads. The image then logs a “Mods Need Download” list.",[16,149,150],{},"For each listed project:",[152,153,154,157,160,167],"ol",{},[35,155,156],{},"open the provided page in a browser",[35,158,159],{},"download the exact requested file",[35,161,162,163,166],{},"copy it into the host ",[20,164,165],{},".\u002Fdownloads"," directory",[35,168,169,170,173],{},"run ",[20,171,172],{},"docker compose up -d mc"," again",[16,175,176,177,180],{},"Do not replace this with a guessed ",[20,178,179],{},"curl"," URL. The itzg documentation explicitly requires browser downloads for these restricted files.",[11,182,184],{"id":183},"validate-the-installed-pack","Validate the installed pack",[61,186,189],{"className":187,"code":188,"language":89,"meta":67},[87],"docker compose exec mc rcon-cli version\ndocker compose exec mc sh -c 'find \u002Fdata\u002Fmods -maxdepth 1 -type f -name \"*.jar\" | wc -l'\ndocker compose logs --since=20m mc\n",[20,190,188],{"__ignoreMap":67},[16,192,193],{},"Then join with the exact matching client pack and check custom blocks, items, dimensions, recipes, and a reconnect. Create the first backup after this validation.",[11,195,197],{"id":196},"client-only-files-and-synchronization","Client-only files and synchronization",[16,199,200,201,204,205,208],{},"Use ",[20,202,203],{},"CF_EXCLUDE_MODS"," only for projects incorrectly delivered to the server, and ",[20,206,207],{},"CF_FORCE_INCLUDE_MODS"," only when metadata incorrectly marks a required server mod as client-only. Report the metadata problem upstream.",[16,210,211,214],{},[20,212,213],{},"CF_FORCE_SYNCHRONIZE: \"TRUE\""," is a troubleshooting switch, not a harmless permanent default. Synchronization intentionally reconciles installed files with the selected pack. Back up first and remove the flag when the correction is complete.",[11,216,218],{"id":217},"upgrade-and-roll-back-the-pack","Upgrade and roll back the pack",[16,220,221],{},"Treat a new file ID as a server update:",[152,223,224,227,232,235,238],{},[35,225,226],{},"make an application-aware backup and stopped full copy",[35,228,229,230],{},"change only ",[20,231,101],{},[35,233,234],{},"start under supervision",[35,236,237],{},"test with the matching client",[35,239,240,241,244],{},"restore the previous Compose and ",[20,242,243],{},"\u002Fdata"," together if validation fails",[16,246,247,248,253],{},"Follow the ",[249,250,252],"a",{"href":251},"\u002Fguides\u002Fupdate-minecraft-server-docker-compose-rollback\u002F","safe Docker update and rollback runbook",". Never start an older pack against world data already migrated by the newer one.",[11,255,257],{"id":256},"troubleshooting","Troubleshooting",[259,260,261,277],"table",{},[262,263,264],"thead",{},[265,266,267,271,274],"tr",{},[268,269,270],"th",{},"Symptom",[268,272,273],{},"Likely cause",[268,275,276],{},"Fix",[278,279,280,292,303,317,331,346],"tbody",{},[265,281,282,286,289],{},[283,284,285],"td",{},"Manifest missing",[283,287,288],{},"A server file was selected",[283,290,291],{},"Pin the normal modpack file instead",[265,293,294,297,300],{},[283,295,296],{},"No matching file",[283,298,299],{},"Slug and file ID do not belong together",[283,301,302],{},"Copy both from the same pack release",[265,304,305,308,311],{},[283,306,307],{},"Manual-download list appears",[283,309,310],{},"Distribution is restricted",[283,312,313,314],{},"Download exact files in a browser into ",[20,315,316],{},"\u002Fdownloads",[265,318,319,322,325],{},[283,320,321],{},"Unsupported class version",[283,323,324],{},"Wrong Java image",[283,326,327],{},[249,328,330],{"href":329},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server\u002F","Use the pack's required Java release",[265,332,333,336,339],{},[283,334,335],{},"Exit 137 during startup",[283,337,338],{},"Heap\u002Fcontainer\u002Fhost memory is insufficient",[283,340,341,342],{},"Use the ",[249,343,345],{"href":344},"\u002Fguides\u002Fminecraft-docker-exit-code-137-oomkilled\u002F","OOMKilled runbook",[265,347,348,351,354],{},[283,349,350],{},"Client cannot join",[283,352,353],{},"Pack or loader release differs",[283,355,356],{},"Install the exact same client pack file",[11,358,360],{"id":359},"next-steps","Next steps",[32,362,363,370,377],{},[35,364,365,366,120],{},"Compare this workflow with the ",[249,367,369],{"href":368},"\u002Fguides\u002Fmodrinth-modpack-itzg-minecraft-server-docker\u002F","Modrinth modpack guide",[35,371,372,373,120],{},"Diagnose repeated failed starts with the ",[249,374,376],{"href":375},"\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose\u002F","restart-loop runbook",[35,378,379,380,120],{},"Protect API keys and the host with the ",[249,381,383],{"href":382},"\u002Fguides\u002Fsecure-minecraft-server-docker-compose\u002F","Docker security baseline",{"title":67,"searchDepth":385,"depth":385,"links":386},2,[387,388,389,390,391,392,393,394,395,396,397],{"id":13,"depth":385,"text":14},{"id":29,"depth":385,"text":30},{"id":55,"depth":385,"text":56},{"id":94,"depth":385,"text":95},{"id":123,"depth":385,"text":124},{"id":143,"depth":385,"text":144},{"id":183,"depth":385,"text":184},{"id":196,"depth":385,"text":197},{"id":217,"depth":385,"text":218},{"id":256,"depth":385,"text":257},{"id":359,"depth":385,"text":360},"mods-plugins","2026-07-18","Deploy a CurseForge modpack with AUTO_CURSEFORGE, pin its file ID, protect the API key, handle manual downloads, and validate loader and client compatibility.",null,"md",[404,407,410],{"question":405,"answer":406},"Should CF_FILE_ID point to the CurseForge server file?","No. AUTO_CURSEFORGE needs the normal modpack file with its manifest. The image documentation explicitly warns that server files lack the required manifest for reproducible automation.",{"question":408,"answer":409},"Do I need my own CurseForge API key?","The image currently includes a key, but supports your own key. When you supply one, mount it as a Compose secret through CF_API_KEY_FILE instead of committing it.",{"question":411,"answer":412},"Why does the container ask for manual downloads?","Some projects prohibit third-party automated distribution. Download those files in a browser, place them in the mounted \u002Fdownloads source, and start the service again.",false,"3","curseforge-modpack-docker",{},true,"\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker",[420,421,422],"modrinth-modpack-docker","docker-minecraft-update-rollback","minecraft-docker-exit-137-oom",{"title":5,"description":400},"curseforge-modpack-itzg-minecraft-server-docker",[426,429,432,435],{"title":427,"url":428},"itzg AUTO_CURSEFORGE documentation","https:\u002F\u002Fdocker-minecraft-server.readthedocs.io\u002Fen\u002Flatest\u002Ftypes-and-platforms\u002Fmod-platforms\u002Fauto-curseforge\u002F",{"title":430,"url":431},"itzg Java version documentation","https:\u002F\u002Fdocker-minecraft-server.readthedocs.io\u002Fen\u002Flatest\u002Fversions\u002Fjava\u002F",{"title":433,"url":434},"itzg JVM memory documentation","https:\u002F\u002Fdocker-minecraft-server.readthedocs.io\u002Fen\u002Flatest\u002Fconfiguration\u002Fjvm-options\u002F",{"title":436,"url":437},"Docker Compose secrets documentation","https:\u002F\u002Fdocs.docker.com\u002Fcompose\u002Fhow-tos\u002Fuse-secrets\u002F","guides\u002F20.curseforge-modpack-itzg-minecraft-server-docker","ouU5YW7Cu15ZsGuKCCkgD9XMQzrIIS-kD423oDHI5LA",[441,448,454,460,465,470,475,479,484,489,490,495,500,506,511,516,522,528,534,540,546,552,558,564,570,576],{"path":442,"title":443,"description":444,"excerpt":401,"author":6,"date":445,"category":446,"localeGroup":447},"\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":449,"title":450,"description":451,"excerpt":401,"author":6,"date":445,"category":452,"localeGroup":453},"\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":455,"title":456,"description":457,"excerpt":401,"author":6,"date":445,"category":458,"localeGroup":459},"\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":461,"title":462,"description":463,"excerpt":401,"author":6,"date":445,"category":458,"localeGroup":464},"\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":466,"title":467,"description":468,"excerpt":401,"author":6,"date":399,"category":469,"localeGroup":421},"\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-operations",{"path":471,"title":472,"description":473,"excerpt":401,"author":6,"date":399,"category":398,"localeGroup":474},"\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.","paper-plugins-docker-compose",{"path":476,"title":477,"description":478,"excerpt":401,"author":6,"date":399,"category":398,"localeGroup":420},"\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.",{"path":480,"title":481,"description":482,"excerpt":401,"author":6,"date":399,"category":469,"localeGroup":483},"\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":485,"title":486,"description":487,"excerpt":401,"author":6,"date":399,"category":469,"localeGroup":488},"\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose","Minecraft Container Keeps Restarting: Diagnose the Docker Compose Loop","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.","docker-minecraft-restart-loop",{"path":418,"title":5,"description":400,"excerpt":401,"author":6,"date":399,"category":398,"localeGroup":415},{"path":491,"title":492,"description":493,"excerpt":401,"author":6,"date":399,"category":494,"localeGroup":422},"\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":496,"title":497,"description":498,"excerpt":401,"author":6,"date":399,"category":452,"localeGroup":499},"\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":501,"title":502,"description":503,"excerpt":401,"author":6,"date":399,"category":504,"localeGroup":505},"\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":507,"title":508,"description":509,"excerpt":401,"author":6,"date":399,"category":504,"localeGroup":510},"\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":512,"title":513,"description":514,"excerpt":401,"author":6,"date":399,"category":504,"localeGroup":515},"\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":517,"title":518,"description":519,"excerpt":401,"author":6,"date":520,"category":458,"localeGroup":521},"\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":523,"title":524,"description":525,"excerpt":401,"author":6,"date":526,"category":446,"localeGroup":527},"\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":529,"title":530,"description":531,"excerpt":401,"author":6,"date":532,"category":494,"localeGroup":533},"\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":535,"title":536,"description":537,"excerpt":401,"author":6,"date":538,"category":494,"localeGroup":539},"\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":541,"title":542,"description":543,"excerpt":401,"author":6,"date":544,"category":494,"localeGroup":545},"\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":547,"title":548,"description":549,"excerpt":401,"author":6,"date":550,"category":469,"localeGroup":551},"\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","itzg-permission-denied",{"path":553,"title":554,"description":555,"excerpt":401,"author":6,"date":556,"category":469,"localeGroup":557},"\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":559,"title":560,"description":561,"excerpt":401,"author":6,"date":562,"category":458,"localeGroup":563},"\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":565,"title":566,"description":567,"excerpt":401,"author":6,"date":568,"category":458,"localeGroup":569},"\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":571,"title":572,"description":573,"excerpt":401,"author":6,"date":574,"category":446,"localeGroup":575},"\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","java-version-minecraft-server",{"path":577,"title":578,"description":579,"excerpt":401,"author":6,"date":580,"category":446,"localeGroup":581},"\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",[583,584,585,586,587,588,589,590,591,592,593,594,595,596,597,598,599,600,601,602,603,604,605,606,607,608,577,541,535,529,523,517,466,471,476,480,485,571,418,491,496,442,449,455,461,565,559,553,547,501,507,512],"\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",1786636762406]