Headscale & Tailscale: Einrichtung und Nutzung im privaten Netzwerk
Motivation
Tailscale bietet eine einfache Möglichkeit, Geräte über ein Peer-to-Peer-VPN sicher miteinander zu verbinden – selbst hinter NAT oder CG-NAT. Für mehr Kontrolle und Datenschutz wurde in diesem Setup auf Headscale gesetzt, einer selbst gehosteten Open-Source-Implementierung des Tailscale-Control-Servers.
Vorteile:
- Zugriff auf entfernte Geräte ohne Portweiterleitungen oder dynamische DNS-Dienste
- Sichere Kommunikation zwischen Netzwerken (z. B. Wohnung & Gartenhaus)
- Integration selbst gehosteter Dienste (z. B. Vaultwarden, Home Assistant)
Übersicht des Netzwerks
Gerät | Hostname | IP im Tailnet | Erreichbarkeit | Besonderheiten |
---|---|---|---|---|
Headscale VPS | headscale |
Public IP | Öffentlich (Hetzner) | Selbst gehosteter Control-Server |
Home Assistant (Zuhause) | heim-ha |
100.64.0.7 |
über Add-on | Add-on mit Web-Auth verbunden |
Home Assistant (Garten) | garten-ha |
100.64.0.8 |
über Add-on | Add-on mit Web-Auth verbunden |
BirdnetPi | birdnet |
100.64.0.10 |
Direkt mit SSH | Tailscale CLI auf Alpine Linux, Subnet Routing aktiviert |
Vaultwarden | vaultwarden |
100.64.0.11 |
Caddy Reverse Proxy | Zugriff via TLS mit interner Domain |
Lernziele & Learnings
- Tailscale kann auf Home Assistant via Add-on verwendet werden, aber das CLI steht dort nicht zur Verfügung.
- Headscale funktioniert problemlos als Login-Server für Tailscale-Clients.
- WebAuth ist einem Auth-Key vorzuziehen, wenn man Geräte sicher und kontrolliert einbinden will.
- Dienste wie Vaultwarden benötigen einen Reverse Proxy (Caddy) mit interner TLS-Konfiguration (
tls internal
) im Tailscale-Netzwerk. - Geräte mit direktem SSH-Zugang (wie BirdNET-Pi) können flexibel für Subnet-Routing oder Netzwerkdiagnose eingesetzt werden.
Schrittweise Anleitung
1. Headscale Server einrichten (Hetzner VPS)
sudo apt install headscale
sudo headscale users create <USER>
sudo headscale preauthkeys create --reusable --ephemeral --user <USER> --output json
2. Auf einem Client (z. B. BirdnetPi) Tailscale installieren
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up --login-server=https://headscale.DOMAIN.tld
3. Geräte benennen (optional via Headscale CLI)
headscale nodes rename --identifier <ID> <neuer-name>
4. Dienste verfügbar machen
Beispiel: Vaultwarden über Caddy reverse-proxien
Caddyfile: