Aller au contenu

VPN avec Wireguard dans Docker : Accès sécurisé aux services internes sans exposition de ports

Rogelio Guerra Riverón
Auteur
Rogelio Guerra Riverón
Construction de ma propre infrastructure web depuis zéro. Je documente chaque étape : serveurs, réseaux, conteneurs et tout ce qui se présente.

Pourquoi tu as besoin de cela
#

Il y a quelques mois, j’ai fait face à un problème courant : je voulais accéder à mes services internes (Jellyfin, Home Assistant, etc.) de l’extérieur de la maison, mais je ne voulais pas les exposer directement sur internet. Ouvrir des ports est un risque inutile. La solution a été de mettre en place un VPN avec Wireguard dans Docker. C’était la meilleure décision que j’ai prise pour mon infrastructure domestique.

Avantages de Wireguard
#

  • Léger : consomme moins de ressources qu’OpenVPN
  • Rapide : protocole moderne et efficace
  • Facile à configurer : comparé à d’autres alternatives
  • Sécurisé : cryptographie de dernière génération
  • Docker-friendly : il existe d’excellentes images officielles

Préparation
#

Tu as besoin de :

  • Un serveur avec Docker installé
  • Le fichier docker-compose.yml
  • Un domaine ou une adresse IP publique (pour te connecter de l’extérieur)
  • Les clients Wireguard sur tes appareils

Installation étape par étape
#

1. Créer le répertoire de configuration
#

mkdir -p ~/wireguard/config
cd ~/wireguard

2. Docker Compose
#

Crée le fichier docker-compose.yml :

version: '3.8'

services:
  wireguard:
    image: linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Madrid
      - SERVERURL=tu-dominio-o-ip-publica.com
      - SERVERPORT=51820
      - PEERS=telefono,laptop,tablet
      - PEERDNS=auto
    ports:
      - "51820:51820/udp"
    volumes:
      - ./config:/config
      - /lib/modules:/lib/modules:ro
    networks:
      - mi-red
    restart: unless-stopped

networks:
  mi-red:
    driver: bridge
    ipam:
      config:
        - subnet: 10.0.0.0/24

Remplace :

  • tu-dominio-o-ip-publica.com par ton adresse réelle
  • Les PEERS par les noms de tes appareils
  • Le fuseau horaire selon ta localisation

3. Démarrer le conteneur
#

docker-compose up -d

Les fichiers de configuration seront générés automatiquement dans ./config. Attends quelques secondes et vérifie :

ls -la config/peer_*/

4. Obtenir les codes QR
#

Pour connecter tes appareils :

docker exec wireguard cat /config/peer_telefono/peer_telefono.conf

Ou directement les QR :

docker exec wireguard qrencode -t ansiutf8 < /config/peer_telefono/peer_telefono.conf

Scanne avec ton client Wireguard sur chaque appareil.

Connecter les services internes
#

C’est ici que ça devient important. Je veux accéder à des services sur mon réseau interne. Pour cela, je modifie le docker-compose.yml et j’ajoute des routes :

environment:
  - ALLOWEDIPS=10.0.0.0/24,192.168.1.0/24

Cela te permet d’accéder de la VPN au réseau 192.168.1.0/24 (ton réseau local).

Sur le serveur, active le forwarding :

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Accès depuis les clients
#

Une fois connecté au VPN, tu accèdes à tes services en utilisant leurs adresses IP internes :

  • http://192.168.1.100:8096 pour Jellyfin
  • http://192.168.1.50:8123 pour Home Assistant
  • Ce dont tu as besoin sur ton réseau

Maintenance
#

Renouveler les certificats (tous les 6 mois environ) :

docker exec wireguard /app/wireguard-tools/show-peer peer_nombre

Ajouter un nouvel appareil :

docker-compose down
# Edita PEERS en docker-compose.yml
docker-compose up -d

Notes finales
#

  • Ouvre seulement le port 51820/UDP sur ton routeur
  • Utilise un pare-feu sur le serveur pour bloquer l’accès inutile
  • Vérifie que le forwarding d’IP est actif
  • Surveille régulièrement le trafic du VPN

Depuis plusieurs mois avec cette configuration et elle est totalement stable. J’accède à mes services de n’importe où sans soucis de sécurité. Je recommande définitivement cette configuration à quiconque veut maintenir son infrastructure domestique privée mais accessible.


Équipement recommandé
#

Liens d’affiliation. Aucun coût supplémentaire pour toi.