[{"data":1,"prerenderedAt":750},["ShallowReactive",2],{"\u002Fguides\u002Fnethernet-geyser\u002F":3,"guides:en":568,"published-guide-paths":721},{"id":4,"title":5,"author":6,"body":7,"category":541,"date":542,"description":543,"excerpt":544,"extension":545,"faq":546,"featured":547,"featuredOrder":544,"indexOrder":548,"localeGroup":549,"meta":550,"navigation":551,"path":552,"primaryTool":553,"published":551,"related":554,"seo":558,"slug":549,"sources":559,"stem":566,"updated":542,"__hash__":567},"guides\u002Fguides\u002F28.nethernet-geyser.md","Set up NetherNet on your Geyser server","setupmc.com Team",{"type":8,"value":9,"toc":528},"minimark",[10,15,44,52,72,76,79,93,114,124,138,173,191,195,198,201,207,214,225,230,236,242,245,249,260,268,271,278,282,290,298,301,309,312,374,383,394,397,401,416,427,447,464,474,478,484],[11,12,14],"h2",{"id":13},"bedrock-friends-cannot-join-your-existing-geyser-server","Bedrock friends cannot join your existing Geyser server",[16,17,18,19,23,24,27,28,32,33,40,41,43],"p",{},"Java players may still join while Bedrock players see ",[20,21,22],"strong",{},"NetherNet",", ",[20,25,26],{},"Door",", or extra details such as ",[29,30,31],"code",{},"InitialConnection-83",". The ",[34,35,39],"a",{"href":36,"rel":37},"https:\u002F\u002Fhelp.minecraft.net\u002Fhc\u002Fen-us\u002Farticles\u002F38555497091469-Troubleshooting-Named-Error-Codes-for-Minecraft-Bedrock-Edition",[38],"nofollow","official error reference"," describes ",[20,42,22],{}," as a multiplayer connection error. Record the full error and client\u002Fserver versions. Check TCP signaling first, then gameplay UDP. If both work, check versions and authentication.",[16,45,46,47,51],{},"For your official Bedrock Dedicated Server, use the ",[34,48,50],{"href":49},"\u002Fguides\u002Fnethernet-bedrock-server\u002F","BDS NetherNet guide",".",[16,53,54,57,58,61,62,65,66,71],{},[20,55,56],{},"RakNet is the older connection method; NetherNet is the newer one."," Checked on ",[20,59,60],{},"12 October 2026",", the official Geyser download ",[20,63,64],{},"2.11.3 build 1251"," includes NetherNet, but its default remains ",[20,67,68],{},[29,69,70],{},"raknet",". You do not need the archived experimental GeyserNetherNet extension. Configure the method deliberately and restart.",[11,73,75],{"id":74},"configure-a-direct-nethernet-connection","Configure a direct NetherNet connection",[16,77,78],{},"A port is a numbered connection endpoint. TCP and UDP are different traffic types, so permitting TCP does not permit UDP with the same number. NetherNet joins happen in two stages:",[80,81,82,90],"ol",{},[83,84,85,86,89],"li",{},"The game makes an initial TCP connection, called ",[20,87,88],{},"signaling",". Geyser sends the address and UDP port for gameplay.",[83,91,92],{},"The game connects to that UDP destination. A successful TCP port check only helps with the first stage.",[16,94,95,96,101,102,105,106,109,110,113],{},"Update Geyser from the ",[34,97,100],{"href":98,"rel":99},"https:\u002F\u002Fgeysermc.org\u002Fdownload\u002F",[38],"official downloads",", back up your ",[29,103,104],{},"config.yml",", and edit its existing ",[29,107,108],{},"bedrock"," section. Replace ",[29,111,112],{},"YOUR_PUBLIC_IP"," with your reachable public IP before saving; Geyser does not fill this placeholder automatically:",[115,116,122],"pre",{"className":117,"code":119,"language":120,"meta":121},[118],"language-yaml","bedrock:\n  address: 0.0.0.0\n  port: 19132\n  clone-remote-port: false\n  transport: nethernet\n  webrtc-port: 0\n  signaling:\n    mode: builtin\n    builtin:\n      advertise-addresses:\n        - \"YOUR_PUBLIC_IP:19132\"\n","yaml","",[29,123,119],{"__ignoreMap":121},[16,125,126,129,130,133,134,137],{},[20,127,128],{},"Allow TCP 19132 and UDP 19132 for this configuration."," ",[29,131,132],{},"webrtc-port: 0"," uses ",[29,135,136],{},"bedrock.port",". Geyser uses one WebRTC UDP listener for this setup; it does not require one allocated UDP port per player. WebRTC is the technology behind the game connection, not a separate service you must install.",[16,139,140,141,144,145,148,149,152,153,156,157,160,161,164,165,168,169,172],{},"A ",[20,142,143],{},"public IP"," is reachable from outside your network. A ",[20,146,147],{},"LAN IP",", often starting with ",[29,150,151],{},"192.168."," or ",[29,154,155],{},"10.",", is local. The ",[20,158,159],{},"advertised address"," is the destination Geyser tells players to use. The ",[20,162,163],{},"bind address"," is where Geyser listens locally. Keep ",[29,166,167],{},"address: 0.0.0.0"," for local interfaces; do not bind to a public IP your machine does not own, or to loopback ",[29,170,171],{},"127.0.0.1"," for NetherNet.",[16,174,175,178,179,182,183,186,187,190],{},[20,176,177],{},"NAT"," is address and port translation by your router or provider. If public UDP 20132 reaches Geyser UDP 19132, advertise ",[29,180,181],{},"YOUR_PUBLIC_IP:20132",". The TCP signaling mapping remains separate. You can also set ",[29,184,185],{},"-DgeyserAdvertiseAddresses=YOUR_PUBLIC_IP:20132"," before ",[29,188,189],{},"-jar","; that JVM setting overrides the configuration list. Check startup flags if your edits seem ignored.",[11,192,194],{"id":193},"allow-both-paths-and-restart","Allow both paths and restart",[16,196,197],{},"Allow TCP 19132 and UDP 19132 in the server firewall, router forwarding and provider firewall. The router's forwarding rule sends incoming traffic to the server's local address. For rented hosting, ask for matching panel allocations.",[16,199,200],{},"For Docker, add these publications to the existing service without replacing its data mounts:",[115,202,205],{"className":203,"code":204,"language":120,"meta":121},[118],"ports:\n  - \"19132:19132\u002Ftcp\"\n  - \"19132:19132\u002Fudp\"\n",[29,206,204],{"__ignoreMap":121},[16,208,209,210,213],{},"Keep the existing Java TCP publication too. For translated gameplay ports, use ",[29,211,212],{},"20132:19132\u002Fudp",". Docker runs Geyser in a container which may otherwise advertise a private container address.",[16,215,216,217,220,221,224],{},"Stop the running server or proxy gracefully, then start it normally after configuration changes. Do a full restart, not just ",[29,218,219],{},"\u002Fgeyser reload",". For Docker port changes, recreate the service with ",[29,222,223],{},"docker compose up -d"," while preserving its existing volume. For hosted servers, use the panel restart and inspect its startup logs.",[226,227,229],"h3",{"id":228},"if-you-intentionally-accept-both-connection-methods","If you intentionally accept both connection methods",[16,231,232,233,235],{},"Replace ",[29,234,112],{}," with your reachable public IP before saving this configuration:",[115,237,240],{"className":238,"code":239,"language":120,"meta":121},[118],"bedrock:\n  address: 0.0.0.0\n  port: 19132\n  clone-remote-port: false\n  transport: both\n  webrtc-port: 19134\n  signaling:\n    mode: builtin\n    builtin:\n      advertise-addresses:\n        - \"YOUR_PUBLIC_IP:19134\"\n",[29,241,239],{"__ignoreMap":121},[16,243,244],{},"This uses TCP 19132 for signaling, UDP 19132 for RakNet and UDP 19134 for NetherNet. Publish and permit all three. The two UDP services need different ports. Players initially contact the signaling port, not the advertised gameplay port. Use RakNet for a compatibility transition and recheck supported transports before updates.",[11,246,248],{"id":247},"check-versions-and-authentication-before-blaming-ports","Check versions and authentication before blaming ports",[16,250,251,252,255,256,259],{},"Geyser supports ",[20,253,254],{},"Bedrock 26.30-26.52"," and emulates a ",[20,257,258],{},"Java 26.2"," client. The Java server must accept that client version. An “outdated” message can concern the Java side even when Bedrock is supported. ViaVersion helps Java protocol compatibility; it does not add unsupported Bedrock versions to Geyser.",[16,261,262,263,267],{},"Keep the correct Geyser artifact for your platform. Fabric\u002FNeoForge must match their supported Java game version. Keep existing Floodgate authentication and Java backend settings; changing transport does not replace them. Use the ",[34,264,266],{"href":265},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate\u002F","crossplay guide"," for authentication checks.",[16,269,270],{},"In an existing Velocity\u002FBungeeCord network, Geyser remains on the public proxy. A proxy is the entry server forwarding players to individual Java servers, called backends. Check that Java players reach those same backends.",[16,272,273,274,277],{},"Inspect startup logs for port conflicts, unavailable native WebRTC libraries or failure to create state. Preserve the ",[29,275,276],{},"nethernet"," directory beside Geyser's configuration, including its signing identity. Deleting that identity can force players to confirm the server again. If Geyser reports an unsupported OS or architecture, resolve that startup issue first.",[11,279,281],{"id":280},"test-introduction-and-gameplay-separately","Test introduction and gameplay separately",[16,283,284,285,289],{},"Enter your public server address in the ",[34,286,288],{"href":287},"\u002Fbedrock-connection-test\u002F","NetherNet connection test",". It checks the initial contact and shows your next steps. Then test a full join with a Bedrock client from another network.",[16,291,292,293,297],{},"You can view the server name, version and player count in the ",[34,294,296],{"href":295},"\u002Fserver-status-checker\u002F","Minecraft server status checker",". Choose Bedrock to check a NetherNet server, then join in Minecraft to verify the game connection.",[16,299,300],{},"From another network, check plain HTTP signaling:",[115,302,307],{"className":303,"code":305,"language":306,"meta":121},[304],"language-bash","curl --fail --max-time 10 http:\u002F\u002FYOUR_PUBLIC_IP:19132\u002Fv1\u002Fjoin\n","bash",[29,308,305],{"__ignoreMap":121},[16,310,311],{},"For HTML, a timeout or 404, check signaling and routing. Use the real HTTPS hostname if you configured TLS. If you get server JSON, join with a Bedrock client from outside your network, for example through a mobile hotspot. That also checks the join POST and gameplay UDP.",[313,314,315,328],"table",{},[316,317,318],"thead",{},[319,320,321,325],"tr",{},[322,323,324],"th",{},"Symptom",[322,326,327],{},"Next check",[329,330,331,340,348,358,366],"tbody",{},[319,332,333,337],{},[334,335,336],"td",{},"TCP works but joining times out",[334,338,339],{},"Public advertised UDP destination and its full forwarding path",[319,341,342,345],{},[334,343,344],{},"30-second handshake timeout",[334,346,347],{},"Compare advertised address with router\u002Fcloud NAT and UDP rules",[319,349,350,355],{},[334,351,352],{},[29,353,354],{},"juice: Send failed, errno=101",[334,356,357],{},"Compare routing and offered addresses, then test a join",[319,359,360,363],{},[334,361,362],{},"Settings revert after restart",[334,364,365],{},"Panel overrides and JVM properties",[319,367,368,371],{},[334,369,370],{},"Only one player fails",[334,372,373],{},"Client network, IPv4\u002FIPv6 route, supported version and console connector",[16,375,376,377,382],{},"On cloud NAT, check the public advertisement as in this ",[34,378,381],{"href":379,"rel":380},"https:\u002F\u002Fwww.reddit.com\u002Fr\u002Fadmincraft\u002Fcomments\u002F1wspruo\u002Fhow_do_i_set_up_nethernet_on_geysermc\u002F",[38],"Oracle-hosted case",". Joining worked after correction despite remaining warnings. Test the connection before changing more settings.",[16,384,385,386,389,390,393],{},"IPv4 and IPv6 are different address formats. Check both routes if your hostname publishes both, and use bracketed IPv6 advertisements such as ",[29,387,388],{},"[YOUR_PUBLIC_IPV6]:19132",". ",[20,391,392],{},"CGNAT"," means your internet provider shares a public IP between customers; your own router forwarding may not create public IPv4 access. Choose a verified reachable address or a service explicitly supporting the necessary signaling and UDP paths. Test gameplay UDP even after successful external signaling registration.",[16,395,396],{},"Console connector apps add another path. Test a directly configurable mobile or Windows Bedrock client first. Check NetherNet with a real join instead of an old RakNet-only status checker.",[11,398,400],{"id":399},"hosting-and-server-network-constraints","Hosting and server-network constraints",[16,402,403,404,407,408,411,412,415],{},"For the direct example, budget ",[20,405,406],{},"one TCP signaling listener and one UDP gameplay listener per instance",". For ",[29,409,410],{},"both",", budget the TCP listener and ",[20,413,414],{},"two UDP listeners",". Multiple instances on one public IP need distinct usable port allocations. This budget concerns listeners, not one port allocation per player; ask your host which allocations are available.",[16,417,418,419],{},"Ask your host: ",[20,420,421,422,426],{},"“I run Geyser ",[423,424,425],"span",{},"YOUR_GEYSER_VERSION"," with NetherNet. Please confirm my initial TCP port, advertised UDP gameplay port, and extra RakNet port if I use both. Do startup overrides or my existing Java TCP port prevent signaling from starting?”",[16,428,429,430,433,434,439,440,152,443,446],{},"Reserve a separate TCP port for Geyser's initial connection. This build cannot share the Java TCP listener through ",[29,431,432],{},"clone-remote-port",". Check the startup log for ",[34,435,438],{"href":436,"rel":437},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fpull\u002F6742",[38],"that port conflict",": Geyser disables built-in signaling and can fall back to an external service. If you use ",[29,441,442],{},"nxs",[29,444,445],{},"hybrid",", follow its documented connectivity checks.",[16,448,449,450,453,454,457,458,463],{},"Configure your HTTP reverse proxy to forward ",[29,451,452],{},"GET \u002Fv1\u002Fjoin"," and ",[29,455,456],{},"POST \u002Fv1\u002Fjoin\u002F{networkId}"," with request and response bodies intact. Route gameplay UDP separately and arrange its DDoS protection. Review legacy RakNet mitigation rules too. Test your hostname-routing plugins: ",[34,459,462],{"href":460,"rel":461},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fissues\u002F6710",[38],"issue 6710"," reports URL-shaped virtual host values on Velocity. Check that your plugins handle them.",[16,465,466,469,470,473],{},[20,467,468],{},"TLS encrypts the initial HTTP connection."," For TLS, configure PEM certificate\u002Fkey files or PKCS12 under ",[29,471,472],{},"bedrock.signaling.builtin.https",". Use a trusted certificate to avoid the plain-HTTP first-trust prompt; check its name, trust and expiry. Pass signaling without browser logins, redirects or CAPTCHAs. Add a reachable UDP gameplay path alongside an HTTP-only tunnel.",[11,475,477],{"id":476},"sources","Sources",[16,479,480,481,483],{},"Primary sources checked on ",[20,482,60],{},". Version and build references describe that review date.",[485,486,487,494,501,508,515,522],"ul",{},[83,488,489],{},[34,490,493],{"href":491,"rel":492},"https:\u002F\u002Fdownload.geysermc.org\u002Fv2\u002Fprojects\u002Fgeyser\u002Fversions\u002Flatest\u002Fbuilds\u002Flatest",[38],"Official Geyser current-build metadata",[83,495,496],{},[34,497,500],{"href":498,"rel":499},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsupported-versions\u002F",[38],"Geyser supported versions",[83,502,503],{},[34,504,507],{"href":505,"rel":506},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fblob\u002F50a464d7db132ca5943b608a2110c158bf09702a\u002Fcore\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Fgeysermc\u002Fgeyser\u002Fconfiguration\u002FGeyserConfig.java",[38],"Geyser configuration at reviewed build",[83,509,510],{},[34,511,514],{"href":512,"rel":513},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fblob\u002F50a464d7db132ca5943b608a2110c158bf09702a\u002Fcore\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Fgeysermc\u002Fgeyser\u002Fnetwork\u002Fbedrock\u002Fnethernet\u002FNetherNetServer.java",[38],"Geyser NetherNet implementation at reviewed build",[83,516,517],{},[34,518,521],{"href":519,"rel":520},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fport-forwarding\u002F",[38],"Geyser port forwarding",[83,523,524],{},[34,525,527],{"href":36,"rel":526},[38],"Minecraft named error codes",{"title":121,"searchDepth":529,"depth":529,"links":530},2,[531,532,533,537,538,539,540],{"id":13,"depth":529,"text":14},{"id":74,"depth":529,"text":75},{"id":193,"depth":529,"text":194,"children":534},[535],{"id":228,"depth":536,"text":229},3,{"id":247,"depth":529,"text":248},{"id":280,"depth":529,"text":281},{"id":399,"depth":529,"text":400},{"id":476,"depth":529,"text":477},"networking","2026-10-13","Set up the newer connection method for Bedrock players and find out why joins fail.",null,"md",[],false,"7","nethernet-geyser",{},true,"\u002Fguides\u002Fnethernet-geyser","bedrock-connection-test",[555,556,557],"nethernet-bedrock-server","geyser-floodgate-crossplay","geyser-floodgate-velocity-proxy",{"title":5,"description":543},[560,561,562,563,564,565],{"title":493,"url":491},{"title":500,"url":498},{"title":507,"url":505},{"title":514,"url":512},{"title":521,"url":519},{"title":527,"url":36},"guides\u002F28.nethernet-geyser","_1fOw8Zmu6q8ufXFsvO237hR_dKBlsmbu_-snxiCgS0",[569,573,574,581,587,592,596,603,609,614,619,624,629,635,640,646,651,656,661,667,673,679,685,691,697,703,709,715],{"path":570,"title":571,"description":572,"excerpt":544,"author":6,"date":542,"category":541,"localeGroup":555},"\u002Fguides\u002Fnethernet-bedrock-server","Fix NetherNet connections on your Bedrock server","Friends cannot join after an update? Check the new port rules and the address they can reach.",{"path":552,"title":5,"description":543,"excerpt":544,"author":6,"date":542,"category":541,"localeGroup":549},{"path":575,"title":576,"description":577,"excerpt":544,"author":6,"date":578,"category":579,"localeGroup":580},"\u002Fguides\u002Fvelocity-proxy-docker-compose-itzg-mc-proxy","Set up Velocity and Paper with Docker Compose","Connect your proxy and server while keeping Paper ports isolated from the internet.","2026-08-01","getting-started","velocity-proxy-docker-compose",{"path":582,"title":583,"description":584,"excerpt":544,"author":6,"date":578,"category":585,"localeGroup":586},"\u002Fguides\u002Fvelocity-modern-forwarding-paper-docker","Configure Velocity modern forwarding with Paper","Match forwarding settings, protect the shared secret, and block direct backend access.","security","velocity-modern-forwarding-paper",{"path":588,"title":589,"description":590,"excerpt":544,"author":6,"date":578,"category":541,"localeGroup":591},"\u002Fguides\u002Fvelocity-proxy-cannot-connect-backend-docker","Velocity cannot reach Paper: check the Docker connection","Check container state, the shared network, service name, and backend port.","velocity-backend-unreachable-docker",{"path":593,"title":594,"description":595,"excerpt":544,"author":6,"date":578,"category":541,"localeGroup":557},"\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker","Set up Geyser and Floodgate on Velocity with Docker","Install Geyser on the proxy, configure RakNet or NetherNet, and check Bedrock player authentication.",{"path":597,"title":598,"description":599,"excerpt":544,"author":6,"date":600,"category":601,"localeGroup":602},"\u002Fguides\u002Fupdate-minecraft-server-docker-compose-rollback","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.","2026-07-18","docker-operations","docker-minecraft-update-rollback",{"path":604,"title":605,"description":606,"excerpt":544,"author":6,"date":600,"category":607,"localeGroup":608},"\u002Fguides\u002Finstall-paper-plugins-docker-compose","Install Paper plugins with Docker Compose","Install plugins from a source directory or Modrinth and test updates before using them.","mods-plugins","paper-plugins-docker-compose",{"path":610,"title":611,"description":612,"excerpt":544,"author":6,"date":600,"category":607,"localeGroup":613},"\u002Fguides\u002Fmodrinth-modpack-itzg-minecraft-server-docker","Run Modrinth modpacks with Docker Compose","Pin the pack version and Java runtime, then match the server and client before the first start.","modrinth-modpack-docker",{"path":615,"title":616,"description":617,"excerpt":544,"author":6,"date":600,"category":601,"localeGroup":618},"\u002Fguides\u002Fmigrate-existing-minecraft-server-to-docker","Move an existing Minecraft server to Docker","Transfer your world, configuration, and extensions while keeping the original server available for rollback.","migrate-minecraft-server-to-docker",{"path":620,"title":621,"description":622,"excerpt":544,"author":6,"date":600,"category":601,"localeGroup":623},"\u002Fguides\u002Fminecraft-container-keeps-restarting-docker-compose","Find why your Minecraft container keeps restarting","Capture the container state and first startup error before interrupting the restart loop.","docker-minecraft-restart-loop",{"path":625,"title":626,"description":627,"excerpt":544,"author":6,"date":600,"category":607,"localeGroup":628},"\u002Fguides\u002Fcurseforge-modpack-itzg-minecraft-server-docker","Run CurseForge modpacks with Docker Compose","Configure AUTO_CURSEFORGE, pin the pack file, and handle the API key and manual downloads.","curseforge-modpack-docker",{"path":630,"title":631,"description":632,"excerpt":544,"author":6,"date":600,"category":633,"localeGroup":634},"\u002Fguides\u002Fminecraft-docker-exit-code-137-oomkilled","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.","performance","minecraft-docker-exit-137-oom",{"path":636,"title":637,"description":638,"excerpt":544,"author":6,"date":600,"category":585,"localeGroup":639},"\u002Fguides\u002Fsecure-minecraft-server-docker-compose","Secure a Minecraft server in Docker","Configure authentication, the whitelist, RCON access, file permissions, and published ports.","minecraft-docker-security-hardening",{"path":641,"title":642,"description":643,"excerpt":544,"author":6,"date":600,"category":644,"localeGroup":645},"\u002Fguides\u002Fset-up-automatic-minecraft-backups-docker-mc-backup","Set up automatic Minecraft backups with itzg\u002Fmc-backup","Add a backup container, set retention periods, and verify the resulting archives.","backups","docker-mc-backup-setup",{"path":647,"title":648,"description":649,"excerpt":544,"author":6,"date":600,"category":644,"localeGroup":650},"\u002Fguides\u002Frestore-minecraft-world-backup-docker","Restore a Minecraft world from a Docker backup","Stop the server, preserve the current data, and restore the selected backup.","docker-minecraft-restore-runbook",{"path":652,"title":653,"description":654,"excerpt":544,"author":6,"date":600,"category":644,"localeGroup":655},"\u002Fguides\u002Fhetzner-snapshots-minecraft-world-volumes","Hetzner snapshots and Minecraft data on volumes","Hetzner snapshots exclude attached volumes. Check where your world is stored and back it up separately.","hetzner-snapshots-volumes",{"path":657,"title":658,"description":659,"excerpt":544,"author":6,"date":660,"category":541,"localeGroup":556},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","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.","2026-04-04",{"path":662,"title":663,"description":664,"excerpt":544,"author":6,"date":665,"category":579,"localeGroup":666},"\u002Fguides\u002Fpaper-vs-vanilla-vs-fabric-vs-forge","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.","2026-04-03","minecraft-server-software-choice",{"path":668,"title":669,"description":670,"excerpt":544,"author":6,"date":671,"category":633,"localeGroup":672},"\u002Fguides\u002Fpaper-view-distance-vs-simulation-distance","Configure view distance and simulation distance in Paper","Compare viewing distance and active simulation, then measure their effect on server load.","2026-04-02","paper-view-distance-simulation-distance",{"path":674,"title":675,"description":676,"excerpt":544,"author":6,"date":677,"category":633,"localeGroup":678},"\u002Fguides\u002Fspark-profiler-paper-docker","Investigate lag with Spark Profiler in Paper and Docker","Record a profile while lag occurs and identify costly plugins, tasks, and server activity.","2026-04-01","spark-profiler-paper-docker",{"path":680,"title":681,"description":682,"excerpt":544,"author":6,"date":683,"category":633,"localeGroup":684},"\u002Fguides\u002Fminecraft-server-lag-tps-mspt-cant-keep-up","Investigate Minecraft lag: TPS, MSPT, and “Can’t keep up”","Check tick times and investigate CPU, chunk, entity, and plugin problems.","2026-03-31","minecraft-lag-tps-mspt",{"path":686,"title":687,"description":688,"excerpt":544,"author":6,"date":689,"category":601,"localeGroup":690},"\u002Fguides\u002Ffix-permission-denied-itzg-docker-minecraft-server","Fix permission denied errors for Minecraft in Docker","Match data-directory ownership to the container UID and GID.","2026-03-09","itzg-permission-denied",{"path":692,"title":693,"description":694,"excerpt":544,"author":6,"date":695,"category":601,"localeGroup":696},"\u002Fguides\u002Fadminister-docker-minecraft-server-rcon-console","Manage Minecraft in Docker with RCON and the console","Run server commands, manage the whitelist, and stop the server without exposing RCON publicly.","2026-03-08","docker-minecraft-rcon-console",{"path":698,"title":699,"description":700,"excerpt":544,"author":6,"date":701,"category":541,"localeGroup":702},"\u002Fguides\u002Fminecraft-domain-without-port-srv-record","Set up a Minecraft domain without a port using SRV","Connect a domain to your Java server and check its SRV and A\u002FAAAA records.","2026-03-07","minecraft-srv-record-domain",{"path":704,"title":705,"description":706,"excerpt":544,"author":6,"date":707,"category":541,"localeGroup":708},"\u002Fguides\u002Fopen-port-25565-minecraft-server-hetzner-linux","Open Minecraft port 25565 on Hetzner and Linux","Check Docker port publishing and firewalls when your server runs but players cannot connect.","2026-03-05","open-port-25565-hetzner-linux",{"path":710,"title":711,"description":712,"excerpt":544,"author":6,"date":713,"category":579,"localeGroup":714},"\u002Fguides\u002Fdetermining-correct-java-version-for-operating-minecraft-server","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.","2025-01-31","java-version-minecraft-server",{"path":716,"title":717,"description":718,"excerpt":544,"author":6,"date":719,"category":579,"localeGroup":720},"\u002Fguides\u002Fminecraft-server-with-docker-on-hetzner-cloud","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.","2025-01-28","hetzner-docker-setup",[722,723,724,725,726,727,728,729,730,731,732,733,734,735,736,737,738,739,740,741,742,743,744,745,746,747,748,749,716,680,674,668,662,657,597,604,610,615,620,710,625,630,636,575,582,588,593,570,552,704,698,692,686,641,647,652],"\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\u002Fnethernet-bedrock-server","\u002Fde\u002Fguides\u002Fnethernet-geyser","\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",1791923320940]