Run a Minecraft Bedrock Dedicated Server on your Android device using Termux and Debian (proot-distro).
- Overview
- Features
- Prerequisites
- Installation
- Running the Server
- Making Your Server Accessible
- Server Management
- Updating Your Server
- Accessing Files
- Installing Add-ons
- Configuration
- Troubleshooting
- Performance
- FAQ
- Contributing
- License
- Acknowledgments
BedrockServerTermux hosts a Minecraft Bedrock Edition server on Android without root access using:
- Termux — terminal emulator for Android
- proot-distro — runs a full Debian environment
- Box64 — ARM64 to x86_64 translation layer
- Playit.gg — tunneling service for internet access
- No root required
- Simple installation scripts
- Version selection — latest stable, preview, or any specific version
- Multiple server instances in separate folders
- One-command updates with automatic world backup
- Built-in tunneling via Playit.gg
- Android 7.0 or higher
- Minimum 2GB RAM (4GB+ recommended)
- 2GB+ free storage
- Termux from F-Droid — the Play Store version is outdated
- Stable internet connection
Open Termux and run:
apt update -y && apt upgrade -y
apt install wget -y
wget https://raw.githubusercontent.com/debojitsantra/BedrockServerTermux/refs/heads/main/setup_proot.sh
bash setup_proot.shAfter it finishes, log in to Debian:
pddor
proot-distro login debianInside the Debian session:
apt update -y && apt upgrade -y
apt install wget -y
wget https://raw.githubusercontent.com/debojitsantra/BedrockServerTermux/refs/heads/main/setup_env.sh
bash setup_env.shThe script will ask you to choose a version and install folder, then handle everything automatically — Box64, Playit, server download, and extraction.
Estimated time: 5–10 minutes depending on your connection.
You need two separate Termux sessions.
Session 1 — server:
pddcd ~
./runIf you have multiple server folders installed, run will list them and let you choose which one to start.
Session 2 — tunnel:
pddplayitAfter running playit, open the displayed URL in a browser, create a free Playit account, claim your tunnel, and share the public address with players.
Stop the server:
Type stop in the server session, or press Ctrl+C.
Available console commands:
stop— gracefully stop the serverlist— list connected playerskick <player>— kick a playerban <player>— ban a playersave— force save the world
Full command reference: Minecraft Wiki — Commands
cd ~
./update.shThe update script lets you choose the version and target folder, backs up your worlds automatically, then downloads and extracts the new server files.
Debian files are at:
/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/debian
To browse them from a file manager, create a symlink:
ln -s $PREFIX/var/lib/proot-distro/installed-rootfs/debian ~/debianThen navigate to:
/storage/emulated/0/Android/data/com.termux/files/home/debian
Requires a file manager with Storage Access Framework support (Material Files, Solid Explorer, MiXplorer).
Bedrock uses behavior packs and resource packs. Java mods (.jar) are not supported.
Step 1: Extract the pack
Rename .mcpack to .zip and extract it. The extracted folder must contain manifest.json at the root level.
Step 2: Place packs in server folders
server/
├── behavior_packs/
│ └── MyAddon_BP/
│ └── manifest.json
├── resource_packs/
│ └── MyAddon_RP/
│ └── manifest.json
Do not add extra subfolder levels.
Step 3: Find your world name
grep level-name ~/server/server.propertiesStep 4: Enable the behavior pack
nano ~/server/worlds/<level-name>/world_behavior_packs.json[
{
"pack_id": "UUID-FROM-BP-manifest",
"version": [1, 0, 0]
}
]Step 5: Enable the resource pack
nano ~/server/worlds/<level-name>/world_resource_packs.json[
{
"pack_id": "UUID-FROM-RP-manifest",
"version": [1, 0, 0]
}
]The BP and RP UUIDs are different — copy each from their respective manifest.json.
Step 6: Enable experimental features if required
Add to server.properties:
experimental-gameplay=true
Step 7: Restart the server
stop
./runIf the pack loaded correctly you'll see Pack Stack - <AddonName> in the logs. Pack Stack - None means wrong UUID or missing folder.
Edit server settings:
nano ~/server/server.propertiesKey options:
| Option | Description |
|---|---|
server-name |
Server display name |
gamemode |
survival, creative, adventure |
difficulty |
peaceful, easy, normal, hard |
max-players |
Player limit |
view-distance |
Render distance |
server-port |
Default 19132 |
Save with Ctrl+X, Y, Enter.
Manual world backup:
cd ~/server
tar -czf world_backup_$(date +%Y%m%d).tar.gz worlds/Server crashes immediately
- Make sure you're running
./runfrom~ - Check available RAM (close background apps)
- Verify Box64 is installed:
box64 --version - If running an older specific version, it may be incompatible with Box64 on ARM — use latest stable instead
Players can't connect
- Verify Playit is running in a separate session
- Check tunnel status at playit.gg
- Confirm the server shows "Server started" in logs
- Make sure you're sharing the correct Playit address
Installation fails
- Run
apt updatebefore retrying - Check internet connection and storage space
- Restart Termux and try again
- Confirm Termux is from F-Droid
Server is slow or laggy
- Lower
view-distanceto 4–6 inserver.properties - Lower
max-players - Close background apps
- Reduce
max-threadsaccording to your device(try 5-6) - Keep device plugged in
Termux closes unexpectedly
- Run
termux-wake-lockin Termux - Disable battery optimization for Termux
- Enable "Don't kill my app" for Termux in device settings
If the issue isn't listed here, search existing issues or open a new one with your Android version, device model, RAM, and the full error output.
| RAM | Players | View distance |
|---|---|---|
| 2–3GB | 1–2 | 4–6 |
| 4–6GB | 2–5 | 6–8 |
| 8GB+ | 5–10 | 8–10 |
The server runs through Box64 (x86_64 → ARM64 translation), so CPU usage will be higher than native and some lag is expected compared to PC hosting.
Do I need root? No.
Can I run multiple server versions?
Yes. The setup and update scripts let you install each version into a separate folder. ./run lists all available servers at startup.
Is my world data safe during updates? The update script backs up your worlds before extracting new files.
Can I run this 24/7?
Yes, keep the device plugged in, disable battery optimization for Termux, and use termux-wake-lock.
Can I use plugins? Behavior packs and resource packs are supported. Java plugins (Bukkit/Spigot) are not.
Can I play on the same device?
Yes, connect using localhost:19132, but performance will be affected.
Does this work on tablets? Yes, any ARM64 Android device works.
How much data does hosting use? Roughly 50–200 MB per hour with active players.
- Fork the repository
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m 'Add your feature' - Push to the branch:
git push origin feature/your-feature - Open a pull request
Bug reports and documentation improvements are also welcome.
GPL-3.0 — see the LICENSE file for details.