How to Set Up a Minecraft Bedrock Dedicated Server
Run an official Bedrock Dedicated Server on Linux so phone, console, and Windows 10 players can join a persistent world.

Bedrock Edition is the version on phones, consoles, and Windows. Mojang ships a free Linux Bedrock Dedicated Server (BDS) so those players can share one persistent world. This guide sets it up on a Linux VPS. (Playing on Java? See the vanilla Java setup guide instead.)
What's different about Bedrock
Two big things separate it from Java servers:
- It uses UDP port 19132, not TCP 25565.
- It is a native Linux binary (no Java needed), but it depends on modern C++ libraries, so use a current Ubuntu/Debian.
Install prerequisites
BDS needs unzip and up-to-date libraries:
sudo apt update
sudo apt install -y unzip curl libcurl4
Download the server
Get the latest Linux build from minecraft.net/en-us/download/server/bedrock. Copy the link (it updates with each version) and unzip it:
mkdir -p ~/bedrock && cd ~/bedrock
curl -L -A "Mozilla/5.0" -o bedrock-server.zip "<bedrock-linux-download-url>"
unzip bedrock-server.zip

Configure the world
Bedrock uses server.properties too, but with Bedrock-specific keys. The important ones:
server-name=My Bedrock World
gamemode=survival
difficulty=easy
allow-cheats=false
max-players=10
server-port=19132
server-portv6=19133
online-mode=true
Set online-mode=true to require real Xbox Live accounts (recommended). Tuning difficulty and rules works much like Java — see changing difficulty and game rules.
Start the server
BDS needs its own libraries on the load path, so launch it like this:
cd ~/bedrock
LD_LIBRARY_PATH=. ./bedrock_server
The console accepts commands directly. Type stop to shut down cleanly.
Open the UDP port
This is the number-one thing people forget — Bedrock is UDP:
sudo ufw allow 19132/udp
sudo ufw allow 19133/udp
Run it as a service
Wrap it so it survives reboots. Create /etc/systemd/system/bedrock.service:
[Unit]
Description=Minecraft Bedrock Dedicated Server
After=network.target
[Service]
User=minecraft
WorkingDirectory=/home/minecraft/bedrock
Environment=LD_LIBRARY_PATH=.
ExecStart=/home/minecraft/bedrock/bedrock_server
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now bedrock
Let players join
Players go to Play, then Servers, then Add Server, and enter your VPS IP and port 19132. Console players sometimes need a workaround (or a BedrockConnect setup) because consoles restrict custom servers. Want Java and Bedrock players together on one world instead? That is exactly what the Geyser crossplay guide covers. Don't forget to back up the world regularly.
Add-ons: behavior and resource packs
Bedrock's equivalent of mods is add-ons — behavior packs and resource packs. Unlike Java mods, many are lightweight and server-friendly. Place packs in the behavior_packs and resource_packs folders, then activate them per-world by editing worlds/<world>/world_behavior_packs.json and world_resource_packs.json with the pack UUID and version. This lets you add custom items, mobs, and mechanics without players installing anything beyond the automatic download on join.
Manage the console with screen
Running bedrock_server directly ties it to your SSH session. Use screen (or the systemd service above) so it survives disconnects and you can still issue commands:
screen -S bedrock
LD_LIBRARY_PATH=. ./bedrock_server
# detach: Ctrl+A then D | reattach: screen -r bedrock
From the console you can run op <player>, whitelist add <gamertag>, and stop. Managing operators and the allowlist works much like Java — see managing admins and whitelisting players.
Backups and updates
Bedrock worlds live in the worlds/ folder. To back one up safely, stop the server first (Bedrock has no save-off equivalent), then archive it:
# stop the server, then:
tar -czf ~/backups/bedrock-$(date +%F).tar.gz worlds
Updating is a manual swap: download the new server build, unzip it over your existing folder, and — importantly — keep your worlds, server.properties, permissions.json, and allowlist.json. Mojang releases frequent updates, and clients auto-update, so an out-of-date server will start rejecting players until you upgrade it. Our full backup and restore guide covers a proper retention routine.
Operators and useful console commands
Once the server is running, make yourself an operator so you can run commands. From the console (or as an existing op in-game):
op YourGamertag
gamerule showcoordinates true
gamerule keepinventory true
setworldspawn
Bedrock supports many of the same game rules as Java, set with the gamerule command — showcoordinates is a popular quality-of-life one since Bedrock hides coordinates by default. Difficulty is changed live too, and covered alongside Java in our difficulty and game rules guide. Keep your operator list short, just as you would on a Java server — an op can change anything about the world. With the server opped, whitelisted, and backed up, you have a solid, low-maintenance Bedrock world ready for phones, consoles, and Windows players to share.
FAQ
Do I need Java for a Bedrock server?
No. BDS is a native binary. You only need the C++ runtime libraries, which libcurl4 and a modern OS provide.
What port does Bedrock use?
UDP 19132 (and 19133 for IPv6). Make sure you open UDP, not TCP.
Can console players join a dedicated server?
Not always directly — Xbox and PlayStation restrict third-party servers. Tools like BedrockConnect exist, but support varies by platform.
Can Bedrock and Java players share a world?
Not with vanilla BDS. You need a Java server running the Geyser proxy — see our crossplay guide.
A Bedrock server is light, but a stable public world still benefits from a dedicated IP and steady bandwidth. Nxeon's game server hosting runs BDS cleanly with full root access.