Skip to main content

VPN

For the Caddy add-on (Core uses Tailscale: Getting Started). On your network the <lan-ip-with-dashes>.nip.io names already work. A VPN gets a phone or laptop back onto that network from elsewhere, without exposing any service. Any VPN works.

Options​

What it isWho runs the coordinationLicense
WireGuardA kernel-level tunnel; one config file per peerYouGPL-2.0
OpenVPNThe long-standing TLS-based VPN; runs on almost anythingYouGPL-2.0
HeadscaleA self-hosted coordination server for the Tailscale clientsYouBSD-3
TailscaleA WireGuard mesh with clients for every platformTailscale's hosted serviceBSD-3 (clients)

Without a VPN: local DNS​

If the devices that matter are on your network anyway, a piHole on another server can answer the whole domain locally — one wildcard record — so names resolve with the internet unplugged. That is name resolution, not reachability: it does not reach the stack from outside the house.

If you use Tailscale​

When a tailnet address is up, the first run prefers it over the LAN one, so <tailnet-ip-with-dashes>.nip.io reaches the stack from every device on your tailnet. Don't set EXIST_DOMAIN to a MagicDNS name (<node>.ts.net): MagicDNS answers exact node names only, so every <slug>. under it fails to resolve. See Hostnames that just work.