Tu veux un VPN qui t'appartient. Pas d'audit "no-logs" annuel, pas d'IP partagée avec 4 000 inconnus, pas de prix qui double à la fin de la promo. Ce guide te fait monter WireGuard sur un VPS Contabo en 20 minutes chrono, depuis l'inscription jusqu'au premier curl ifconfig.me qui retourne l'IP de ton VPS allemand.
C'est exactement la config qu'on recommande pour un tunnel self-host de production. Contabo annonce une connexion 200 Mbit/s, et la position centrale de Nuremberg en Europe garde une latence faible pour les clients FR/UE.
Astuce : si le tunnel refuse de se connecter, la cause est presque toujours le port. Voir notre guide sur le port par défaut de WireGuard (UDP 51820) et comment l'ouvrir, le rediriger ou le changer.
Pourquoi Contabo plutôt que Hetzner, OVH ou DigitalOcean
Le choix du fournisseur VPS pour un VPN self-host n'est pas anodin et conditionne directement le rapport prix/performance/juridiction que tu vas obtenir sur les 3 à 5 prochaines années. En comparant les specs publiées de Contabo, Hetzner Cloud et OVH, le verdict tient en trois axes : prix, perf, juridiction.
Sur le prix, Contabo Cloud VPS 10 à 5,50 €/mois (juin 2026) pour 4 vCPU / 8 Go RAM / 200 Mbps+ reste imbattable en Europe. Hetzner CX22 propose un équivalent à 4,15 €/mois mais avec 2 vCPU seulement et 4 Go RAM, soit deux fois moins de marge si tu veux héberger Nextcloud, Pi-hole ou Vaultwarden en plus du VPN. OVH VPS Value à 4,50 €/mois propose 2 vCPU / 4 Go / 1 vCPU bridé à 20 % CPU steal sur certaines périodes - c'est le pire deal des trois en pratique.
Sur la perf, les deux hébergeurs annoncent une bande passante largement suffisante pour un VPN perso (Contabo une connexion 200 Mbit/s, Hetzner un port gigabit partagé). Pour un VPN self-host, même une connexion 200 Mbit/s suffit à saturer la plupart des accès domestiques : le débit crête brut est rarement le facteur décisif - la juridiction et le prix comptent généralement plus. Lance iperf3 toi-même depuis ta propre connexion si tu veux des chiffres exacts.
Sur la juridiction, Contabo a son datacenter principal à Nuremberg (Allemagne), Hetzner à Falkenstein (Allemagne aussi), OVH à Roubaix ou Strasbourg (France). Allemagne et France ont des cadres GDPR comparables et sont tous deux hors CLOUD Act US. La différence pratique : Contabo a sa société-mère en Allemagne pure (GmbH Munich), Hetzner aussi (GmbH Gunzenhausen), OVHcloud est cotée en bourse Paris depuis 2021 ce qui ajoute une couche de pression actionnaires que les deux autres n'ont pas. Pour un VPN privacy-first, on préfère légèrement les GmbH allemandes non cotées.
Le différenciateur final est le support email. Contabo répond généralement entre 4 et 24h sur tickets, Hetzner entre 2 et 12h, OVH entre 24h et 5 jours. Pour un VPN perso où tu peux régler la majorité des soucis seul via SSH, le support compte peu - sauf le jour où le VPS ne démarre pas après reboot kernel update et que tu as besoin d'un accès console rescue. Ce jour-là, Hetzner gagne facile.
Étape 1 - Commander le VPS Contabo
Va sur contabo.com via notre lien /go/contabo-vps-2y et choisis :
- Plan : Cloud VPS 10 (4 vCPU, 8 Go RAM, 75 Go NVMe, 200 Mbps+ garantis, trafic illimité / fair-use)
- Engagement : 12 mois (5,50 €/mois, juin 2026) ; les durées plus longues baissent le tarif mensuel
- OS : Ubuntu 22.04 LTS (Ubuntu 24.04 marche aussi, mais 22.04 reste plus stable pour les paquets WireGuard)
- Datacenter : Nuremberg (DE) - meilleur latency France/Europe + juridiction Allemagne GDPR
- Root password : génère-en un fort que tu mettras temporairement dans ton password manager (tu le supprimes après création d'un utilisateur non-root)
- Add-ons : décoche tout (backups Contabo non nécessaires, on backup nous-mêmes)
Total ~66 € TTC pour un engagement 12 mois (5,50 €/mois, juin 2026). À l'activation tu reçois un email avec l'IP publique et le password root. Compte 5 minutes à 4 heures selon l'heure. Les heures de pointe (18h-22h CET, mardi/mercredi) sont les plus lentes.
Disclosure :
/go/contabo-vps-2yest un lien sponsorisé. Si tu prends le VPS, on touche une commission, à zéro coût pour toi. Notre tarif n'est pas affecté. On ne recommande Contabo que sur la base de ses specs publiées et de son historique public, pas d'une commission.
Étape 2 - Premier SSH et durcissement
Dans ton terminal local :
ssh root@TON.IP.PUBLIQUE
# Accepter la fingerprint, coller le password root
Une fois connecté, mise à jour système d'abord :
apt update && apt upgrade -y
apt install -y curl wget unzip fail2ban
Création d'un utilisateur non-root (le root SSH va être désactivé) :
adduser eric
# Suivre les prompts (mot de passe fort, nom complet optionnel)
usermod -aG sudo eric
Copier ta clé SSH publique depuis ton MacBook local (dans un autre terminal) :
ssh-copy-id eric@TON.IP.PUBLIQUE
# Si ssh-copy-id n'existe pas : cat ~/.ssh/id_ed25519.pub | ssh root@IP "mkdir -p /home/eric/.ssh && cat >> /home/eric/.ssh/authorized_keys && chown -R eric:eric /home/eric/.ssh && chmod 700 /home/eric/.ssh && chmod 600 /home/eric/.ssh/authorized_keys"
Tester la connexion en non-root dans un nouveau terminal sans fermer le premier :
ssh eric@TON.IP.PUBLIQUE
# Tu dois entrer sans password, juste la passphrase de ta clé SSH
Si ça marche, désactive le SSH root et l'auth password dans /etc/ssh/sshd_config (depuis le shell root) :
sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#*PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl restart sshd
À ce stade le port 22 reste accessible mais uniquement via clé SSH et uniquement pour eric. Plus de risque de brute-force root.
Étape 3 - Firewall UFW
# Toujours en root
apt install -y ufw
ufw default deny incoming
ufw default allow outgoing
ufw allow 22/tcp comment 'SSH'
ufw allow 51820/udp comment 'WireGuard'
ufw enable
# Réponse y
ufw status verbose
UFW est maintenant en place. Tu peux te déconnecter de la session root et faire le reste depuis ton compte eric avec sudo.
Étape 4 - Installer WireGuard
# Connecté en eric, on passe en sudo
sudo apt install -y wireguard qrencode iptables-persistent
Générer les clés serveur :
sudo bash -c 'umask 077 && wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub'
sudo cat /etc/wireguard/server.pub
# Note la pubkey, tu en auras besoin pour les clients
Identifier l'interface publique (peut être eth0, ens3, ens18, etc.) :
ip route | awk '/default/ {print $5}'
# Sur Contabo c'est généralement eth0 ou ens18
Étape 5 - Configurer /etc/wireguard/wg0.conf
Édite le fichier (ajuste eth0 si différent dans l'étape précédente) :
sudo nano /etc/wireguard/wg0.conf
Colle ceci (en remplaçant SERVER_PRIVATE_KEY par le contenu de /etc/wireguard/server.key) :
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.66.66.1/24
ListenPort = 51820
MTU = 1420
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Activer ip_forward :
sudo bash -c 'echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf'
sudo sysctl -p
# Vérifier : sysctl net.ipv4.ip_forward (doit dire 1)
Démarrer WireGuard :
sudo systemctl enable --now wg-quick@wg0
sudo wg show
# Tu dois voir interface wg0, public key, listening port
Étape 6 - Créer le premier peer (client)
Côté serveur, génère une clé client :
sudo bash -c 'umask 077 && wg genkey | tee /etc/wireguard/clients/mac.key | wg pubkey > /etc/wireguard/clients/mac.pub'
sudo mkdir -p /etc/wireguard/clients
sudo cat /etc/wireguard/clients/mac.pub
# Note cette pubkey
Ajouter le peer dans le wg0.conf serveur :
sudo bash -c 'cat >> /etc/wireguard/wg0.conf <<EOF
[Peer]
# MacBook
PublicKey = CLIENT_MAC_PUBKEY
AllowedIPs = 10.66.66.2/32
EOF'
Recharge la config sans down :
sudo wg syncconf wg0 <(wg-quick strip wg0)
Générer le fichier client (à transférer en sécurité vers le MacBook/iPhone) :
sudo bash -c 'cat > /etc/wireguard/clients/mac.conf <<EOF
[Interface]
PrivateKey = $(cat /etc/wireguard/clients/mac.key)
Address = 10.66.66.2/24
DNS = 9.9.9.9, 149.112.112.112
MTU = 1420
[Peer]
PublicKey = $(cat /etc/wireguard/server.pub)
Endpoint = TON.IP.PUBLIQUE:51820
AllowedIPs = 0.0.0.0/0, ::/0
PersistentKeepalive = 25
EOF'
Pour iPhone / Android, encode en QR :
sudo qrencode -t ansiutf8 < /etc/wireguard/clients/mac.conf
Tu scannes ce QR depuis l'app WireGuard (App Store, Play Store) et le tunnel est configuré.
Pour macOS / Linux desktop, télécharge le .conf localement :
# Sur ton Mac
scp eric@TON.IP.PUBLIQUE:/etc/wireguard/clients/mac.conf ~/Downloads/
# Puis Import depuis l'app WireGuard officielle
Étape 7 - Tester contre les fuites
Active le tunnel sur ton client, puis dans un navigateur :
- ipleak.net : ton IP publique doit être celle du VPS Contabo Nuremberg. Géo = Allemagne. Si tu vois ton IP française d'origine → le tunnel ne route pas, vérifie
AllowedIPscôté client. - dnsleaktest.com → bouton "Extended test" : les serveurs DNS retournés doivent être Quad9 (9.9.9.9) ou ceux de ton VPS. Si tu vois ceux d'Orange/SFR/Free → DNS leak, vérifie
DNS = 9.9.9.9dans le.confclient. - browserleaks.com/webrtc : aucune IP locale ne doit fuiter via WebRTC. Si fuite → désactive WebRTC dans le navigateur (extensions uBlock Origin → option "Prevent WebRTC from leaking").
curl ifconfig.medepuis terminal client : doit retourner l'IP du VPS.
Si tout est vert : ton VPN self-host fonctionne. Bienvenue.
Étape 8 - Backups et maintenance
Le tunnel marche. Quelques bonnes habitudes :
- Backup
/etc/wireguard/chaque semaine :rsync -avz eric@VPS:/etc/wireguard/ ~/backup-wg/$(date +%F)/ - Mises à jour mensuelles :
sudo apt update && sudo apt upgrade -y && sudo reboot(downtime ~30s avec reboot, sinonunattended-upgrades) - Monitoring : voir le guide Prometheus + Grafana pour VPN VPS
- Kill switch côté client : voir le guide kill switch Linux iptables + systemd
- Templates pour cas spécifiques : voir les 8 templates WireGuard prêts à l'emploi
Coût total sur 5 ans
Pour comparer honnêtement avec un service VPN commercial :
| Option | Coût 1 an | Coût 5 ans (extrapolé) | Bande passante |
|---|---|---|---|
| Contabo Cloud VPS 10 (self-host) | ~66 € | ~330 € | 200 Mbps+, illimité (fair-use) |
| NordVPN 2 ans + renouvellement annuel | 36 € | ~600 € | "Illimité" partagé |
| ExpressVPN 1 an + renouvellement | 100 € | ~750 € | "Illimité" partagé |
Et avec le VPS Contabo tu peux héberger en plus : un Pi-hole DNS, un Nextcloud, un Vaultwarden, un bot Discord, une instance Mastodon perso. Le VPN n'utilise que ~1 % du CPU et de la RAM en condition usage perso.
Erreurs courantes de setup
Les pièges fréquents (les nôtres et ceux qu'on voit sur Reddit r/WireGuard)
Après avoir monté ce setup et aidé plusieurs proches à faire de même, voici la liste des pièges qui font perdre une heure à diagnostiquer.
Confondre eth0 et ens3 : sur Contabo, l'interface réseau par défaut s'appelle ens3 (predictable network interface naming systemd) et pas eth0. Si tu copies-colles un PostUp/PostDown depuis un tuto Debian générique, ta règle MASQUERADE pointe sur eth0 qui n'existe pas et le NAT ne fonctionne pas - symptôme : le tunnel monte, mais aucune connexion sortante des peers ne reçoit de réponse. Vérifier avec ip a et utiliser le bon nom d'interface.
Oublier d'activer net.ipv4.ip_forward : sans ça, le kernel refuse de router les paquets entrants depuis le tunnel vers internet, et tu obtiens un timeout silencieux. Le fichier /etc/sysctl.conf doit contenir net.ipv4.ip_forward=1 non commenté, puis sysctl -p pour appliquer. Bonus : pour IPv6, ajouter aussi net.ipv6.conf.all.forwarding=1.
Configurer UFW après WireGuard sans le bon ordre : si tu actives UFW (ufw enable) après avoir démarré WireGuard, UFW peut écraser les règles iptables que WireGuard a posées via PostUp. Symptôme : tunnel actif mais aucun trafic ne passe. Solution : ufw enable AVANT de démarrer WireGuard, puis systemctl restart wg-quick@wg0 pour repositionner les règles PostUp.
Choisir un ListenPort 51820 dans une région où il est connu pour être bloqué : la Chine, l'Iran, et certains réseaux WiFi d'entreprise scannent activement le port 51820/UDP. Si ton usage prévoit ces contextes, configure dès le départ un port non-standard (41943 par exemple) et documente-le pour ton futur toi.
Générer le QR code avec qrencode sur un terminal qui ne supporte pas l'Unicode haute densité : symptôme, le QR est illisible (caractères carrés tronqués). Solution : qrencode -t ANSIUTF8 < wg-client.conf au lieu de qrencode -t ANSI.
Ne pas désactiver les login root SSH avant de démarrer le VPN : si quelqu'un trouve ton IP VPS par scan Shodan et tente une brute-force SSH, ils n'auront aucun obstacle s'ils peuvent essayer en root. Désactivation obligatoire dans /etc/ssh/sshd_config (PermitRootLogin no + PasswordAuthentication no), avec validation systématique que ta clé SSH non-root fonctionne avant de fermer la session active.
Verdict
WireGuard sur Contabo Cloud VPS 10 à 5,50 €/mois (juin 2026) reste notre choix #1 pour un VPN self-host. Setup en ~20 minutes, connexion 200 Mbit/s+ annoncée, latence faible depuis l'Europe de l'Ouest, juridiction Allemagne GDPR. Le seul vrai bémol : support uniquement par email, pas idéal en cas de panne urgente.
Pour démarrer : Contabo Cloud VPS 10 via notre lien /go/contabo-vps-2y. Tu peux annuler dans les 30 premiers jours si la config ne te convient pas, selon les CGV de Contabo.
Notre avis complet sur Contabo VPS détaille les forces et faiblesses sur 5 catégories (perf, prix, RAM/CPU, support, dashboard) avec le breakdown par score.
Pour aller plus loin sur le self-host VPN
- Self-host VPN sur Contabo : guide WireGuard complet - pillar version 2026
- WireGuard vs OpenVPN sur VPS : benchmarks iperf3 réels - benchmarks iperf3 WireGuard vs OpenVPN
- Templates de configuration WireGuard 2026 - fichiers prêts à l'emploi
- Kill switch VPN Linux avec iptables et systemd - fail-safe rules
- Monitorer son VPN VPS avec Prometheus + Grafana - observability stack
- Routing VPN custom sur Contabo : bypass DPI - Iran / Chine
- Contabo vs Hetzner vs OVH : VPS Europe pour VPN - comparatif technique
- WireGuard + port knocking : VPN furtif - sécurité par obfuscation
- Cloak : obfuscation TLS pour VPN self-host - DPI bypass HTTPS
- Notre méthodologie de test - approche éditoriale et critères
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis
Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région→

