Prérequis
- Un serveur Linux accessible depuis l’endroit où vous allez l’administrer
- Docker et Docker Compose installés
- Un nom de domaine pointant vers l’IP de votre serveur
- Les ports 80 et 443 ouverts pour Caddy, ainsi que le port UDP de WireGuard ouvert (par défaut 51820)
Caddy nécessite un nom DNS valide, interne ou public, pointant vers votre serveur afin d'obtenir et de renouveler automatiquement les certificats SSL.
Déploiement
mkdir wireguard_webadmin && cd wireguard_webadminwget -O docker-compose.yml \
https://raw.githubusercontent.com/eduardogsilva/wireguard_webadmin/main/docker-compose-caddy.ymlCréez un fichier .env dans le même répertoire. Définissez SERVER_ADDRESS avec votre domaine :
SERVER_ADDRESS=vpn.example.com
DEBUG_MODE=False
TIMEZONE=America/Sao_PauloConsultez la référence .env ci-dessous pour voir toutes les variables disponibles.
docker compose up -dAccédez au panneau via https://vpn.example.com. Caddy obtient et renouvelle automatiquement les certificats SSL.
Référence .env
| Variable | Obligatoire | Description |
|---|---|---|
| SERVER_ADDRESS | Oui | Nom DNS ou IP de votre serveur. Cela doit correspondre exactement à ce que vous saisissez dans le navigateur, sinon vous aurez des erreurs CSRF. |
| DEBUG_MODE | Non | Définissez True pour activer le mode debug de Django. Ne jamais l'utiliser en production. Valeur par défaut : False. |
| TIMEZONE | Non | Fuseau horaire de l'application. Utilisez une valeur issue de la base tz. Valeur par défaut : America/Sao_Paulo. |
| EXTRA_ALLOWED_HOSTS | Non | Noms d'hôte supplémentaires que Django doit accepter, séparés par des virgules. SERVER_ADDRESS est toujours inclus. Exemple : app1.example.com,app2.example.com:8443. |
| WIREGUARD_STATUS_CACHE_ENABLED | Non | Met en cache l'état de WireGuard afin de réduire les appels à wg. Valeur par défaut : True. |
| WIREGUARD_STATUS_CACHE_REFRESH_INTERVAL | Non | Fréquence de rafraîchissement du cache, en secondes. Valeurs autorisées : 30, 60, 150, 300. Valeur par défaut : 60. |
| WIREGUARD_STATUS_CACHE_WEB_LOAD_PREVIOUS_COUNT | Non | Nombre d'instantanés en cache à précharger au chargement de la page (0-9). Des valeurs plus élevées préremplissent les graphiques de trafic. Réduisez-la si la liste des pairs semble lente. Valeur par défaut : 9. |
Mise à niveau
Les données sont conservées dans des volumes Docker. Une mise à niveau n'affecte ni vos pairs, ni vos règles de pare-feu, ni vos entrées DNS, ni aucune autre configuration.
cd wireguard_webadmindocker compose down
docker compose pulltar cvfz wireguard-webadmin-backup-$(date +%Y-%m-%d-%H%M%S).tar.gz \
/var/lib/docker/volumes/wireguard_webadmin_wireguard/_data/ \
/var/lib/docker/volumes/wireguard_webadmin_rrd_data/_data/wget -O docker-compose.yml \
https://raw.githubusercontent.com/eduardogsilva/wireguard_webadmin/main/docker-compose-caddy.ymldocker compose up -ddocker compose logs wireguard_webadminDépannage
Caddy n’obtient pas de certificat
- Vérifiez que l’enregistrement A de votre domaine pointe vers l’IP publique du serveur
- Vérifiez que les ports 80 et 443 sont ouverts et non bloqués en amont
- Consultez les logs de Caddy :
docker compose logs caddy
Le panneau ne se charge pas
- Vérifiez que tous les conteneurs sont en cours d’exécution :
docker compose ps - Recherchez des erreurs :
docker compose logs wireguard_webadmin - Vérifiez que
SERVER_ADDRESSdans.envcorrespond exactement à ce que vous saisissez dans le navigateur
Erreurs CSRF à la connexion
SERVER_ADDRESS est mal configuré. Il doit correspondre au nom d’hôte, et au port si celui-ci n’est pas standard, utilisé pour accéder au panneau. Mettez .env à jour puis redémarrez avec docker compose up -d.
Les pairs WireGuard ne peuvent pas se connecter
- Vérifiez que le port UDP de WireGuard est ouvert sur le pare-feu de l’hôte. La valeur par défaut est 51820, mais si vous exécutez plusieurs instances, chacune doit avoir son propre port.
- Assurez-vous que la plage de ports UDP déclarée dans
docker-compose.ymlcorrespond à ce qui est configuré dans chaque instance WireGuard dans le panneau. En cas d’écart, le conteneur n’exposera pas le bon port sur l’hôte. - Vérifiez que le transfert IP est activé sur l’hôte :
sysctl net.ipv4.ip_forward
Services en cours d’exécution
| Service | Rôle |
|---|---|
| wireguard-webadmin | Application Django : interface web et API |
| caddy | Proxy inverse et TLS automatique |
| auth-gateway | Couche d'autorisation Zero Trust : impose des vérifications d'identité avant de transmettre vers l'upstream |
| cron | Tâches planifiées : activation/désactivation des pairs, rafraîchissement du cache |
| rrdtool | Historique du trafic : collecte de données RRD et génération de graphiques |
| dns | Résolveur basé sur dnsmasq avec prise en charge des listes de blocage par catégories |