This Docker Compose configuration sets up a Minecraft Bedrock Edition server with Tailscale as a sidecar container, enabling private multiplayer access over your Tailnet. No port forwarding or public IP required — only players on your Tailscale network can connect.
Minecraft Bedrock Edition is the cross-platform variant that runs on Windows 10/11, mobile, and consoles. This configuration uses the itzg/minecraft-bedrock-server Docker image. For the Java Edition server (TCP 25565, plugin/mod support), see services/minecraft.
Bedrock uses raw UDP on port 19132. Tailscale Serve and Funnel only proxy HTTPS, so neither is used here — there is no serve.json block in the compose file. The Bedrock server listens directly on the Tailscale interface and players connect at the Tailnet IP or MagicDNS hostname of the node.
The tailscale-minecraft-bedrock service runs the Tailscale client to join your Tailnet. The application service uses network_mode: service:tailscale, so the Bedrock server's UDP 19132 binds inside the Tailscale container's network namespace and is reachable from Tailnet peers only.
-
Clone the repository and navigate to the service directory:
git clone https://github.com/tailscale-dev/ScaleTail.git cd ScaleTail/services/minecraft-bedrock -
Edit
.env:- Paste your Tailscale auth key into
TS_AUTHKEY=. - Set
EULA=TRUEto accept the Mojang EULA. The server will not start until you do. - (Optional) Adjust
SERVER_NAME,GAMEMODE,DIFFICULTY,MAX_PLAYERS, etc.
- Paste your Tailscale auth key into
-
(OPTIONAL) Pre-create the data directories so Docker does not create them as
root:mkdir -p minecraft-bedrock-data ts/state
-
Start the stack:
docker compose up -d
-
Find your Tailnet name in the Tailscale admin console.
Bedrock clients (Windows / mobile / console) cannot enter a custom port through the in-game Quick Server interface on every platform. Two options:
- Add Server (Bedrock 1.16+): Servers tab → Add Server. Enter the Tailnet IP or
minecraft-bedrock.<tailnet-name>.ts.netand port19132. - Direct Connect: enter the address and port at the connect prompt where supported.
Notes:
- All players must be on the same Tailnet (or have been shared access to the node).
ONLINE_MODE=falseallows clients without an Xbox Live account but reduces security — use only on trusted networks.
Attach to the running container for in-server commands (/op, /stop, /save, etc.):
docker attach app-minecraft-bedrockDetach without stopping the server: Ctrl-p Ctrl-q.
| Variable | Default | Description |
|---|---|---|
TS_AUTHKEY |
(empty) | Tailscale auth key from the admin console |
EULA |
FALSE |
Must be TRUE to accept Mojang's EULA before the server will start |
VERSION |
LATEST |
Bedrock version: LATEST or a pinned version like 1.21.50 |
SERVER_NAME |
A Minecraft Bedrock Server on Tailscale |
Name shown in the Bedrock server list |
GAMEMODE |
survival |
survival, creative, or adventure |
DIFFICULTY |
normal |
peaceful, easy, normal, or hard |
LEVEL_NAME |
Bedrock level |
World name (also the directory name on disk) |
MAX_PLAYERS |
10 |
Maximum concurrent players |
ONLINE_MODE |
true |
Require Xbox Live accounts (set false for offline play) |