[{"data":1,"prerenderedAt":4},["ShallowReactive",2],{"blog-en-raknet-nethernet-minecraft-bedrock-26-60":3},"\u003Cp>Until 26.50, Bedrock players reached dedicated servers through \u003Cstrong>RakNet\u003C\u002Fstrong>. On \u003Cstrong>October 27, 2026\u003C\u002Fstrong>, Mojang released Minecraft Bedrock \u003Cstrong>26.60\u003C\u002Fstrong>, whose changelog states that this transport is now deprecated. The official dedicated server, Bedrock Dedicated Server (BDS), now shows an error, rather than a simple warning, when it does not use \u003Cstrong>NetherNet\u003C\u002Fstrong>, the WebRTC-based transport that replaced it as the default.\u003C\u002Fp>\n\u003Cp>Here is what it means for your server, whether on our game panel or a VPS.\u003C\u002Fp>\n\u003Ch2>RakNet, Bedrock&#39;s longtime transport\u003C\u002Fh2>\n\u003Cp>RakNet is a cross-platform C++ networking library built for games. It runs on UDP, a fast protocol with no delivery guarantee, and adds what UDP lacks, automatically resending lost packets and putting them back in order.\u003C\u002Fp>\n\u003Cp>Published as open source under a BSD license, its code has not changed since its GitHub repository was archived on January 13, 2022.\u003C\u002Fp>\n\u003Cp>In Minecraft, RakNet remained the default Bedrock Dedicated Server transport until 26.50. The whole connection then ran over UDP, by default on port 19132 for IPv4 and 19133 for IPv6.\u003C\u002Fp>\n\u003Ch2>From 26.50 to 26.60\u003C\u002Fh2>\n\u003Cp>Mojang carried out the transition over two releases.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">NetherNet in recent Bedrock versions\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Version\u003C\u002Fth>\n\u003Cth>Date\u003C\u002Fth>\n\u003Cth>Change\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>26.50\u003C\u002Ftd>\n\u003Ctd>September 15, 2026\u003C\u002Ftd>\n\u003Ctd>NetherNet becomes the default transport for dedicated servers, \u003Ccode>serveridentity\u003C\u002Fcode> command added\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>26.60\u003C\u002Ftd>\n\u003Ctd>October 27, 2026\u003C\u002Ftd>\n\u003Ctd>RakNet is deprecated, the warning suggesting NetherNet becomes an error\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>The \u003Ccode>transport\u003C\u002Fcode> setting in \u003Ccode>server.properties\u003C\u002Fcode> still accepts \u003Ccode>raknet\u003C\u002Fcode>, but \u003Ccode>nethernet\u003C\u002Fcode> is now the default. Mojang has published neither an official explanation for this change nor a timeline for removing RakNet.\u003C\u002Fp>\n\u003Ch2>NetherNet, a two-stage connection\u003C\u002Fh2>\n\u003Cp>Where RakNet only needed UDP, NetherNet needs both TCP and UDP, and the connection happens in two stages.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Signaling.\u003C\u002Fstrong> The game first contacts the server over HTTP, on its \u003Ccode>server-port\u003C\u002Fcode> TCP port, to get its name, version and number of connected players. It then sends its connection request, and the server answers with what is needed to set up the link.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The game session.\u003C\u002Fstrong> The game then opens a WebRTC connection that runs entirely over \u003Cstrong>UDP\u003C\u002Fstrong>, secured by a DTLS handshake. From that point on, signaling is no longer involved.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The server therefore has to be reachable over both TCP and UDP.\u003C\u002Fp>\n\u003Cp>Signaling has another advantage. The server can reject an unauthorized player there, before the game session even opens.\u003C\u002Fp>\n\u003Cp>Mojang&#39;s NetherNet guide adds two details. Without a valid answer to its first request, the game does not attempt the connection, and it sends only one request per attempt, with no retry. When it fails, it shows the \u003Cstrong>Door\u003C\u002Fstrong> error code.\u003C\u002Fp>\n\u003Cdiv class=\"markdown-alert markdown-alert-note\">\u003Cspan class=\"alert-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cline x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\u002F>\u003Cline x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cdiv class=\"markdown-alert-body\">\u003Cp>To join a remote server, outside the local network, a player must always be signed in to their Xbox Live account.\u003C\u002Fp>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch2>The server identity key\u003C\u002Fh2>\n\u003Cp>NetherNet also gives each server an \u003Cstrong>identity key\u003C\u002Fstrong>. The game trusts this key, not the IP address or host name.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>With HTTP signaling\u003C\u002Fstrong>, the game asks the player to confirm the key the first time it sees it.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>With HTTPS signaling\u003C\u002Fstrong>, with a valid certificate, the game relies on the certificate and does not show this prompt.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>Since BDS only handles HTTP signaling, your players will see this prompt on their first connection.\u003C\u002Fp>\n\u003Cp>BDS reads its key from \u003Ccode>keys\u002Fserver_identity_key.pem\u003C\u002Fcode>. If that file does not exist, it generates a key on the fly \u003Cstrong>without saving it\u003C\u002Fstrong>. The server then gets a new identity at every start, and your players have to accept the prompt every time.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">The BDS serveridentity command\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Command\u003C\u002Fth>\n\u003Cth>Effect\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>serveridentity save\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Saves the key currently in use\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>serveridentity status\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Shows whether a saved key is available\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>serveridentity delete\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Deletes the saved key, without changing the running identity\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>You can also provide your own key, a P-384 (secp384r1) private key in unencrypted PEM format. If you run several servers, a shared key spares your players from confirming each one. However, any key change forces your players to accept it again.\u003C\u002Fp>\n\u003Ch2>On our game servers\u003C\u002Fh2>\n\u003Cp>On our Bedrock Dedicated Server game servers, NetherNet is already set up. Your server stays reachable on a single port, the one shown in the panel, and its identity key is kept automatically, so your players only accept it once. All you need are three steps.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Update your server\u003C\u002Fstrong> to 26.60 or newer with the \u003Cstrong>MCBE Version Changer\u003C\u002Fstrong> tool.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Check the transport.\u003C\u002Fstrong> In the \u003Cstrong>Startup\u003C\u002Fstrong> tab, the \u003Cstrong>Transport\u003C\u002Fstrong> variable must be set to \u003Ccode>nethernet\u003C\u002Fcode>, its default.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Restart\u003C\u002Fstrong> the server.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cdiv class=\"markdown-alert markdown-alert-warning\">\u003Cspan class=\"alert-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Cpath d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\u002F>\u003Cline x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\u002F>\u003Cline x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cdiv class=\"markdown-alert-body\">\u003Cp>Do not change \u003Ccode>server-port\u003C\u002Fcode>, \u003Ccode>server-udp-ports\u003C\u002Fcode> or \u003Ccode>server-ip\u003C\u002Fcode> in \u003Ccode>server.properties\u003C\u002Fcode>. These settings are managed automatically.\u003C\u002Fp>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>The same applies to our PowerNukkitX and Altay servers. Use the port shown in the panel, without touching the network settings in \u003Ccode>pnx.yml\u003C\u002Fcode> or \u003Ccode>pocketmine.yml\u003C\u002Fcode>. If your players cannot connect, open a ticket and our team will handle it.\u003C\u002Fp>\n\u003Ch2>BDS on a VPS\u003C\u002Fh2>\n\u003Cp>On a VPS, configuring BDS is up to you.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">BDS network properties with NetherNet\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Property\u003C\u002Fth>\n\u003Cth>Role\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>transport\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>nethernet\u003C\u002Fcode> (default) or \u003Ccode>raknet\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>server-port\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>TCP signaling port, on a dual-stack IPv6 and IPv4 socket when the system allows it\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>server-portv6\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Ignored with NetherNet\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>server-ip\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Local listen address, empty for all interfaces\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>server-udp-ports\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>UDP gameplay ports, optionally with the address advertised to players\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>In the \u003Ccode>server.properties\u003C\u002Fcode> shipped with 26.60, \u003Ccode>server-udp-ports\u003C\u002Fcode> is set to \u003Ccode>19132\u003C\u002Fcode>. All players then share that UDP port, and port 19132 serves both signaling over TCP and the game session over UDP. If the line is missing or empty, BDS draws from the system&#39;s ephemeral port range.\u003C\u002Fp>\n\u003Cp>You can also set a range. Connections are then spread over its ports, which are reused once the range is full.\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-properties\">server-udp-ports=19140-19149\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Finally, you can set the address advertised to players, using the \u003Ccode>IP:public port:local port\u003C\u002Fcode> format. Both ports are mandatory, even when they are the same, and an IPv6 address goes in brackets (\u003Ccode>[IPv6]:public port:local port\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cpre>\u003Ccode class=\"language-properties\">server-udp-ports=203.0.113.42:19132:19132\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>This format is mainly for servers behind NAT, such as a home router, whose local address cannot be reached from the Internet. A public IP assigned directly to the machine does not need to be set.\u003C\u002Fp>\n\u003Cdiv class=\"markdown-alert markdown-alert-warning\">\u003Cspan class=\"alert-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Cpath d=\"M10.29 3.86L1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z\"\u002F>\u003Cline x1=\"12\" y1=\"9\" x2=\"12\" y2=\"13\"\u002F>\u003Cline x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cdiv class=\"markdown-alert-body\">\u003Cp>If your \u003Ccode>server.properties\u003C\u002Fcode> comes from an earlier version, check the \u003Ccode>server-udp-ports\u003C\u002Fcode> line. In 26.50 it was commented out by default and documented with a different syntax.\u003C\u002Fp>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>Once the ports are set, restart the server, then save its identity by typing \u003Ccode>serveridentity save\u003C\u002Fcode> in the BDS console, not in the VPS shell.\u003C\u002Fp>\n\u003Cdiv class=\"markdown-alert markdown-alert-tip\">\u003Cspan class=\"alert-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cpath d=\"M12 16v-4\"\u002F>\u003Cpath d=\"M12 8h.01\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cdiv class=\"markdown-alert-body\">\u003Cp>For an Internet-facing server, Mojang recommends putting a reverse proxy (nginx, HAProxy or a managed edge service) in front of \u003Ccode>server-port\u003C\u002Fcode>. It terminates connections, enforces request and rate limits, and absorbs abusive traffic. Only signaling goes through this proxy, UDP gameplay traffic stays direct.\u003C\u002Fp>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch2>PowerNukkitX 3.0.6\u003C\u002Fh2>\n\u003Cp>Among community server software, PowerNukkitX 3.0.6, released on October 28, 2026, is the first stable release compatible with 26.60. It is built on CloudburstMC&#39;s NetherNet network library and requires Java 21. RakNet is gone, along with the \u003Ccode>transport\u003C\u002Fcode> setting, and the old RakNet settings are automatically removed from \u003Ccode>pnx.yml\u003C\u002Fcode> during the update.\u003C\u002Fp>\n\u003Cp>The NetherNet settings live in the \u003Ccode>network-settings\u003C\u002Fcode> &gt; \u003Ccode>nethernet\u003C\u002Fcode> section of \u003Ccode>pnx.yml\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">Main PowerNukkitX NetherNet settings\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>Role\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>udpPort\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>UDP gameplay port, \u003Ccode>0\u003C\u002Fcode> by default. A fixed port is shared by all players. A value equal to the server port is treated as \u003Ccode>0\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>identityFile\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Identity key file, \u003Ccode>keys\u002Fidentity.pem\u003C\u002Fcode> by default, generated on first start\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>signalingMode\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>builtin\u003C\u002Fcode> by default, or \u003Ccode>nxs\u003C\u002Fcode>, \u003Ccode>hybrid\u003C\u002Fcode>, \u003Ccode>plugin\u003C\u002Fcode>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>signalingPort\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>TCP signaling port, \u003Ccode>0\u003C\u002Fcode> to use the server port\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>The Query protocol, enabled by default (\u003Ccode>enableQuery\u003C\u002Fcode>), occupies the server&#39;s UDP port. With \u003Ccode>udpPort\u003C\u002Fcode> set to \u003Ccode>0\u003C\u002Fcode>, each player therefore gets an ephemeral UDP port, and a console message asks you to set \u003Ccode>network-settings.nethernet.udpPort\u003C\u002Fcode>. On a VPS, set a \u003Ccode>udpPort\u003C\u002Fcode> distinct from the server port.\u003C\u002Fp>\n\u003Cp>Unlike BDS, PowerNukkitX offers no command to manage the identity. Keep the key file, since any replacement would force your players to accept it again.\u003C\u002Fp>\n\u003Ch2>PocketMine-MP, no NetherNet\u003C\u002Fh2>\n\u003Cp>The official PocketMine-MP repository is archived, and its last release, 5.44.3 of July 6, 2026, does not support NetherNet. A server running official PocketMine-MP can therefore no longer accept players on current versions.\u003C\u002Fp>\n\u003Cp>On our game panel, PocketMine-MP servers have already been migrated to Altay. On a VPS, back up your server and check your plugins&#39; compatibility before switching to Altay. Our article \u003Cstrong>&quot;PocketMine-MP Shuts Down, What Alternatives for Your Bedrock Server?&quot;\u003C\u002Fstrong> covers this shutdown and the alternatives in detail.\u003C\u002Fp>\n\u003Ch2>Altay 5.45.1\u003C\u002Fh2>\n\u003Cp>Altay, a PocketMine-MP fork, has supported 26.60 since version 5.45.0, released October 27, 2026, NetherNet only and with no support for earlier game versions. Its developers strongly recommend \u003Cstrong>5.45.1\u003C\u002Fstrong>, released on October 31, which brings several fixes and improvements.\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Authentication tokens whose audience is a list are no longer rejected with the &quot;Invalid JWT audience&quot; error.\u003C\u002Fli>\n\u003Cli>Signaling connections time out properly, and sessions are no longer interrupted while the player is loading.\u003C\u002Fli>\n\u003Cli>Gameplay traffic shares the server port by default, Query protocol included.\u003C\u002Fli>\n\u003Cli>IPv6 connections are supported when \u003Ccode>enable-ipv6\u003C\u002Fcode> is on.\u003C\u002Fli>\n\u003Cli>Performance is improved.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>The NetherNet settings live in the \u003Ccode>network.nethernet\u003C\u002Fcode> block of \u003Ccode>pocketmine.yml\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">Altay 5.45.1 NetherNet settings\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Key\u003C\u002Fth>\n\u003Cth>Role\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>\u003Ccode>udp-port\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>\u003Ccode>0\u003C\u002Fcode> (default) shares the server port, or gives each player its own port if that one is taken. \u003Ccode>-1\u003C\u002Fcode> gives each player its own port. A value from 1 to 65535 sets one port shared by all\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>udp-port-range\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Range in \u003Ccode>first-last\u003C\u002Fcode> format, at least 100 ports wide\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>signalling-port\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>TCP signaling port, \u003Ccode>0\u003C\u002Fcode> to use the server port\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>advertise-addresses\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Reachable addresses advertised to players\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>identity-domain\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Name shown in the trust prompt, the MOTD if empty\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Cp>The identity key is kept in the \u003Ccode>identity.key\u003C\u002Fcode> file, created on first start in the data folder. Changing \u003Ccode>identity-domain\u003C\u002Fcode> does not force players to accept the key again.\u003C\u002Fp>\n\u003Cdiv class=\"markdown-alert markdown-alert-note\">\u003Cspan class=\"alert-icon\">\u003Csvg xmlns=\"http:\u002F\u002Fwww.w3.org\u002F2000\u002Fsvg\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"10\"\u002F>\u003Cline x1=\"12\" y1=\"16\" x2=\"12\" y2=\"12\"\u002F>\u003Cline x1=\"12\" y1=\"8\" x2=\"12.01\" y2=\"8\"\u002F>\u003C\u002Fsvg>\u003C\u002Fspan>\u003Cdiv class=\"markdown-alert-body\">\u003Cp>With \u003Ccode>require-identity\u003C\u002Fcode> set to \u003Ccode>auto\u003C\u002Fcode>, Altay rejects unsigned connections whenever Xbox authentication is on, which can block some local network clients. The configuration file then advises setting it to \u003Ccode>false\u003C\u002Fcode>.\u003C\u002Fp>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch2>NXS and Warden\u003C\u002Fh2>\n\u003Cp>With \u003Cstrong>NXS\u003C\u002Fstrong> (NetherNet External Signaling), signaling is no longer handled by the server itself but by an external provider. This open specification is maintained by CloudburstMC, and Mojang does not mention it in its documentation.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Warden\u003C\u002Fstrong>, at warden.cloud, is the NXS provider configured by default in PowerNukkitX, Geyser and WaterdogPE. It is developed and operated by Ziax, the creators of CubeCraft. According to its website, it does not relay game traffic and does not hide the server&#39;s IP address. The service, in active development, primarily targets personal servers, with no SLA or uptime guarantee. For commercial use, contact Ziax.\u003C\u002Fp>\n\u003Cdiv class=\"md-table md-table--info md-table--striped\">\u003Cdiv class=\"md-table__caption\">Default signaling of servers and proxies\u003C\u002Fdiv>\u003Cdiv class=\"md-table__scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Software\u003C\u002Fth>\n\u003Cth>Default signaling\u003C\u002Fth>\n\u003Cth>NXS\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\u003Ctr>\n\u003Ctd>Bedrock Dedicated Server\u003C\u002Ftd>\n\u003Ctd>Built-in\u003C\u002Ftd>\n\u003Ctd>Not supported\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>PowerNukkitX\u003C\u002Ftd>\n\u003Ctd>Built-in\u003C\u002Ftd>\n\u003Ctd>Optional, with Warden as the default provider. Requires a fixed UDP port, so a fixed \u003Ccode>udpPort\u003C\u002Fcode> when Query is on\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Altay\u003C\u002Ftd>\n\u003Ctd>Built-in\u003C\u002Ftd>\n\u003Ctd>Not supported\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>Geyser\u003C\u002Ftd>\n\u003Ctd>Built-in\u003C\u002Ftd>\n\u003Ctd>As a plugin or mod, switches automatically to Warden when its port is already used by the Java server\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>WaterdogPE\u003C\u002Ftd>\n\u003Ctd>Built-in\u003C\u002Ftd>\n\u003Ctd>Optional, with Warden as the default provider\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\u003C\u002Ftable>\n\u003C\u002Fdiv>\u003C\u002Fdiv>\n\u003Ch2>STUN and TURN\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>STUN\u003C\u002Fstrong> lets a machine discover its public address, and \u003Cstrong>TURN\u003C\u002Fstrong> relays traffic when no direct path exists. On the player side, the game uses neither, and BDS offers no STUN or TURN setting in \u003Ccode>server.properties\u003C\u002Fcode>.\u003C\u002Fp>\n\u003Cp>PowerNukkitX, on the other hand, lets you declare them (\u003Ccode>ice-servers\u003C\u002Fcode>), and by default queries two public STUN servers to discover its address as soon as a fixed \u003Ccode>udpPort\u003C\u002Fcode> is set. Mojang nevertheless advises against declaring STUN or TURN servers with HTTP signaling, because each one then has to be contacted before the answer goes back to the player, which delays the connection.\u003C\u002Fp>\n\u003Ch2>Frequently asked questions\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Why do my players get the Door error?\u003C\u002Fstrong>\u003Cbr>The NetherNet connection failed. Check that the server runs 26.60 or newer, that the transport is set to \u003Ccode>nethernet\u003C\u002Fcode> and that the server has been restarted. On a VPS, also check that the server port is reachable over TCP and the gameplay ports over UDP.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why do my players have to accept the trust prompt after every restart?\u003C\u002Fstrong>\u003Cbr>On a VPS, BDS generates a new key at every start as long as none is saved. Type \u003Ccode>serveridentity save\u003C\u002Fcode> in the BDS console, then check with \u003Ccode>serveridentity status\u003C\u002Fcode>. On our game servers, the key is kept automatically.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What happens if BDS stays on RakNet?\u003C\u002Fstrong>\u003Cbr>Since 26.60, BDS shows an error when it does not use NetherNet. On our game servers, set the \u003Cstrong>Transport\u003C\u002Fstrong> variable back to \u003Ccode>nethernet\u003C\u002Fcode>. On a VPS, replace \u003Ccode>transport=raknet\u003C\u002Fcode> with \u003Ccode>transport=nethernet\u003C\u002Fcode> in \u003Ccode>server.properties\u003C\u002Fcode>. Then restart the server.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Is RakNet going away?\u003C\u002Fstrong>\u003Cbr>RakNet has been deprecated since 26.60, but Mojang has announced no removal date. Switching to NetherNet now keeps you from being caught off guard.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Can my PocketMine-MP server accept 26.60 players?\u003C\u002Fstrong>\u003Cbr>No, official PocketMine-MP does not support NetherNet. Switch your server to Altay.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Do I need an NXS provider such as Warden?\u003C\u002Fstrong>\u003Cbr>No. BDS, PowerNukkitX, Altay, Geyser and WaterdogPE all use their built-in signaling by default. Only Geyser, as a plugin or mod, switches to Warden on its own when its port is already used by the Java server.\u003C\u002Fp>\n\u003Cp>If your server is still unreachable after these checks, open a ticket with the \u003Cstrong>Technical\u003C\u002Fstrong> department from your client area at \u003Ca href=\"https:\u002F\u002Fbilling.winheberg.com\">billing.winheberg.com\u003C\u002Fa>, select your server in the \u003Cstrong>Related Product\u003C\u002Fstrong> field, and attach a console excerpt.\u003C\u002Fp>\n\u003Cp>Sources, the official \u003Ca href=\"https:\u002F\u002Fwww.minecraft.net\u002Fen-us\u002Farticle\u002Fminecraft--bedrock-edition-26-60-changelog\">Minecraft Bedrock 26.60\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fwww.minecraft.net\u002Fen-us\u002Farticle\u002Fminecraft--bedrock-edition-26-50-changelog\">26.50\u003C\u002Fa> changelogs, \u003Ca href=\"https:\u002F\u002Fmojang.github.io\u002Fbedrock-protocol-docs\u002Fguides\u002Fnether-net-onboarding-guide\u002F\">Mojang&#39;s NetherNet guide\u003C\u002Fa>, the documentation shipped with Bedrock Dedicated Server, the \u003Ca href=\"https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fminecraft\u002Fcreator\u002Fdocuments\u002Fbedrockserver\u002Fserver-properties\">Microsoft Learn server.properties page\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ffacebookarchive\u002FRakNet\">RakNet repository\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FPowerNukkitX\u002FPowerNukkitX\u002Freleases\u002Ftag\u002F3.0.6\">PowerNukkitX 3.0.6 release\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Faltayofficial\u002FAltay\u002Freleases\">Altay releases\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fpmmp\u002FPocketMine-MP\">PocketMine-MP repository\u003C\u002Fa>, the \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGeyserMC\u002FGeyser\">Geyser\u003C\u002Fa> and \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FWaterdogPE\u002FWaterdogPE\">WaterdogPE\u003C\u002Fa> repositories, and the \u003Ca href=\"https:\u002F\u002Fwarden.cloud\">Warden\u003C\u002Fa> website.\u003C\u002Fp>\n\u003Cp>Enjoy the switch to NetherNet 🎮\u003C\u002Fp>\n",1793495088813]