[{"data":1,"prerenderedAt":903},["ShallowReactive",2],{"\u002Fguides\u002Fnethernet-geyser\u002F":3,"guides:en":716,"published-guide-paths":873},{"id":4,"title":5,"author":6,"body":7,"category":684,"date":685,"description":686,"excerpt":687,"extension":688,"faq":689,"featured":690,"featuredOrder":687,"indexOrder":691,"localeGroup":692,"meta":693,"navigation":694,"path":695,"primaryTool":696,"published":694,"related":697,"seo":702,"slug":692,"sources":703,"stem":713,"updated":714,"__hash__":715},"guides\u002Fguides\u002F28.nethernet-geyser.md","Set up NetherNet on your Geyser server","setupmc.com Team",{"type":8,"value":9,"toc":669},"minimark",[10,15,44,52,74,78,81,95,103,124,134,147,182,200,204,207,210,216,223,234,243,259,263,271,279,282,288,292,300,308,311,319,381,392,395,399,413,424,444,461,471,475,482,587,598,602,607],[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,63,64,69,70,73],{},[20,55,56],{},"NetherNet is now required:"," ",[34,59,62],{"href":60,"rel":61},"https:\u002F\u002Fwww.minecraft.net\u002Fen-us\u002Farticle\u002Fminecraft--bedrock-edition-26-60-changelog",[38],"Bedrock 26.60 was released on 27 October 2026",". According to ",[34,65,68],{"href":66,"rel":67},"https:\u002F\u002Fgeysermc.org\u002Fblog\u002Fpreparing-for-nethernet\u002F",[38],"Geyser",", clients from 26.60 onward no longer connect over RakNet. Update Geyser and use ",[29,71,72],{},"transport: nethernet","; switching back to RakNet does not fix current clients.",[11,75,77],{"id":76},"configure-a-direct-nethernet-connection","Configure a direct NetherNet connection",[16,79,80],{},"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:",[82,83,84,92],"ol",{},[85,86,87,88,91],"li",{},"The game makes an initial TCP connection, called ",[20,89,90],{},"signaling",". Geyser sends the address and UDP port for gameplay.",[85,93,94],{},"The game connects to that UDP destination. A successful TCP port check only helps with the first stage.",[16,96,97,98,102],{},"Hosting on your PC or NAS? ",[34,99,101],{"href":100},"\u002Fguides\u002Fnethernet-https-ios-ipados\u002F","Find your public IP without renting a server"," explains checking from the home network and comparing the router WAN address. Do not advertise a local PC address as your public endpoint.",[16,104,105,106,111,112,115,116,119,120,123],{},"Update Geyser from the ",[34,107,110],{"href":108,"rel":109},"https:\u002F\u002Fgeysermc.org\u002Fdownload\u002F",[38],"official downloads",", back up your ",[29,113,114],{},"config.yml",", and edit its existing ",[29,117,118],{},"bedrock"," section. Replace ",[29,121,122],{},"YOUR_PUBLIC_IP"," with your reachable public IP before saving; Geyser does not fill this placeholder automatically:",[125,126,132],"pre",{"className":127,"code":129,"language":130,"meta":131},[128],"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    advertise-addresses:\n      - \"YOUR_PUBLIC_IP:19132\"\n","yaml","",[29,133,129],{"__ignoreMap":131},[16,135,136,57,139,142,143,146],{},[20,137,138],{},"Allow TCP 19132 and UDP 19132 for this configuration.",[29,140,141],{},"webrtc-port: 0"," uses ",[29,144,145],{},"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,148,149,150,153,154,157,158,161,162,165,166,169,170,173,174,177,178,181],{},"A ",[20,151,152],{},"public IP"," is reachable from outside your network. A ",[20,155,156],{},"LAN IP",", often starting with ",[29,159,160],{},"192.168."," or ",[29,163,164],{},"10.",", is local. The ",[20,167,168],{},"advertised address"," is the destination Geyser tells players to use. The ",[20,171,172],{},"bind address"," is where Geyser listens locally. Keep ",[29,175,176],{},"address: 0.0.0.0"," for local interfaces; do not bind to a public IP your machine does not own, or to loopback ",[29,179,180],{},"127.0.0.1"," for NetherNet.",[16,183,184,187,188,191,192,195,196,199],{},[20,185,186],{},"NAT"," is address and port translation by your router or provider. If public UDP 20132 reaches Geyser UDP 19132, advertise ",[29,189,190],{},"YOUR_PUBLIC_IP:20132",". The TCP signaling mapping remains separate. You can also set ",[29,193,194],{},"-DgeyserAdvertiseAddresses=YOUR_PUBLIC_IP:20132"," before ",[29,197,198],{},"-jar","; that JVM setting overrides the configuration list. Check startup flags if your edits seem ignored.",[11,201,203],{"id":202},"allow-both-paths-and-restart","Allow both paths and restart",[16,205,206],{},"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,208,209],{},"For Docker, add these publications to the existing service without replacing its data mounts:",[125,211,214],{"className":212,"code":213,"language":130,"meta":131},[128],"ports:\n  - \"19132:19132\u002Ftcp\"\n  - \"19132:19132\u002Fudp\"\n",[29,215,213],{"__ignoreMap":131},[16,217,218,219,222],{},"Keep the existing Java TCP publication too. For translated gameplay ports, use ",[29,220,221],{},"20132:19132\u002Fudp",". Docker runs Geyser in a container which may otherwise advertise a private container address.",[16,224,225,226,229,230,233],{},"Stop the running server or proxy gracefully, then start it normally after configuration changes. Do a full restart, not just ",[29,227,228],{},"\u002Fgeyser reload",". For Docker port changes, recreate the service with ",[29,231,232],{},"docker compose up -d"," while preserving its existing volume. For hosted servers, use the panel restart and inspect its startup logs.",[235,236,238,239,242],"h3",{"id":237},"do-you-still-need-transport-both","Do you still need ",[29,240,241],{},"transport: both","?",[16,244,245,246,249,250,253,254,51],{},"Use ",[29,247,248],{},"nethernet"," for clients from 26.60 onward. To also accept older, Geyser-supported clients over RakNet, choose ",[29,251,252],{},"both"," and reserve a separate UDP port. First check the ",[34,255,258],{"href":256,"rel":257},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fsupported-versions\u002F",[38],"supported version range",[11,260,262],{"id":261},"check-versions-and-authentication-before-blaming-ports","Check versions and authentication before blaming ports",[16,264,265,266,270],{},"Check the ",[34,267,269],{"href":256,"rel":268},[38],"official supported-versions page"," for Bedrock compatibility and the Java client Geyser emulates. Your 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,272,273,274,278],{},"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,275,277],{"href":276},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate\u002F","crossplay guide"," for authentication checks.",[16,280,281],{},"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,283,284,285,287],{},"Inspect startup logs for port conflicts, unavailable native WebRTC libraries or failure to create state. Preserve the ",[29,286,248],{}," 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,289,291],{"id":290},"test-introduction-and-gameplay-separately","Test introduction and gameplay separately",[16,293,294,295,299],{},"Check signaling with the ",[34,296,298],{"href":297},"\u002Fbedrock-connection-test\u002F","NetherNet connection test"," or this curl command from another network:",[125,301,306],{"className":302,"code":304,"language":305,"meta":131},[303],"language-bash","curl --fail --max-time 10 http:\u002F\u002FYOUR_PUBLIC_IP:19132\u002Fv1\u002Fjoin\n","bash",[29,307,304],{"__ignoreMap":131},[16,309,310],{},"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.",[16,312,313,314,318],{},"Optionally, the ",[34,315,317],{"href":316},"\u002Fserver-status-checker\u002F","server status checker"," in Bedrock mode shows the server name, version and player count. It does not replace a join test.",[320,321,322,335],"table",{},[323,324,325],"thead",{},[326,327,328,332],"tr",{},[329,330,331],"th",{},"Symptom",[329,333,334],{},"Next check",[336,337,338,347,355,365,373],"tbody",{},[326,339,340,344],{},[341,342,343],"td",{},"TCP works but joining times out",[341,345,346],{},"Public advertised UDP destination and its full forwarding path",[326,348,349,352],{},[341,350,351],{},"30-second handshake timeout",[341,353,354],{},"Compare advertised address with router\u002Fcloud NAT and UDP rules",[326,356,357,362],{},[341,358,359],{},[29,360,361],{},"juice: Send failed, errno=101",[341,363,364],{},"Compare routing and offered addresses, then test a join",[326,366,367,370],{},[341,368,369],{},"Settings revert after restart",[341,371,372],{},"Panel overrides and JVM properties",[326,374,375,378],{},[341,376,377],{},"Only one player fails",[341,379,380],{},"Client network, IPv4\u002FIPv6 route, supported version and console connector",[16,382,383,384,387,388,391],{},"IPv4 and IPv6 are different address formats. Check both routes if your hostname publishes both, and use bracketed IPv6 advertisements such as ",[29,385,386],{},"[YOUR_PUBLIC_IPV6]:19132",". ",[20,389,390],{},"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,393,394],{},"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,396,398],{"id":397},"hosting-and-server-network-constraints","Hosting and server-network constraints",[16,400,401,402,405,406,408,409,412],{},"For the direct example, budget ",[20,403,404],{},"one TCP signaling listener and one UDP gameplay listener per instance",". For ",[29,407,252],{},", budget the TCP listener and ",[20,410,411],{},"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,414,415,416],{},"Ask your host: ",[20,417,418,419,423],{},"“I run Geyser ",[420,421,422],"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,425,426,427,430,431,436,437,161,440,443],{},"Reserve a separate TCP port for Geyser's initial connection. Built-in signaling cannot share the Java TCP listener through ",[29,428,429],{},"clone-remote-port",". Check the startup log for ",[34,432,435],{"href":433,"rel":434},"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,438,439],{},"nxs",[29,441,442],{},"hybrid",", follow its documented connectivity checks.",[16,445,446,447,450,451,454,455,460],{},"Configure your HTTP reverse proxy to forward ",[29,448,449],{},"GET \u002Fv1\u002Fjoin"," and ",[29,452,453],{},"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,456,459],{"href":457,"rel":458},"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,462,463,466,467,470],{},[20,464,465],{},"TLS encrypts the initial HTTP connection."," For TLS, configure PEM certificate\u002Fkey files or PKCS12 under ",[29,468,469],{},"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,472,474],{"id":473},"interpret-current-error-reports","Interpret current error reports",[16,476,477,478,481],{},"As of ",[20,479,480],{},"29 October 2026",", these reports concern the versions and platforms listed. Update Geyser and retest before applying a reported workaround.",[320,483,484,494],{},[323,485,486],{},[326,487,488,491],{},[329,489,490],{},"Message \u002F symptom",[329,492,493],{},"Report and next step",[336,495,496,508,536,555,571],{},[326,497,498,501],{},[341,499,500],{},"iPhone\u002FiPad fails while Windows works",[341,502,503,504,507],{},"Check HTTPS signaling; see the ",[34,505,506],{"href":100},"HTTPS guide for iOS and iPadOS",". A universal HTTPS requirement is not confirmed.",[326,509,510,521],{},[341,511,512,513,516,517,520],{},"GET ",[29,514,515],{},"\u002Fv1\u002Fjoin"," succeeds, POST ",[29,518,519],{},"\u002Fv1\u002Fjoin\u002F{networkId}"," returns 500",[341,522,523,528,529,531,532,535],{},[34,524,527],{"href":525,"rel":526},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fissues\u002F6810",[38],"#6810",", open: reported on build 1265 with ",[29,530,442],{},"; ",[29,533,534],{},"builtin"," worked in comparison. Only change mode deliberately if you do not need the external entry point.",[326,537,538,547],{},[341,539,540,23,543,546],{},[29,541,542],{},"InitialConnection-122",[29,544,545],{},"NetherNetDataChannelClosed",", 30-second handshake timeout",[341,548,549,554],{},[34,550,553],{"href":551,"rel":552},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fissues\u002F6807",[38],"#6807",", closed on 27 October: Alpine\u002Fmusl on ARM64, build 1265; switching to a glibc image worked in the report. The maintainer identifies the 26 October build as resolving it, confirmed by the reporter.",[326,556,557,563],{},[341,558,559,562],{},[29,560,561],{},"libdatachannel-java.dll"," blocked, NetherNet unavailable",[341,564,565,570],{},[34,566,569],{"href":567,"rel":568},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fissues\u002F6822",[38],"#6822",", open: Windows 11 Smart App Control. Inspect Code Integrity and startup logs; do not routinely disable protection.",[326,572,573,579],{},[341,574,575,578],{},[29,576,577],{},"Duplicate handler name: rak-error-handler"," with NXS",[341,580,581,586],{},[34,582,585],{"href":583,"rel":584},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fissues\u002F6824",[38],"#6824",", reported on build 1270, closed on 27 October. The maintainer points to the 26 October build as resolving it. Retest after updating; preserve the full stack trace and signaling mode if it recurs.",[16,588,589,592,593,51],{},[20,590,591],{},"Officially documented:"," Since build 1272, Geyser supports HAProxy headers for NetherNet gameplay. Configure trusted HAProxy IPs; previous RakNet proxy settings alone are insufficient. See the ",[34,594,597],{"href":595,"rel":596},"https:\u002F\u002Fgeysermc.org\u002Fblog\u002Fpreparing-for-nethernet\u002F#haproxy-support",[38],"Geyser update from 26 October",[11,599,601],{"id":600},"sources","Sources",[16,603,604,605,51],{},"Sources checked: ",[20,606,480],{},[608,609,610,616,623,629,636,643,650,656,662],"ul",{},[85,611,612],{},[34,613,615],{"href":66,"rel":614},[38],"Preparing Your Geyser Server for NetherNet",[85,617,618],{},[34,619,622],{"href":620,"rel":621},"https:\u002F\u002Fdownload.geysermc.org\u002Fv2\u002Fprojects\u002Fgeyser\u002Fversions\u002Flatest\u002Fbuilds\u002Flatest",[38],"Official Geyser current-build metadata",[85,624,625],{},[34,626,628],{"href":256,"rel":627},[38],"Geyser supported versions",[85,630,631],{},[34,632,635],{"href":633,"rel":634},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fblob\u002Fe963aeca854711b5ba843541f6e03ccfcadd3ef1\u002Fcore\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Fgeysermc\u002Fgeyser\u002Fconfiguration\u002FGeyserConfig.java",[38],"Geyser configuration source",[85,637,638],{},[34,639,642],{"href":640,"rel":641},"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\u002Fblob\u002Fe963aeca854711b5ba843541f6e03ccfcadd3ef1\u002Fcore\u002Fsrc\u002Fmain\u002Fjava\u002Forg\u002Fgeysermc\u002Fgeyser\u002Fnetwork\u002Fbedrock\u002Fnethernet\u002FNetherNetServer.java",[38],"Geyser NetherNet implementation source",[85,644,645],{},[34,646,649],{"href":647,"rel":648},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fport-forwarding\u002F",[38],"Geyser port forwarding",[85,651,652],{},[34,653,655],{"href":36,"rel":654},[38],"Minecraft named error codes",[85,657,658],{},[34,659,661],{"href":60,"rel":660},[38],"Minecraft Bedrock 26.60 changelog",[85,663,664],{},[34,665,668],{"href":666,"rel":667},"https:\u002F\u002Fgeysermc.org\u002Fwiki\u002Fgeyser\u002Fnethernet-https\u002F",[38],"HTTPS for NetherNet",{"title":131,"searchDepth":670,"depth":670,"links":671},2,[672,673,674,679,680,681,682,683],{"id":13,"depth":670,"text":14},{"id":76,"depth":670,"text":77},{"id":202,"depth":670,"text":203,"children":675},[676],{"id":237,"depth":677,"text":678},3,"Do you still need transport: both?",{"id":261,"depth":670,"text":262},{"id":290,"depth":670,"text":291},{"id":397,"depth":670,"text":398},{"id":473,"depth":670,"text":474},{"id":600,"depth":670,"text":601},"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",[698,699,700,701],"nethernet-https-ios-ipados","nethernet-bedrock-server","geyser-floodgate-crossplay","geyser-floodgate-velocity-proxy",{"title":5,"description":686},[704,705,706,707,708,709,710,711,712],{"title":661,"url":60},{"title":668,"url":666},{"title":615,"url":66},{"title":622,"url":620},{"title":628,"url":256},{"title":635,"url":633},{"title":642,"url":640},{"title":649,"url":647},{"title":655,"url":36},"guides\u002F28.nethernet-geyser","2026-10-29","b-ShIbBjnf-70DvQj6Lx9gvpnVFB9k7bWfdI3ShlqwI",[717,721,725,726,733,739,744,748,755,761,766,771,776,781,787,792,798,803,808,813,819,825,831,837,843,849,855,861,867],{"path":718,"title":719,"description":720,"excerpt":687,"author":6,"date":714,"category":684,"localeGroup":698},"\u002Fguides\u002Fnethernet-https-ios-ipados","NetherNet on iPhone and iPad: HTTPS for BDS and Geyser","Fix NetherNet issues on iOS and iPadOS: set up HTTPS for BDS or Geyser and choose between Warden Cloud, playit.gg and Tailscale.",{"path":722,"title":723,"description":724,"excerpt":687,"author":6,"date":685,"category":684,"localeGroup":699},"\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":695,"title":5,"description":686,"excerpt":687,"author":6,"date":685,"category":684,"localeGroup":692},{"path":727,"title":728,"description":729,"excerpt":687,"author":6,"date":730,"category":731,"localeGroup":732},"\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":734,"title":735,"description":736,"excerpt":687,"author":6,"date":730,"category":737,"localeGroup":738},"\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":740,"title":741,"description":742,"excerpt":687,"author":6,"date":730,"category":684,"localeGroup":743},"\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":745,"title":746,"description":747,"excerpt":687,"author":6,"date":730,"category":684,"localeGroup":701},"\u002Fguides\u002Fgeyser-floodgate-velocity-proxy-docker","Set up Geyser and Floodgate on Velocity with Docker","Install Geyser on the proxy, configure NetherNet, and check Bedrock player authentication.",{"path":749,"title":750,"description":751,"excerpt":687,"author":6,"date":752,"category":753,"localeGroup":754},"\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":756,"title":757,"description":758,"excerpt":687,"author":6,"date":752,"category":759,"localeGroup":760},"\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":762,"title":763,"description":764,"excerpt":687,"author":6,"date":752,"category":759,"localeGroup":765},"\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":767,"title":768,"description":769,"excerpt":687,"author":6,"date":752,"category":753,"localeGroup":770},"\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":772,"title":773,"description":774,"excerpt":687,"author":6,"date":752,"category":753,"localeGroup":775},"\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":777,"title":778,"description":779,"excerpt":687,"author":6,"date":752,"category":759,"localeGroup":780},"\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":782,"title":783,"description":784,"excerpt":687,"author":6,"date":752,"category":785,"localeGroup":786},"\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":788,"title":789,"description":790,"excerpt":687,"author":6,"date":752,"category":737,"localeGroup":791},"\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":793,"title":794,"description":795,"excerpt":687,"author":6,"date":752,"category":796,"localeGroup":797},"\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":799,"title":800,"description":801,"excerpt":687,"author":6,"date":752,"category":796,"localeGroup":802},"\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":804,"title":805,"description":806,"excerpt":687,"author":6,"date":752,"category":796,"localeGroup":807},"\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":809,"title":810,"description":811,"excerpt":687,"author":6,"date":812,"category":684,"localeGroup":700},"\u002Fguides\u002Fminecraft-crossplay-geyser-floodgate","Set up Geyser and Floodgate on Paper","Let Bedrock players join a Java server: install the plugins, configure NetherNet, and test the connection.","2026-04-04",{"path":814,"title":815,"description":816,"excerpt":687,"author":6,"date":817,"category":731,"localeGroup":818},"\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":820,"title":821,"description":822,"excerpt":687,"author":6,"date":823,"category":785,"localeGroup":824},"\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":826,"title":827,"description":828,"excerpt":687,"author":6,"date":829,"category":785,"localeGroup":830},"\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":832,"title":833,"description":834,"excerpt":687,"author":6,"date":835,"category":785,"localeGroup":836},"\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":838,"title":839,"description":840,"excerpt":687,"author":6,"date":841,"category":753,"localeGroup":842},"\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":844,"title":845,"description":846,"excerpt":687,"author":6,"date":847,"category":753,"localeGroup":848},"\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":850,"title":851,"description":852,"excerpt":687,"author":6,"date":853,"category":684,"localeGroup":854},"\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":856,"title":857,"description":858,"excerpt":687,"author":6,"date":859,"category":684,"localeGroup":860},"\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":862,"title":863,"description":864,"excerpt":687,"author":6,"date":865,"category":731,"localeGroup":866},"\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":868,"title":869,"description":870,"excerpt":687,"author":6,"date":871,"category":731,"localeGroup":872},"\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",[874,875,876,877,878,879,880,881,882,883,884,885,886,887,888,889,890,891,892,893,894,895,896,897,898,899,900,901,902,868,832,826,820,814,809,749,756,762,767,772,862,777,782,788,727,734,740,745,722,695,718,856,850,844,838,793,799,804],"\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\u002Fnethernet-https-ios-ipados","\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",1793280545821]