Handleiding

Draai je eigen VPN op een offshore VPS

Commerciële VPN's vragen je om een no-logbeleid te vertrouwen dat door hun marketingafdeling is geschreven. Je eigen VPS heeft niets om te loggen behalve wat je zelf configureert. Hier is de volledige WireGuard-installatie — en een eerlijke lijst van de afwegingen.

Waarom self-hosted beter is dan een commerciële VPN

De "no logs" van een commerciële VPN is een beleid. De no-logs van je eigen VPS is een architectuur. Dat verschil weegt zwaarder dan elke audit-badge:

  • Een VPN-provider ziet alles door ontwerp. Het verkeer van duizenden gebruikers eindigt op servers die het bedrijf volledig zelf beheert. Een gesloten bevel plus een stille wijziging in het logbeleid is onzichtbaar voor jou — en het is al eerder gebeurd, bij providers die je kent.
  • Op je eigen VPS controleer je de volledige stack. Jouw sshd, jouw schijf, jouw WireGuard-configuratie. Wij draaien niets binnen je gast en bewaren geen activiteits- of verbindingslogs aan de netwerkzijde. We kunnen niet in je VPS kijken; een VPN-bedrijf wordt gedefinieerd door in zijn tunnel te kijken.
  • Jurisdictie werkt in jouw voordeel. Je exit leeft waar je hem implementeert — buiten de surveillance-allianties als je dat kiest, geregeerd door de rechtbanken van de hostingjurisdictie in plaats van het thuisland van een VPN-bedrijf.

En het eerlijke tegengewicht: een self-hosted VPN heeft een dedicated IP dat alleen van jou is. Websites zullen het niet als VPN markeren (een echte kwaliteit-van-leven-upgrade), maar al je verkeer deelt één adres — je mengt je niet in een menigte van duizenden. Als menigte-anonimiteit de vereiste is, gebruik dan Tor. Als betrouwbare infrastructuur de vereiste is, verslaat niets een box die jij controleert.

Wat we bouwen

Telefoon en laptop → WireGuard-tunnel → een SV-Pro op jouw gekozen locatie → het open internet. IPv4-forwarding met NAT op de server, full-tunnel-routing op de clients (0.0.0.0/0), DNS via 9.9.9.9. Voorbeeldserver-IP overal: 185.220.101.14 — vervang door die van jou. Het basisbesturingssysteem is Debian 13; als je de box nog niet hebt gehard, doe dan eerst de 30-minuten-checklist , en kom dan terug.

Serverconfiguratie op Debian 13

Installeer en genereer sleutels

apt update && apt install -y wireguard qrencode

cd /etc/wireguard
umask 077

# server keypair
wg genkey | tee server.key | wg pubkey > server.pub

# one keypair per client device (laptop shown; repeat for phone)
wg genkey | tee laptop.key | wg pubkey > laptop.pub

Het genereren van clientsleutels op de server is acceptabel voor een eerste installatie, omdat je configuraties toch via SSH overdraagt. Voor strengere hygiëne: genereer sleutels op elk apparaat en plak alleen de publieke sleutels in de serverconfiguratie.

Schrijf wg0.conf

# /etc/wireguard/wg0.conf
[Interface]
Address    = 10.10.0.1/24
ListenPort = 51820
PrivateKey = <contents of server.key>
PostUp     = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown   = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# laptop
[Peer]
PublicKey  = <contents of laptop.pub>
AllowedIPs = 10.10.0.2/32

# phone — repeat the block with 10.10.0.3/32

Controleer de naam van je uplink-interface met ip route | grep default — op VPSRento-images is het eth0, maar als die van jou verschilt, pas dan de MASQUERADE-regels aan.

Schakel forwarding in en start

# turn on IPv4 forwarding, persist across reboots
echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/99-wireguard.conf
sysctl -p /etc/sysctl.d/99-wireguard.conf

# firewall: one UDP port, nothing else
ufw allow 51820/udp comment 'WireGuard'

# bring it up, now and on boot
systemctl enable --now wg-quick@wg0
wg show

wg show moet de interface, de luisterpoort en je peers afdrukken. Nog geen handshake-regels — die verschijnen wanneer een client verbinding maakt.

Clientconfiguratie

Op de laptop, laptop.conf:

[Interface]
PrivateKey = <contents of laptop.key>
Address    = 10.10.0.2/32
DNS        = 9.9.9.9

[Peer]
PublicKey           = <contents of server.pub>
AllowedIPs          = 0.0.0.0/0, ::/0
Endpoint            = 185.220.101.14:51820
PersistentKeepalive = 25

AllowedIPs = 0.0.0.0/0, ::/0 stuurt alles door de tunnel — verander dit later naar een split tunnel als je dat ooit wilt. PersistentKeepalive houdt het pad in leven door de thuis-NAT heen. Voor de telefoon hoef je niets te typen: genereer het configuratiebestand van de telefoon op de server en toon het als QR-code in je terminal:

# prints a scannable QR in the terminal — scan it with the WireGuard app
qrencode -t ansiutf8 < phone.conf

Activeer en verifieer daarna vanaf elke client: curl ifconfig.me moet antwoorden met het IP-adres van je VPS, en een DNS-lektest moet 9.9.9.9’s operator tonen — niet je ISP.

Prestatienotities

WireGuard leeft in de kernel en spreekt ChaCha20 — op de AMD EPYC-nodes verplaatst een enkele tunnel realistisch 600–900 Mbps door NAT, wat betekent dat het de poort verzadigt lang voordat de CPU belast wordt. De beperkende factor is nooit de cipher; het zijn de bandbreedtevoorwaarden van het plan. Een VPN is puur bandbreedte: elke gigabyte die je downloadt telt eenmaal inkomend en eenmaal uitgaand. Op plannen met datalimiet telt die rekensom. Op de SV-Pro — $19.99/maand, onbeperkt op 1 Gbps — niet, en daarom is de SV-Pro het plan dat we aan VPN-bouwers aanraden. Eén klant draait een volledige familie-opstelling op een enkele SV-Pro in Amsterdam en heeft nog geen plafond gevonden.

Multi-hop: binnen in Amsterdam, uitgang in Reykjavik

Voor een tweede laag, koppel twee VPS-en over jurisdicties heen. Ingangsknooppunt in Nederland (goedkope latentie naar jou), WireGuard-tunnel tussen de twee servers, uitgangsknooppunt in IJsland (de jurisdictie waaruit je wilt dat je verkeer daadwerkelijk afkomstig is). Je apparaten zien één eindpunt in Amsterdam; het internet ziet een IP in Reykjavik; het ingangsknooppunt ziet alleen ciphertext passeren. Mechanisch zijn het dezelfde configs die je net schreef, tweemaal — een tweede wg -interface op het ingangsknooppunt waarvan de standaardroute naar de uitgangstunnel wijst. De kosten zijn ruwweg 40–60ms extra latentie en nog een $5.99–6.89 VPS. De moeite waard wanneer je dreigingsmodel een budget heeft; decoratie wanneer dat niet zo is.

Eerlijke beperkingen

  • Jij bent nu de operator. Updates, sleutelrotatie en uptime zijn jouw verantwoordelijkheid. unattended-upgrades en de hardening-checklist dekken het grootste deel; de rest is een incidentele apt upgrade op een zondag.
  • Eén IP is één identiteit. Waarnemers kunnen alles correleren dat je adres verlaat. Wanneer het ertoe doet, herimplementeer op een andere locatie — 55 seconden later heb je een verse uitgang en een vers IP gecontroleerd tegen 40+ zwarte lijsten.
  • Een VPS is geen Tor. Deze opstelling beschermt je tegen je ISP, tegen vijandige Wi-Fi en tegen VPN-bedrijven. Tegen een staatsniveau-tegenstander die beide uiteinden van de tunnel bekijkt, bestaat timingcorrelatie. Weet in welke strijd je zit.

Jouw tunnel. Jouw logs: geen.

SV-Pro — 4 vCPU, 8 GB RAM, onbeperkt 1 Gbps — is de keuze van VPN-bouwers voor $19.99/maand. Root in 55 seconden.

Nederlands