ow to Host a Minecraft Bedrock Edition Server on a VPS

ow to Host a Minecraft Bedrock Edition Server on a VPS

Minecraft Bedrock Edition is the version that runs on mobile, console, and Windows 10/11 — the version your friends on phones and Nintendo Switches play. Unlike Java Edition (which requires a computer), Bedrock players often want to connect from mobile devices to a persistent server that’s always online. A VPS is the perfect host: 24/7 uptime, low latency, and full control over settings, addons, and whitelists.

This guide covers setting up an official Bedrock Dedicated Server (BDS) on Ubuntu VPS, configuring it for optimal performance, managing players and addons, and keeping the server running reliably around the clock.

Java Edition vs Bedrock Edition Servers

Bedrock Dedicated Server (BDS) Java Edition (Paper/Spigot)
Platforms supported Mobile, Console, Windows 10/11, VR PC (Java) only
Official server software ✅ Yes (Mojang BDS) ✅ Yes + community forks
Plugin ecosystem Addons (limited) Plugins (extensive)
Cross-play ✅ Xbox, PlayStation, Switch, Mobile ❌ Java only
RAM usage ~200–500 MB 1–4 GB
Linux server support ✅ Official ✅ Native

💡 VPS.DO Tip: Bedrock servers are lighter than Java servers. A 2 vCPU / 4 GB RAM VPS comfortably hosts 20–30 Bedrock players. View Plans →


Step 1: Prepare Your VPS

sudo apt update && sudo apt upgrade -y
sudo apt install unzip screen curl libcurl4 libssl3 -y

# Create a dedicated minecraft user
sudo useradd -m -s /bin/bash minecraft
sudo su - minecraft
mkdir ~/bedrock-server && cd ~/bedrock-server

Step 2: Download Bedrock Dedicated Server

# Check https://www.minecraft.net/en-us/download/server/bedrock for latest URL
# Replace the URL with the current Linux version

wget "https://minecraft.azureedge.net/bin-linux/bedrock-server-1.21.50.07.zip" \
  -O bedrock-server.zip

unzip bedrock-server.zip
rm bedrock-server.zip
chmod +x bedrock_server

Step 3: Configure the Server

nano server.properties
# Server name shown to players
server-name=My VPS Bedrock Server

# Game mode for new players
gamemode=survival

# Difficulty
difficulty=normal

# Allow cheats (op commands)
allow-cheats=false

# Maximum players
max-players=20

# Server port (default: 19132 UDP)
server-port=19132
server-portv6=19133

# Enable online mode (require Xbox account)
online-mode=true

# Whitelist mode (only listed players can join)
allow-list=false

# View distance (higher = more RAM/CPU)
view-distance=10

# Tick distance (affects performance)
tick-distance=4

# Level name (your world folder name)
level-name=Bedrock Level

# Level seed (leave blank for random)
level-seed=

# Enable compression
compression-enabled=true
compression-threshold=1

Step 4: Open Firewall Port

exit  # back to sudo user
sudo ufw allow 19132/udp
sudo ufw allow 19133/udp

Step 5: Start the Server

sudo su - minecraft
cd ~/bedrock-server

# Start in a screen session for persistent operation
screen -S bedrock
LD_LIBRARY_PATH=. ./bedrock_server

# The server starts — wait for "Server started" message
# Detach: Ctrl+A then D

Your server is now running. Connect from Minecraft Bedrock using your VPS IP and port 19132. ✅


Step 6: Systemd Service for Auto-Start

exit  # back to sudo user
sudo nano /etc/systemd/system/bedrock.service
[Unit]
Description=Minecraft Bedrock Server
After=network.target

[Service]
User=minecraft
WorkingDirectory=/home/minecraft/bedrock-server
ExecStart=/bin/bash -c 'LD_LIBRARY_PATH=. ./bedrock_server'
ExecStop=/bin/bash -c 'kill -SIGTERM $MAINPID'
Restart=on-failure
RestartSec=10
StandardInput=null

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable bedrock
sudo systemctl start bedrock
sudo systemctl status bedrock

Step 7: Player Management

Operator (admin) commands

# Attach to server console
sudo su - minecraft
screen -r bedrock

# In the server console:
op PlayerName          # Give player operator status
deop PlayerName        # Remove operator status
kick PlayerName        # Kick a player
ban PlayerName         # Ban a player
ban-ip 1.2.3.4         # Ban an IP address
pardon PlayerName      # Unban a player
list                   # Show online players

Whitelist management

# In server.properties, set: allow-list=true

# In server console:
allowlist add PlayerName    # Add player to whitelist
allowlist remove PlayerName # Remove from whitelist
allowlist list              # Show whitelist

Permission levels (permissions.json)

nano ~/bedrock-server/permissions.json
[
  {
    "permission": "operator",
    "xuid": "PLAYER_XUID_HERE"
  },
  {
    "permission": "member",
    "xuid": "ANOTHER_PLAYER_XUID"
  }
]

Step 8: Installing Behavior and Resource Packs (Addons)

Install a behavior pack

cd ~/bedrock-server

# Create pack directories
mkdir -p behavior_packs resource_packs

# Copy your .mcpack or .mcaddon files into the server
# Then extract them (mcpack files are zip archives)
cp /tmp/myaddon.mcaddon .
unzip myaddon.mcaddon -d addon_temp

# Move extracted content
mv addon_temp/*_BP behavior_packs/MyAddon_BP
mv addon_temp/*_RP resource_packs/MyAddon_RP

Register packs with the world

nano ~/bedrock-server/worlds/Bedrock\ Level/world_behavior_packs.json
[
  {
    "pack_id": "PACK_UUID_FROM_MANIFEST",
    "version": [1, 0, 0]
  }
]

Get the pack UUID from the manifest.json file inside the pack folder.


Step 9: Automated Backups

nano ~/backup-bedrock.sh
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/var/backups/bedrock"
WORLD_DIR="/home/minecraft/bedrock-server/worlds"
SERVER_DIR="/home/minecraft/bedrock-server"

mkdir -p $BACKUP_DIR

# Save the world first (send save command via screen)
# Note: BDS doesn't support automated saves easily via screen
# Use file-level backup when server is briefly stopped

# Backup world files
tar -czf $BACKUP_DIR/bedrock-world-$DATE.tar.gz $WORLD_DIR
tar -czf $BACKUP_DIR/bedrock-config-$DATE.tar.gz \
  $SERVER_DIR/server.properties \
  $SERVER_DIR/permissions.json \
  $SERVER_DIR/allowlist.json

# Clean up backups older than 14 days
find $BACKUP_DIR -name "*.tar.gz" -mtime +14 -delete

echo "Bedrock backup complete: $DATE"
chmod +x ~/backup-bedrock.sh
crontab -e
# 0 4 * * * /bin/bash /home/minecraft/backup-bedrock.sh

Step 10: Updating the Server

sudo su - minecraft
cd ~

# Stop the server
sudo systemctl stop bedrock

# Backup current version
cp -r bedrock-server bedrock-server-backup

# Download new version
wget "NEW_VERSION_URL" -O bedrock-server-new.zip
unzip bedrock-server-new.zip -d bedrock-server-new

# Copy new files (preserve config files)
rsync -av --exclude='server.properties' \
          --exclude='permissions.json' \
          --exclude='allowlist.json' \
          --exclude='worlds/' \
          bedrock-server-new/ bedrock-server/

# Restart server
sudo systemctl start bedrock

Performance Optimization

Tune server.properties for performance

# Lower these values to reduce CPU/RAM usage:
view-distance=8         # Default 10 — each chunk radius adds load
tick-distance=2         # Default 4 — minimum for reasonable gameplay
max-threads=4           # Match your vCPU count

# Disable features you don't need:
enable-lan-visibility=false   # Don't broadcast on LAN

Monitor resource usage

htop  # Look for the bedrock_server process
# Typical idle: 50-100 MB RAM, <5% CPU
# With 10 active players: 200-400 MB RAM, 20-60% CPU (single core)

Final Thoughts

A Bedrock server on a VPS is the best way to host a persistent world that your mobile, console, and Windows friends can all join simultaneously. The official BDS is lightweight, well-maintained, and runs stably on Ubuntu. A VPS.DO 4 GB RAM plan handles 20+ players comfortably with room for other services running alongside.

Fast • Reliable • Affordable VPS - DO It Now!

Get top VPS hosting with VPS.DO’s fast, low-cost plans. Try risk-free with our 7-day no-questions-asked refund and start today!