Run a Tailscale Exit Node inside a Docker container using userspace networking. This is designed for environments where /dev/net/tun is unavailable, such as Railway, Render, Fly.io, and other container-based platforms.
- Runs Tailscale in Docker
- Uses userspace networking (
--tun=userspace-networking) - Advertises itself as a Tailscale Exit Node
- Supports custom hostname configuration
- Supports additional Tailscale arguments
- Graceful shutdown handling
- Docker
- A Tailscale account
- Reusable Tailscale Auth Key
Generate an auth key from:
https://login.tailscale.com/admin/settings/keys
| Variable | Required | Description |
|---|---|---|
TS_AUTHKEY |
Yes | Tailscale authentication key |
TS_HOSTNAME |
No | Hostname shown in Tailscale (default: railway-exit-node) |
TS_EXTRA_ARGS |
No | Additional arguments passed to tailscale up |
TS_AUTHKEY=tskey-auth-xxxxxxxxxxxxxxxx
TS_HOSTNAME=my-exit-nodedocker build -t tailscale-exit-node .docker run -d \
--name tailscale-exit-node \
-e TS_AUTHKEY="tskey-auth-xxxxxxxxxxxxxxxx" \
-e TS_HOSTNAME="my-exit-node" \
tailscale-exit-nodeversion: "3.8"
services:
tailscale:
build: .
container_name: tailscale-exit-node
environment:
TS_AUTHKEY: tskey-auth-xxxxxxxxxxxxxxxx
TS_HOSTNAME: my-exit-node
restart: unless-stoppedStart:
docker compose up -dAfter the container starts, approve the Exit Node in the Tailscale Admin Console:
https://login.tailscale.com/admin/machines
- Open Machines
- Locate the new node
- Enable Use as Exit Node
- Save changes
On any connected Tailscale device:
tailscale up --exit-node=<node-ip>tailscale set --exit-node=<node-ip>tailscale set --exit-node=<node-ip>Or select the Exit Node from the Tailscale application UI.
View container logs:
docker logs -f tailscale-exit-nodeView Tailscale status:
docker exec tailscale-exit-node tailscale statusThe container:
- Starts
tailscaled - Uses userspace networking mode
- Authenticates with Tailscale using
TS_AUTHKEY - Advertises itself as an Exit Node
- Waits indefinitely while maintaining the Tailscale connection
- Store your auth key securely.
- Use reusable auth keys only when necessary.
- Rotate auth keys periodically.
- Restrict access to approved Tailscale users and devices.
MIT License