Networking · Remote management

Tailnet Control Panel

A self-hosted dashboard giving authorised engineers direct access to remote-site devices, without relying on a Windows PC and paid remote-access seats. Site information, device status and web-interface links are brought together in one place.

Node.js / React / Raspberry Pi / Tailscale / ZeroTier

Replacing a fragile remote-PC workflow

Engineers previously had to open third-party remote-access software, connect to a Windows PC at the pub, then find the information and tools needed to reach the site's equipment. That approach required paid remote-access seats and depended on the PC being online. Even with power-saving disabled and automatic restart after a power cut, those PCs occasionally became unavailable.

A more reliable gateway in practice

In these deployments, the Raspberry Pi proved more reliable as an always-on gateway. Authorised engineers could reach the equipment through the private network without first opening a remote desktop session. This removed the dependency on a Windows PC for device access and avoided the paid remote-access seats used by the previous workflow.

Site knowledge alongside the controls

The dashboard brings site information, equipment details such as Sky box counts, and device status together with links to the devices' web interfaces. Engineers can go straight to the equipment they need instead of relying on a remote PC having been manually set up with current information about the pub.

The problem: different sites, identical addresses

Many remote sites already use the same LAN range, such as 192.168.0.0/24. Those overlapping addresses make it difficult to distinguish devices across sites through ordinary subnet routing. Each site is assigned a number, and a Raspberry Pi maps its existing LAN onto a unique virtual subnet.

A virtual subnet for each site

For example, site 42 uses 172.30.42.0/24. iptables NETMAP rules translate traffic between the virtual subnet and the real LAN. DNSMasq supplies memorable device names, while the Pi advertises the virtual route through Tailscale. The diagram below uses illustrative addresses, not a client configuration.

One dashboard for day-to-day access

The Node.js, Express and React dashboard brings together device links, direct virtual-IP access and Pi online/offline monitoring. It also provides SSH maintenance, remote network scanning and controls for supported Sky devices. Site configuration lives in JSON and reloads automatically.

Supporting third-party tools

Tailscale is the primary remote-access network. ZeroTier is used for compatible CCTV and other third-party applications where their discovery or connectivity requirements are not met by the routed Tailscale setup. An optional allowlisted reverse proxy supports HTTP and WebSocket access.

Provisioning the Raspberry Pi

The companion Bash script installs and configures Tailscale and DNSMasq, enables IP forwarding, creates subnet mapping and firewall rules, persists those rules and advertises the site's virtual route. It also includes status, DNS-only and revert commands. Route approval remains an administrator step.

Deployment

The dashboard supports Docker deployment. It is intended to sit behind private network access or authentication; the optional proxy's allowed destinations are derived from the configured site domains. The stack combines Node.js, Express, React, Linux, SSH, Tailscale, ZeroTier, DNSMasq and iptables/NETMAP.

Two sites. The same local addresses. Separate virtual routes.
Site 42

Virtual network
172.30.42.0/24

↓ Raspberry Pi / NETMAP ↓

Existing local network
192.168.0.0/24

Site 43

Virtual network
172.30.43.0/24

↓ Raspberry Pi / NETMAP ↓

Existing local network
192.168.0.0/24

Tailscale carries traffic to each Pi. The site-specific virtual address selects the destination network.