What the official pages ask of the hardware
Mojang publishes three different hardware figures, each with its own scope. The download page's system requirements are the highest; its FAQ gives a lower minimum for small servers, and the how-to inside the zip recommends a similarly modest machine.
| Source | CPU | Memory | Disk / OS |
|---|---|---|---|
| Download page, system requirements | Intel Core i3 3210 or AMD A8 7600 APU or equivalent | 4 GB | 180 MB to 1 GB; Ubuntu 22.04 LTS or later |
| Download page, FAQ | x86-64 (Intel or AMD) | at least 1 GB for small servers | 64-bit Windows or Ubuntu |
| bedrock_server_how_to.html | x86-64, 2 cores or more | 1 GB | names Ubuntu 18; the download page is newer |
The download page is explicit that other Linux distributions are not supported, so the install below targets Ubuntu. Load grows with max-players (default 10), view-distance (default 32) and tick-distance (default 4, range 4 to 12); the how-to warns that higher values of each have a performance impact. max-threads defaults to 8; 0 lets the server use as many threads as it can.
Bedrock edition, not the Java server
BDS serves Bedrock clients. The download page lists Windows PCs, Xbox and PlayStation consoles, mobile devices and Nintendo Switch and Switch 2, all joining by the same address and port. It is a native binary, so there is no JVM heap to size and no Paper plugin jar to drop in. If your players are on the Java edition, the Minecraft Java server page covers server.jar, Java 25 and Paper instead.
Remote players always authenticate with Xbox Live, whatever online-mode says; the how-to recommends keeping online-mode=true on any server that accepts connections from the Internet. Client and server versions must match: Microsoft Learn notes that a mismatch shows as Outdated Client or Outdated Server.
Ports: nethernet against raknet
The current release (1.26.52.3, checked on 23 October 2026) ships transport=nethernet, and that changes which protocol 19132 carries. The how-to in the zip describes both modes:
| transport | What listens | Open on the firewall |
|---|---|---|
| nethernet (shipped default) | one dual-stack TCP socket on server-port for the handshake, then a UDP connection per client; server-portv6 is ignored | TCP 19132, plus the UDP range you pin with server-udp-ports |
| raknet (the classic Bedrock transport) | UDP on server-port for IPv4 and server-portv6 for IPv6 | UDP 19132 and UDP 19133 |
Without server-udp-ports, nethernet draws its UDP ports from the operating system's ephemeral range, which the how-to says is not always suitable for a server behind a firewall or NAT. Pin a range, or switch to raknet and open UDP 19132 and 19133, the server-port and server-portv6 that Microsoft Learn's firewall section names.
Installing it on Ubuntu
- On minecraft.net/download/server/bedrock, read the Minecraft EULA and Privacy Policy, tick the consent box, and download the Ubuntu (Linux) zip, not the Preview build.
- Enable ufw, permitting SSH, ahead of starting any listener, then add a system account for BDS so it holds no root rights.
- Copy the zip to the server with scp and unzip it into the empty home folder as that user.
- Edit
server.propertiesand open the ports for your transport (next section), then start it inside tmux so the console stays reachable.
# on the server, as your own sudo user
sudo apt update && sudo apt install -y unzip tmux
sudo ufw allow OpenSSH && sudo ufw enable
sudo adduser --system --group --shell /bin/bash --home /opt/bedrock bedrock
# on your own computer, after downloading the Ubuntu (Linux) zip
scp bedrock-server-*.zip you@your-server:/tmp/
# back on the server
sudo -u bedrock bash -c 'cd /opt/bedrock && unzip -q /tmp/bedrock-server-*.zip'
The how-to also says that if the server crashes it automatically sends Mojang information to help fix it. That is worth knowing before you put it on a box that holds anything else.
server.properties, the firewall and first start
Keys and values are separated by an equals sign, one per line; some are read only when a world is created. The excerpt keeps the shipped defaults that matter for access, pins a UDP range (the range is the how-to's own example) and turns off LAN discovery, which a data-centre box does not need.
# /opt/bedrock/server.properties (excerpt)
server-name=Our Bedrock World
online-mode=true
allow-list=true
default-player-permission-level=member
transport=nethernet
server-port=19132
server-udp-ports=49152-49200
enable-lan-visibility=false
# firewall for transport=nethernet
sudo ufw allow 19132/tcp
sudo ufw allow 49152:49200/udp
# or, with transport=raknet instead
# sudo ufw allow 19132/udp && sudo ufw allow 19133/udp
# start it; Ctrl-b then d leaves it running
sudo -u bedrock -H tmux new-session -d -s bds -c /opt/bedrock 'LD_LIBRARY_PATH=. ./bedrock_server'
sudo -u bedrock -H tmux attach -t bds
The first start creates worlds/ with a folder named after level-name (default Bedrock level). To bring an existing world, Microsoft Learn says to start the server once, copy the world folder into worlds/, and set level-name to the folder name exactly, letter case included.
Allowlist, permissions and operators
- Allowlist. With
allow-list=trueonly gamertags inallowlist.jsonconnect. At the console,allowlist add "Gamer Tag"(quotes when the tag has a space) andallowlist remove; the XUID fills in on the player's first connection. Edit the file by hand and the server needsallowlist reload.allowlist onandoffdo not change server.properties. - Permissions.
permissions.jsonbeside the binary maps XUIDs tooperator,memberorvisitor;permission reloadafter editing,permission listto check. It needsonline-mode=true, because XUIDs come from Xbox Live sign-in. Anyone not listed getsdefault-player-permission-level. - Operators.
opwith a gamertag promotes and, for a player signed in to Xbox Live, writes permissions.json;deopdemotes to member.changesettingaltersallow-cheatsordifficultylive without touching server.properties.
Microsoft Learn's property reference still lists allow-list as false by default. The server.properties shipped in the current zip sets it to true, so a fresh server admits nobody until you add them.
Backups, updates and the server identity
Do this before the first backup. Without a saved key, the server generates a new identity at every start and players must accept server trust again. Run serveridentity save at the console once, or place your own unencrypted P-384 key at keys/server_identity_key.pem; either way keys/ then exists, and the backup below includes it (tar stops with an error if it is missing).
The simplest safe backup stops the server, archives the world with the files that define who may join, and starts it again. For backups without stopping, the how-to's sequence is save hold, then save query until it returns a file list with lengths, copy exactly those files truncated to those lengths, then save resume.
sudo -u bedrock -H tmux send-keys -t bds 'stop' Enter
while sudo -u bedrock -H tmux has-session -t bds 2>/dev/null; do sleep 2; done
sudo tar -czf /root/bedrock-$(date +%F).tar.gz -C /opt/bedrock worlds keys server.properties allowlist.json permissions.json
sudo -u bedrock -H tmux new-session -d -s bds -c /opt/bedrock 'LD_LIBRARY_PATH=. ./bedrock_server'
Copy the archive off the machine as well. To update, download the new zip the same way, unzip it into a fresh folder, and carry over worlds/, keys/, server.properties, allowlist.json and permissions.json; our advice is to diff your server.properties against the new one rather than overwrite it, because new releases add keys. Players' clients must be on the matching version.
Which of our machines fits
BDS needs x86-64 (Intel or AMD) and Ubuntu, and our game server hosting on bare metal is exactly that: HPE enterprise hardware, configurations you choose, any operating system. On our Linux servers Ubuntu installs in one click, up to 26.04 on the widest lines. The ARM lines are out: they cannot run an x86-64 binary.
A whole machine means the world's tick has no neighbour's workload competing for the cores, and the port is unmetered, so a busy evening does not run into a transfer allowance. Choose the city with the shortest path to most of your players: our five data centres in New York, Miami, San Francisco, Amsterdam and Bucharest each publish a test IP to ping first. All of them sit on AS19624, our own network. Rack servers and blades carry an out-of-band console, so a bad firewall rule is fixable without a ticket. A racked machine is live about 30 minutes after the order is approved; the full range is priced on the order form.
If four friends play on one home network, a spare PC running BDS is enough. A rented machine pays off when the world must stay up while your own computer is off, and when players join from several places.
Questions
Which ports does a Bedrock server need open?
With the shipped transport=nethernet, TCP 19132 for the handshake plus the UDP range you set in server-udp-ports. With transport=raknet, UDP 19132 for IPv4 and UDP 19133 for IPv6. IPv4 clients connect to 19132 either way, unless you change server-port. Under raknet, IPv6 clients use 19133 (server-portv6). Under nethernet, one dual-stack socket on 19132 serves both.
Can console and phone players join a BDS world?
The download page says players on Windows PCs, Xbox and PlayStation, mobile devices and Nintendo Switch and Switch 2 can join, all by the same address and port. Java edition players cannot: that needs the Java server.
How much memory does a Bedrock server take?
The download page's requirements list 4 GB of RAM; its FAQ says at least 1 GB for small servers, and the bundled how-to recommends 2 cores and 1 GB. More players, a longer view distance and a larger tick distance all raise the load, so size from the requirements figure and watch it.
Why does my server refuse a player who is online?
The shipped server.properties has allow-list=true, so anyone not in allowlist.json is turned away. Add them with allowlist add at the console, or set allow-list=false if the server is meant to be open.
Does BDS run add-ons?
It has behavior_packs and resource_packs folders at the top level and inside each world. Microsoft Learn says packs inside a world's folder load only with that world. texturepack-required=true forces clients to use the world's packs.
How quickly is a machine ready?
A racked server is live about 30 minutes after the order is approved; a build to order takes 4 to 24 hours. The BDS install itself is a zip, an unzip and one command.