Serveur WireGuard en Docker pour utiliser son propre serveur DNS (AdGuard Home, Pi-hole…) depuis un smartphone, même en dehors du réseau local.
Smartphone (4G / WiFi externe)
│ tunnel WireGuard chiffré
▼
Serveur WireGuard (chez soi)
│ requête DNS interne
▼
Serveur DNS local (AdGuard Home, Pi-hole…)
- Hors du réseau : le VPN s'active, tout le DNS passe par le serveur maison
- Sur le WiFi maison : le VPN se désactive automatiquement, le DNS local est joignable directement
- Docker + Docker Compose sur le serveur
- Un nom de domaine ou une IP publique pointant vers la box (DynDNS recommandé si IP variable)
- Port UDP
51820ouvert et forwardé vers le serveur sur la box - Le DHCP du réseau local doit pousser l'IP du serveur DNS aux clients (pour que le smartphone l'utilise directement quand il est à la maison)
Éditer docker-compose.yml et remplacer les deux valeurs suivantes :
| Variable | Description | Exemple |
|---|---|---|
SERVERURL |
Domaine ou IP publique du serveur VPN | vpn.mondomaine.com |
PEERDNS |
DNS principal + fallback | 192.168.1.1,9.9.9.9 |
docker compose up -dLes peers sont définis dans la variable PEERS du docker-compose.yml (noms séparés par des virgules) :
- PEERS=iphone,laptop,tabletAprès modification, relancer les conteneurs :
docker compose up -d --force-recreate wireguard peer-notify- Retirer le nom du peer de
PEERSdans le servicewireguard - Renseigner son nom dans
REMOVE_PEERSdans le servicepeer-notify:- REMOVE_PEERS=laptop - Relancer la stack — le dossier de config du peer est supprimé, WireGuard se régénère sans lui
- Vider
REMOVE_PEERS=et relancer une dernière fois
Au démarrage, le service peer-notify génère automatiquement les QR codes. Pour les afficher :
docker logs homeguard-notifyCréer un webhook sur ton serveur Discord (Paramètres du salon → Intégrations → Webhooks), puis renseigner l'URL dans le docker-compose.yml :
- DISCORD_WEBHOOK=https://discord.com/api/webhooks/XXXXXX/XXXXXXLe QR code sera envoyé en image dans le salon Discord à chaque démarrage du conteneur.
Pour forcer un renvoi sans redémarrer wireguard :
docker compose restart peer-notify- Installer WireGuard depuis l'App Store
- Ouvrir l'app →
+(en haut à droite) → Créer depuis un QR code - Scanner le QR code (depuis
docker logs homeguard-notifyou le salon Discord) - Donner un nom (ex :
Maison) → Ajouter la configuration VPN → Autoriser
Dans l'app WireGuard, appuyer sur le tunnel puis On-Demand Activation :
- Activer Wi-Fi et Cellular
- Add rule → SSID → saisir le nom exact du WiFi maison → action Disconnect
- Sauvegarder
Le VPN s'activera automatiquement sur tous les réseaux sauf le WiFi maison. Dès que vous rentrez, il se coupe tout seul.
- Installer WireGuard depuis le Play Store
+→ Scanner depuis QR code- Scanner le QR code (depuis
docker logs homeguard-notifyou le salon Discord) - Donner un nom → Autoriser l'ajout du VPN
L'app WireGuard Android ne gère pas nativement les règles par SSID. Deux options :
- Manuellement : activer/désactiver le tunnel dans l'app selon le réseau
- Automatiquement avec Tasker (payant) ou MacroDroid (gratuit) : créer un profil qui désactive le VPN quand le SSID maison est détecté, et le réactive sinon