Setup Guide
Install the app, deploy the Docker relay on your home network, and optionally expose it externally with Cloudflare Tunnel for monitoring from anywhere.
Any machine on your LAN
One-time purchase
Download Labby from Google Play or open the web app at app.labbyapp.com. No account needed — just install and go.
The free tier gives you 2 service monitors. To use the Docker relay, Wake-on-LAN, and unlimited monitors, upgrade to Pro (one-time £3.99 purchase).
If you just want to monitor services on your local network, you can skip steps 2–3 and jump straight to adding services in the app.
Run this single command on any Docker host on your home network:
docker run -d \ --name labby-relay \ --restart unless-stopped \ --network host \ -e RELAY_KEY=your-secret-key \ miguelmolez/labby-relay:latest
Replace your-secret-key with a strong, unique passphrase. This key authenticates the app to your relay — keep it secret. You'll enter the same key in the app later.
The relay listens on port 9120 by default and runs in host networking mode so it can reach all services on your LAN and send Wake-on-LAN packets.
http://<your-host-ip>:9120/health in a browser — you should see a JSON response with "status":"ok".To monitor your lab from outside your home network without port forwarding, use Cloudflare Tunnel (free). This creates a secure outbound connection from your network to Cloudflare's edge — no open ports, no dynamic DNS.
Prerequisite: You need a domain added to your Cloudflare account (free plan is fine). If you don't have one, you can register one directly in the Cloudflare dashboard.
3a. Create the tunnel in Cloudflare
one.dash.cloudflare.comlabby-relay) and click Save tunneleyJ.... Copy this token.relay Domain: select your domain (e.g. yourdomain.com)
HTTP URL: localhost:9120
relay.yourdomain.com.3b. Create the Docker Compose file
Create a docker-compose.yml that runs both the Labby relay and (optionally) the Cloudflare tunnel connector:
# docker-compose.yml services: labby-relay: image: miguelmolez/labby-relay:latest restart: unless-stopped network_mode: host environment: - RELAY_KEY=your-secret-key cloudflared: image: cloudflare/cloudflared:latest restart: unless-stopped network_mode: host command: tunnel --no-autoupdate run environment: - TUNNEL_TOKEN=${TUNNEL_TOKEN} profiles: - tunnel
3c. Add your tunnel token
Create a .env file in the same directory as your docker-compose.yml. Paste the token you copied from the Cloudflare dashboard:
# .env TUNNEL_TOKEN=eyJh...your-token-here
Don't commit the .env file to version control — it contains your tunnel secret. Add it to .gitignore if you're using git.
3d. Start everything
Run both the relay and tunnel together:
docker compose --profile tunnel up -d
The --profile tunnel flag tells Docker Compose to also start the cloudflared container. If you run docker compose up -d without it, only the relay starts — handy if you only need local access.
Check both containers are running:
docker ps # You should see both labby-relay and cloudflared running
https://relay.yourdomain.com/health in your browser — you should see {"status":"ok"}. If DNS hasn't propagated yet, wait a minute and try again.Open Labby and connect it to the relay you just deployed:
Local URL: Use http://<host-ip>:9120 when on your home WiFi.
Tunnel URL: Use https://relay.yourdomain.com when away from home.
The app will automatically use the relay for health checks when you're not on your local network.
Tap the + button to add your first service. Enter the URL or IP address, choose an icon and colour, and hit save. Labby will start checking it immediately.
When you're away from home, health checks route through the relay automatically — your services stay monitored from anywhere.
Wake-on-LAN: For machines you want to power on remotely, add the MAC address in the service settings. You can then wake them with a single tap, even when away (the relay sends the magic packet on your behalf).
Troubleshooting
Check the relay container is running with docker ps. View logs with docker logs labby-relay. Make sure nothing else is using port 9120 on the host.
Verify the tunnel container is running (docker ps) and check its logs. Confirm the hostname is configured correctly in Cloudflare Zero Trust and that DNS has propagated for your domain.
Double-check the relay URL and secret key match exactly — no trailing spaces or slashes. Make sure your phone can reach the relay (same network for local, or tunnel/VPN for remote).
Yes! Any method that lets your device reach port 9120 on the relay host will work. Tailscale, WireGuard, ZeroTier, plain VPN — just enter the appropriate URL in the app.
Yes. The Docker relay is a Pro feature. Upgrade once for £3.99 — it's a lifetime purchase with no subscription.
Yes. Set the RELAY_PORT environment variable in your docker run command (e.g. -e RELAY_PORT=8080). Remember to update the tunnel config and app URL to match.
Deploy the relay, connect the app, and never miss downtime again.