Een mesh-VPN is zo'n tool die alles stilletjes makkelijker maakt: je laptop, thuisserver, telefoon en VPS'en zien elkaar op privéadressen, waar ze ook zijn. Het nadeel van gehoste mesh-VPN's is de coördinatieserver: een bedrijf beheert de kaart van elk apparaat dat je hebt. Headscale is een open-source vervanger voor die controlserver. Draai hem op een kleine VPS, blijf de gewone client-apps gebruiken, en de kaart is van jou.
Hoe het in elkaar grijpt
- Headscale (op je VPS) deelt adressen uit, verspreidt publieke sleutels en handhaaft je ACL's.
- Clients zijn de standaard Tailscale-apps, gericht op jouw server.
- Verkeer gaat van apparaat naar apparaat via WireGuard. De controlserver vervoert het nooit.
Dat laatste punt is waarom een piepklein plan volstaat: de VPS beantwoordt alleen kleine coördinatieverzoeken.
Wat je nodig hebt
- Nano-IP ($8/mnd): 2 vCPU en 1 GB RAM is veel meer dan Headscale gebruikt.
- Een dedicated IPv4 en een domein, bijvoorbeeld
hs.example.com. Apparaten praten via HTTPS met de controlserver, dus de VPS moet inkomend 443 accepteren; NAT-plannen doen dat niet (details).
Installeren (Debian 12 / Ubuntu 24.04)
Haal de actuele .deb van de releasepagina van Headscale op GitHub en vervang de versie door de nieuwste:
HS_VER=0.26.1
wget -O headscale.deb \
"https://github.com/juanfont/headscale/releases/download/v${HS_VER}/headscale_${HS_VER}_linux_amd64.deb"
apt install -y ./headscale.deb caddy
Bewerk /etc/headscale/config.yaml; de twee regels die ertoe doen:
server_url: https://hs.example.com
listen_addr: 127.0.0.1:8080
Zet Caddy ervoor voor HTTPS:
cat > /etc/caddy/Caddyfile <<'EOF'
hs.example.com {
reverse_proxy 127.0.0.1:8080
}
EOF
systemctl enable --now headscale
systemctl reload caddy
Een gebruiker en een apparaat toevoegen
headscale users create alice
headscale users list # note the user's ID
headscale preauthkeys create --user 1 --expiration 24h
Oudere releases verwachten bij --user de gebruikersnaam in plaats van het ID; headscale preauthkeys create --help vertelt je wat jouw versie verwacht.
Op een Linux-apparaat:
tailscale up --login-server https://hs.example.com --authkey YOUR_KEY
Op telefoons en desktops kun je in de instellingen van de Tailscale-app een eigen controlserver opgeven. Draai headscale nodes list op de VPS en je apparaat zou erbij moeten staan.
Relays en NAT-traversal
De meeste apparaten maken rechtstreeks verbinding. Als twee dat niet lukt (strenge mobiele netwerken, dubbele NAT), gaat het verkeer via een DERP-relay. Standaard gebruikt Headscale de publieke relays van Tailscale, die alleen versleutelde pakketten zien. Wil je niets externs op het pad, zet dan de ingebouwde relay aan in config.yaml (derp.server.enabled: true) en open UDP 3478. Het doorgestuurde verkeer telt dan mee voor de bandbreedte van je VPS.
Eerlijke beperkingen
Er is geen officieel webdashboard: gebruikers, sleutels en routes zijn CLI-commando's (prima zodra je het twee keer hebt gedaan). Nieuwere functies van de gehoste dienst verschijnen later in Headscale, als ze al komen. En de controlserver is nu jouw verantwoordelijkheid: ligt hij eruit, dan blijven bestaande verbindingen werken, maar kunnen nieuwe apparaten niet toetreden en worden sleutels niet vernieuwd. Maak er back-ups van: de hele status staat in /var/lib/headscale.
Voor een homelab, een gezin of een klein team dat de kaart van zijn apparaten van servers van derden af wil halen, is het een van de beste toepassingen van een VPS van $8.
Gerelateerd
- Zelf een WireGuard-VPN hosten: gewoon WireGuard, als je maar één tunnel nodig hebt
- VPS voor een VPN
- VPS voor externe toegang tot Home Assistant
Reacties
Nog geen reacties. Wees de eerste.