[{"data":1,"prerenderedAt":642},["ShallowReactive",2],{"\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker\u002F":3,"guides:en":473,"published-guide-paths":615},{"id":4,"title":5,"author":6,"body":7,"category":426,"date":427,"description":428,"excerpt":429,"extension":430,"faq":431,"featured":441,"featuredOrder":429,"indexOrder":442,"localeGroup":443,"meta":444,"navigation":445,"path":446,"primaryTool":447,"published":445,"related":448,"seo":452,"slug":453,"sources":454,"stem":471,"updated":427,"__hash__":472},"guides\u002Fguides\u002F26.geyser-floodgate-velocity-proxy-docker.md","Run Geyser and Floodgate on a Velocity Proxy with Docker","setupmc.com Team",{"type":8,"value":9,"toc":414},"minimark",[10,15,25,28,44,47,51,54,73,86,90,97,107,113,116,124,127,131,134,140,150,161,164,170,174,177,196,199,239,242,246,249,255,258,266,269,272,276,279,290,294,383,387],[11,12,14],"h2",{"id":13},"choose-the-proxy-deployment-intentionally","Choose the proxy deployment intentionally",[16,17,18,19,24],"p",{},"The existing ",[20,21,23],"a",{"href":22},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate\u002F","direct Geyser and Floodgate guide"," installs both plugins on one Paper server. This guide covers a different architecture: Velocity is already the public entry point for multiple backends, so Geyser runs on the proxy.",[16,26,27],{},"Geyser's current proxy guidance is explicit:",[29,30,31,35,38,41],"ul",{},[32,33,34],"li",{},"install Geyser only on the proxy",[32,36,37],{},"install Floodgate on the proxy for Bedrock account authentication",[32,39,40],{},"add Floodgate to backends only when backend plugins need its API or related data",[32,42,43],{},"make every backend compatible with the Java protocol version Geyser currently emulates",[16,45,46],{},"Check Geyser's supported-versions page before an update. Bedrock clients move quickly, so hard-coded version claims age faster than the network design.",[11,48,50],{"id":49},"step-1-start-from-a-working-velocity-network","Step 1: Start from a working Velocity network",[16,52,53],{},"Complete these checks first:",[29,55,56,59,62,65],{},[32,57,58],{},"Java players can join Velocity and reach a Paper backend.",[32,60,61],{},"Velocity modern forwarding works.",[32,63,64],{},"Backends are not public.",[32,66,67,68,72],{},"The proxy has a persistent ",[69,70,71],"code",{},"\u002Fserver"," mount.",[16,74,75,76,80,81,85],{},"Use the ",[20,77,79],{"href":78},"\u002Fguides\u002Fvelocity-proxy-docker-compose-itzg-mc-proxy\u002F","Velocity Compose guide"," and ",[20,82,84],{"href":83},"\u002Fguides\u002Fvelocity-modern-forwarding-paper-docker\u002F","modern forwarding runbook"," if any of those statements is false.",[11,87,89],{"id":88},"step-2-add-the-proxy-plugins-and-udp-mapping","Step 2: Add the proxy plugins and UDP mapping",[16,91,92,93,96],{},"The ",[69,94,95],{},"itzg\u002Fmc-proxy"," image can download plugin URLs into the proxy plugin directory. Add the official Geyser and Floodgate Velocity download endpoints and publish the Bedrock listener as UDP:",[98,99,105],"pre",{"className":100,"code":102,"language":103,"meta":104},[101],"language-yaml","services:\n  proxy:\n    image: itzg\u002Fmc-proxy:latest\n    ports:\n      - \"25565:25577\"\n      - \"19132:19132\u002Fudp\"\n    environment:\n      TYPE: VELOCITY\n      MEMORY: 1G\n      PLUGINS: \"https:\u002F\u002Fdownload.geysermc.org\u002Fv2\u002Fprojects\u002Fgeyser\u002Fversions\u002Flatest\u002Fbuilds\u002Flatest\u002Fdownloads\u002Fvelocity,https:\u002F\u002Fdownload.geysermc.org\u002Fv2\u002Fprojects\u002Ffloodgate\u002Fversions\u002Flatest\u002Fbuilds\u002Flatest\u002Fdownloads\u002Fvelocity\"\n    volumes:\n      - .\u002Fproxy:\u002Fserver\n","yaml","",[69,106,102],{"__ignoreMap":104},[16,108,92,109,112],{},[69,110,111],{},"latest"," download endpoints are convenient for the first setup but change over time. For controlled production updates, pin reviewed plugin artifacts or preserve known-good JARs and update them as one tested operation.",[16,114,115],{},"Render the Compose file before starting:",[98,117,122],{"className":118,"code":120,"language":121,"meta":104},[119],"language-bash","docker compose config\ndocker compose up -d proxy\ndocker compose logs -f proxy\n","bash",[69,123,120],{"__ignoreMap":104},[16,125,126],{},"Confirm both plugins load without dependency or Java errors.",[11,128,130],{"id":129},"step-3-configure-the-bedrock-listener","Step 3: Configure the Bedrock listener",[16,132,133],{},"After the first start, open the Geyser configuration below the proxy's plugin directory and check:",[98,135,138],{"className":136,"code":137,"language":103,"meta":104},[101],"bedrock:\n  address: 0.0.0.0\n  port: 19132\n  clone-remote-port: false\n",[69,139,137],{"__ignoreMap":104},[16,141,142,145,146,149],{},[69,143,144],{},"0.0.0.0"," allows Geyser to listen on the container interfaces. The Compose mapping publishes that container UDP port on the host. Do not remove ",[69,147,148],{},"\u002Fudp","; an unsuffixed Compose mapping is TCP and will not carry normal Bedrock traffic.",[16,151,152,153,156,157,160],{},"In the same generated Geyser configuration, locate ",[69,154,155],{},"auth-type"," and set it to ",[69,158,159],{},"floodgate",". The surrounding section name can change between configuration versions, so edit the generated file instead of replacing it wholesale with an older example.",[16,162,163],{},"Restart the proxy after changing the configuration:",[98,165,168],{"className":166,"code":167,"language":121,"meta":104},[119],"docker compose restart proxy\ndocker compose logs --tail=150 proxy\n",[69,169,167],{"__ignoreMap":104},[11,171,173],{"id":172},"step-4-open-udp-end-to-end","Step 4: Open UDP end to end",[16,175,176],{},"Four layers must agree on the same port and protocol:",[178,179,180,183,190,193],"ol",{},[32,181,182],{},"Geyser listens on UDP 19132 in the container.",[32,184,185,186,189],{},"Compose maps ",[69,187,188],{},"19132:19132\u002Fudp",".",[32,191,192],{},"The Linux or Windows host firewall allows UDP 19132.",[32,194,195],{},"The router or cloud-provider firewall allows UDP 19132 to the host.",[16,197,198],{},"Do not replace the Java TCP rule with the Bedrock rule. Java and Bedrock use different transport paths here:",[200,201,202,215],"table",{},[203,204,205],"thead",{},[206,207,208,212],"tr",{},[209,210,211],"th",{},"Client",[209,213,214],{},"Public endpoint",[216,217,218,229],"tbody",{},[206,219,220,224],{},[221,222,223],"td",{},"Java Edition",[221,225,226],{},[69,227,228],{},"play.example.com:25565\u002Ftcp",[206,230,231,234],{},[221,232,233],{},"Bedrock Edition",[221,235,236],{},[69,237,238],{},"play.example.com:19132\u002Fudp",[16,240,241],{},"An SRV record used by Java does not remove the Bedrock port in this setup. Tell Bedrock players the explicit port.",[11,243,245],{"id":244},"step-5-validate-from-inside-and-outside","Step 5: Validate from inside and outside",[16,247,248],{},"Check the Docker mapping:",[98,250,253],{"className":251,"code":252,"language":121,"meta":104},[119],"docker compose port proxy 19132\u002Fudp\ndocker compose logs --tail=150 proxy\n",[69,254,252],{"__ignoreMap":104},[16,256,257],{},"Then run Geyser's own external connection test from the proxy console:",[98,259,264],{"className":260,"code":262,"language":263,"meta":104},[261],"language-text","geyser connectiontest play.example.com 19132\n","text",[69,265,262],{"__ignoreMap":104},[16,267,268],{},"Finally, test with a Bedrock client from a different network. A local Wi-Fi test alone does not prove that router or provider UDP ingress works.",[16,270,271],{},"The first successful login should reach the same backend selected by Velocity. Verify the player in both proxy and backend logs and confirm that their name\u002FUUID behavior matches your Floodgate policy.",[11,273,275],{"id":274},"when-backends-need-floodgate-too","When backends need Floodgate too",[16,277,278],{},"Basic crossplay does not require Floodgate on every Paper server. Add it only when backend plugins need the Floodgate API, Bedrock skin handling, or Floodgate data.",[16,280,281,282,285,286,289],{},"The official extended procedure requires ",[69,283,284],{},"send-floodgate-data: true"," on the proxy and the same Floodgate ",[69,287,288],{},"key.pem"," on the trusted backends. That key enables Bedrock authentication and must never be published or sent to untrusted people. Transfer it as binary data, restrict file access, and rotate\u002Frebuild the trust relationship if it leaks.",[11,291,293],{"id":292},"troubleshooting","Troubleshooting",[200,295,296,309],{},[203,297,298],{},[206,299,300,303,306],{},[209,301,302],{},"Symptom",[209,304,305],{},"Likely cause",[209,307,308],{},"Fix",[216,310,311,325,336,347,358,372],{},[206,312,313,316,319],{},[221,314,315],{},"Java works, Bedrock shows “Unable to connect”",[221,317,318],{},"UDP mapping or firewall missing",[221,320,321,322],{},"Verify all four UDP layers and run ",[69,323,324],{},"geyser connectiontest",[206,326,327,330,333],{},[221,328,329],{},"Geyser is loaded on every backend",[221,331,332],{},"Wrong proxy architecture",[221,334,335],{},"Keep Geyser only on Velocity",[206,337,338,341,344],{},[221,339,340],{},"Bedrock reaches Geyser but not the backend",[221,342,343],{},"Velocity\u002Fbackend path or version mismatch",[221,345,346],{},"Test Java through Velocity and check Geyser supported versions",[206,348,349,352,355],{},[221,350,351],{},"Floodgate login asks for Java authentication",[221,353,354],{},"Geyser auth type not set to Floodgate",[221,356,357],{},"Align generated Geyser and Floodgate configuration",[206,359,360,366,369],{},[221,361,362,365],{},[69,363,364],{},"AEADBadTagException"," after copying keys",[221,367,368],{},"Floodgate keys differ or were transferred incorrectly",[221,370,371],{},"Recreate\u002Fcopy the exact key according to Floodgate docs",[206,373,374,377,380],{},[221,375,376],{},"UDP 19132 conflicts with another plugin",[221,378,379],{},"Two services use the same UDP port",[221,381,382],{},"Assign unique UDP listeners",[11,384,386],{"id":385},"next-steps","Next steps",[29,388,389,396,404],{},[32,390,391,392,189],{},"If Java routing is unreliable, use the ",[20,393,395],{"href":394},"\u002Fguides\u002Fvelocity-proxy-cannot-connect-backend-docker\u002F","Velocity backend runbook",[32,397,398,399,403],{},"Create a clean player hostname with the ",[20,400,402],{"href":401},"\u002Fsrv-record-generator\u002F","Minecraft SRV generator",", while keeping the Bedrock port explicit.",[32,405,406,407,413],{},"Recheck ",[20,408,412],{"href":409,"rel":410},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsupported-versions\u002F",[411],"nofollow","Geyser supported versions"," before proxy or backend upgrades.",{"title":104,"searchDepth":415,"depth":415,"links":416},2,[417,418,419,420,421,422,423,424,425],{"id":13,"depth":415,"text":14},{"id":49,"depth":415,"text":50},{"id":88,"depth":415,"text":89},{"id":129,"depth":415,"text":130},{"id":172,"depth":415,"text":173},{"id":244,"depth":415,"text":245},{"id":274,"depth":415,"text":275},{"id":292,"depth":415,"text":293},{"id":385,"depth":415,"text":386},"networking","2026-08-01","Add Bedrock crossplay at the Velocity edge, publish UDP 19132 correctly, configure Floodgate authentication, and keep Geyser off the individual backends.",null,"md",[432,435,438],{"question":433,"answer":434},"Where should Geyser run in a Velocity network?","Install Geyser on the Velocity proxy, not separately on every backend. Floodgate also belongs on the proxy unless a backend specifically needs the Floodgate API or related skin support.",{"question":436,"answer":437},"Which port must Docker publish for Bedrock players?","Publish the configured Geyser listener, normally 19132, as UDP. The Compose mapping needs the \u002Fudp suffix, and the same UDP port must be allowed through host and provider firewalls.",{"question":439,"answer":440},"Do backend servers need Floodgate installed?","Not for basic proxy-level crossplay. Install it on backends only when plugins there need the Floodgate API or network-wide Floodgate data, then follow the official key distribution procedure.",false,"5","geyser-floodgate-velocity-proxy",{},true,"\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker","proxy-configurator",[449,450,451],"velocity-proxy-docker-compose","velocity-modern-forwarding-paper","geyser-floodgate-crossplay",{"title":5,"description":428},"geyser-floodgate-velocity-proxy-docker",[455,458,461,464,465,468],{"title":456,"url":457},"Geyser setup for proxy servers","https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsetup\u002F",{"title":459,"url":460},"Floodgate proxy server setup","https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Ffloodgate\u002Fsetup\u002Fproxy-servers\u002F",{"title":462,"url":463},"Geyser port forwarding","https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fport-forwarding\u002F",{"title":412,"url":409},{"title":466,"url":467},"Velocity player information forwarding","https:\u002F\u002Fdocs.papermc.io\u002Fvelocity\u002Fplayer-information-forwarding\u002F",{"title":469,"url":470},"itzg\u002Fmc-proxy plugin settings","https:\u002F\u002Fgithub.com\u002Fitzg\u002Fdocker-mc-proxy","guides\u002F26.geyser-floodgate-velocity-proxy-docker","hN3dc6rg8iMpyUQvwis22cuHpw0c0_UPzV0xLXe6uqk",[474,479,484,489,490,497,503,508,513,518,523,529,534,540,545,550,555,561,567,573,579,585,591,597,603,609],{"path":475,"title":476,"description":477,"excerpt":429,"author":6,"date":427,"category":478,"localeGroup":449},"\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.","getting-started",{"path":480,"title":481,"description":482,"excerpt":429,"author":6,"date":427,"category":483,"localeGroup":450},"\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",{"path":485,"title":486,"description":487,"excerpt":429,"author":6,"date":427,"category":426,"localeGroup":488},"\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.","velocity-backend-unreachable-docker",{"path":446,"title":5,"description":428,"excerpt":429,"author":6,"date":427,"category":426,"localeGroup":443},{"path":491,"title":492,"description":493,"excerpt":429,"author":6,"date":494,"category":495,"localeGroup":496},"\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.","2026-07-18","docker-operations","docker-minecraft-update-rollback",{"path":498,"title":499,"description":500,"excerpt":429,"author":6,"date":494,"category":501,"localeGroup":502},"\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":504,"title":505,"description":506,"excerpt":429,"author":6,"date":494,"category":501,"localeGroup":507},"\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":509,"title":510,"description":511,"excerpt":429,"author":6,"date":494,"category":495,"localeGroup":512},"\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":514,"title":515,"description":516,"excerpt":429,"author":6,"date":494,"category":495,"localeGroup":517},"\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":519,"title":520,"description":521,"excerpt":429,"author":6,"date":494,"category":501,"localeGroup":522},"\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":524,"title":525,"description":526,"excerpt":429,"author":6,"date":494,"category":527,"localeGroup":528},"\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","minecraft-docker-exit-137-oom",{"path":530,"title":531,"description":532,"excerpt":429,"author":6,"date":494,"category":483,"localeGroup":533},"\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":535,"title":536,"description":537,"excerpt":429,"author":6,"date":494,"category":538,"localeGroup":539},"\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":541,"title":542,"description":543,"excerpt":429,"author":6,"date":494,"category":538,"localeGroup":544},"\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":546,"title":547,"description":548,"excerpt":429,"author":6,"date":494,"category":538,"localeGroup":549},"\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":551,"title":552,"description":553,"excerpt":429,"author":6,"date":554,"category":426,"localeGroup":451},"\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",{"path":556,"title":557,"description":558,"excerpt":429,"author":6,"date":559,"category":478,"localeGroup":560},"\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":562,"title":563,"description":564,"excerpt":429,"author":6,"date":565,"category":527,"localeGroup":566},"\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":568,"title":569,"description":570,"excerpt":429,"author":6,"date":571,"category":527,"localeGroup":572},"\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":574,"title":575,"description":576,"excerpt":429,"author":6,"date":577,"category":527,"localeGroup":578},"\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":580,"title":581,"description":582,"excerpt":429,"author":6,"date":583,"category":495,"localeGroup":584},"\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":586,"title":587,"description":588,"excerpt":429,"author":6,"date":589,"category":495,"localeGroup":590},"\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":592,"title":593,"description":594,"excerpt":429,"author":6,"date":595,"category":426,"localeGroup":596},"\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":598,"title":599,"description":600,"excerpt":429,"author":6,"date":601,"category":426,"localeGroup":602},"\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":604,"title":605,"description":606,"excerpt":429,"author":6,"date":607,"category":478,"localeGroup":608},"\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":610,"title":611,"description":612,"excerpt":429,"author":6,"date":613,"category":478,"localeGroup":614},"\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",[616,617,618,619,620,621,622,623,624,625,626,627,628,629,630,631,632,633,634,635,636,637,638,639,640,641,610,574,568,562,556,551,491,498,504,509,514,604,519,524,530,475,480,485,446,598,592,586,580,535,541,546],"\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",1786636764310]