Reaching Rocweb from anywhere with Tailscale Serve

Put Rocrail's web client behind proper HTTPS on your own private network, without opening a single port to the internet.

Rocweb over plain HTTP on the local network is fine while you are stood next to the layout. The moment you want it from elsewhere, the obvious approaches are all bad: port forwarding exposes an application with no authentication to the entire internet, and dynamic DNS plus a self-signed certificate produces browser warnings you will train yourself to click through.

Tailscale Serve gives you a real HTTPS URL, reachable only by your own devices, with no ports open to anybody.

What it does

Tailscale builds a private network between your devices. Every machine gets a stable address and a DNS name that works from any of your other devices, wherever they are.

tailscale serve adds HTTPS on top: it terminates TLS using a genuine, automatically renewed certificate for your machine’s tailnet name, and proxies to a local port. No certificate warnings, no manual renewal, and nothing listening on your router.

Setting it up

On the machine running Rocrail, with Tailscale already installed and logged in:

tailscale serve --bg 8088

Replace 8088 with whatever port your Rocrail web service actually uses — check it in Rocrail’s own settings rather than assuming, as it varies between installations.

Check what you have configured:

tailscale serve status

That reports the public-facing HTTPS URL and the local port it forwards to. The URL will look like https://your-machine.your-tailnet.ts.net/, and it works from any device signed into the same tailnet.

The --bg flag matters: without it, the command runs in the foreground and the mapping disappears when you close the terminal. With it, the configuration persists across reboots.

Prerequisites

Two things need to be enabled in the Tailscale admin console, and both are one-off:

  • MagicDNS, so the machine has a resolvable name
  • HTTPS certificates, so Tailscale can issue the certificate

Without those, tailscale serve will tell you what is missing.

Serve, not Funnel

Tailscale offers a second command, tailscale funnel, which does the same job but publishes to the entire internet.

Do not use Funnel for this. Rocweb has no meaningful authentication, and it is wired directly to something that moves physical objects. Serve keeps it to your own devices, which is exactly where it belongs.

Serve is private, Funnel is public

The two commands look almost identical and differ enormously in consequence. If you have typed funnel, run tailscale funnel status and turn it off.

Using it on a phone or tablet

Install the Tailscale app, sign into the same account, and open the HTTPS URL. Because the certificate is genuine, it just loads — which also means you can add it to the home screen and have it behave like an app.

Removing it

tailscale serve --https=443 off

Why this beats a VPN back to the house

A traditional VPN routes everything through home and needs a port open on the router. Tailscale connects your devices directly to each other, needs no inbound port, and only carries traffic for the machines you are actually talking to.

For getting at one web interface on one machine, it is a much smaller thing to set up and a much smaller thing to get wrong.

Where to go next

More on rocrail integration