−25%

op Windows bij jaarbetaling, tot 31/10. Naar de pakketten

EQVPS

VPS voor Headscale: eigen Tailscale-controlserver

Draai Headscale op een kleine VPS en houd de coördinatieserver van je mesh-VPN in eigen hand. Installatie, eerste gebruiker, apparaten koppelen en de beperkingen.

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

Dat laatste punt is waarom een piepklein plan volstaat: de VPS beantwoordt alleen kleine coördinatieverzoeken.

Wat je nodig hebt

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

Klaar om te implementeren? Betaal met crypto, geen KYC — live in ongeveer een minuut.

Nu implementeren →

FAQ

Wat ziet de Headscale-server eigenlijk?

Metadata: welke apparaten er zijn, hun publieke sleutels, hun adressen en wanneer ze voor het laatst online waren. Je verkeer zelf loopt rechtstreeks tussen apparaten via WireGuard (of via een relay als ze elkaar niet kunnen bereiken) en is end-to-end versleuteld. Zelf hosten betekent dat die metadata op jouw server staat in plaats van op die van een ander.

Heb ik speciale clients nodig?

Nee. Je gebruikt de gewone Tailscale-apps op Linux, macOS, Windows, iOS en Android en laat ze naar de URL van je server wijzen. Op Linux is dat één vlag: --login-server.

Welk plan is genoeg?

Headscale is piepklein: Nano-IP ($8/mnd) kan een gezin of klein team makkelijk aan. Je hebt een dedicated IP nodig, omdat apparaten de controlserver via HTTPS moeten bereiken; een NAT-plan accepteert geen inkomend 443.

Wat als twee apparaten niet rechtstreeks verbinding kunnen maken?

Dan vallen ze terug op een relay (DERP). Standaard gebruikt Headscale de publieke relays van Tailscale, die alleen versleutelde pakketten zien. Je kunt in plaats daarvan de ingebouwde relay van Headscale aanzetten; die vraagt een open UDP 3478 en gebruikt de bandbreedte van je VPS voor doorgestuurd verkeer.

Wat ontbreekt er vergeleken met de gehoste Tailscale-dienst?

Er is geen officieel webbeheerpaneel: je beheert gebruikers en sleutels via de commandoregel (er bestaan community-interfaces). Sommige nieuwere functies van de gehoste dienst komen later of nooit naar Headscale. Voor een persoonlijk netwerk of een klein team werkt de kern (mesh, ACL's, MagicDNS, exit nodes) goed.

Reacties

Nog geen reacties. Wees de eerste.

Laat een reactie achter

Reacties worden gemodereerd voordat ze verschijnen.