Configuration Wireguard Docker
Docker compose
# =============================================================================
# docker-compose.yml — VPS OVH # Services : (WireGuard Hub + Portainer UIUI)
# Version : 23 — Portainerpare-feu UIgéré bindpar surUFW 10.0.0.1(pas uniquementde règles dans wg0.conf)
# =============================================================================
# # STRUCTURE DES FICHIERS ATTENDUEArborescence :
# /opt/wireguard-ovh/
# ├── docker-compose.yml
(ce fichier)
# └── wg-config/
# └── wg0.conf (= servers/ovh-wg0.conf renommé)
#
# # VÉRIFICATIONDémarrage :
# docker execcompose wireguard-ovhup wg show-d
# sssudo -tlnpbash | grep 9000ovh-ufw-setup.sh # doitAPRÈS, afficherpour 10.0.0.1:9000que uniquementwg0 #existe
# =============================================================================
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard-ovh
# network_mode: host est— obligatoirecohabite sans souci avec d'autres conteneurs host
# (ex : Home Assistant sur Albi). Indispensable pour que leswg0 règleset iptables PostUple
# duroutage fichiersoient wg0.confau s'appliquent sur les interfaces réseauniveau de l'hôte.hôte, #où EnUFW mode bridge Docker, le conteneur aapplique ses propres interfaces virtuelles
# et ne peut pas manipuler eth0 de l'hôte ni les règles FORWARD globales.règles.
network_mode: host
cap_add:
- NET_ADMIN
# manipulation des interfaces réseau et iptables
- SYS_MODULE # chargement du module kernel WireGuard
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./wg-config:/config
sysctls:# Accès au module kernel wireguard de l'hôte
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1/lib/modules:/lib/modules:ro
restart: unless-stopped
portainer:
image: portainer/portainer-ce:latest
container_name: portainer-ui
# SÉCURITÉ : bindBind sur l'IP WireGuard uniquement.uniquement # Le port 9000 est: invisible depuis l'IP publique d'OVH.
# Accessible uniquement via le mesh : http://10.0.0.1:9000
# Profils clients qui peuvent y accéder :
# - ovh-exitnode (10.0.0.10) → oui, trafic mesh autorisé
# - private-only (10.0.0.40) → oui, c'est l'usage principal
# - mrs-exitnode (10.0.0.20) → oui, passe par le mesh via MRS→OVH
# - albi-exitnode (10.0.0.30) → oui, idem via Albi→OVH
ports:
- "10.0.0.1:9000:9000"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- portainer-data:/data
restart: unless-stopped
depends_on:
- wireguard
volumes:
portainer-data:
---
# =============================================================================
# docker-compose.yml — Serveur Marseille # Services : (WireGuard Spoke + Portainer Agent
# (Copier ce fichier pour Albi en changeant l'IP de bind du Portainer Agent)
# =============================================================================
#
# STRUCTURE DES FICHIERS ATTENDUE :
# /opt/wireguard-mrs/
# ├── docker-compose.yml
# └── wg-config/
# └── wg0.conf (= servers/marseille-wg0.conf
renommé)# #Lancer ensuite : sudo bash marseille-ufw-setup.sh
# =============================================================================
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard-mrs
network_mode: host
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./wg-config:/config
sysctls:
- net.ipv4.ip_forward=1
- net.ipv4.conf.all.src_valid_mark=1/lib/modules:/lib/modules:ro
restart: unless-stopped
portainer-agent:
image: portainer/agent:latest
container_name: portainer-agent
# SÉCURITÉ : bindBind sur l'IP WireGuard de Marseille uniquement.— #joignable Le port 9001 est invisible depuis internet et depuis le LAN local.
# Seul Portainer UI (10.0.0.1) peut s'y connecterseulement via le mesh.
# Pour Albi : remplacer 10.0.0.2 par 10.0.0.3
ports:
- "10.0.0.2:9001:9001"
environment:
- AGENT_PORT=9001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
restart: unless-stopped
depends_on:
- wireguard
---
# =============================================================================
# docker-compose.yml — Serveur Albi (WireGuard + Portainer Agent)
# Identiquewg-config/wg0.conf à= Marseille,servers/albi-wg0.conf
changer# uniquementLancer ensuite : #sudo ports:bash "10.0.0.3:9001:9001"albi-ufw-setup.sh
#
container_name:# wireguard-albiHome Assistant / Frigate tournent déjà sur ce serveur : aucun changement
# requis pour eux. WireGuard en host cohabite avec HA en host.
# =============================================================================
services:
wireguard:
image: lscr.io/linuxserver/wireguard:latest
container_name: wireguard-albi
network_mode: host
cap_add:
- NET_ADMIN
- SYS_MODULE
environment:
- PUID=1000
- PGID=1000
- TZ=Europe/Paris
volumes:
- ./wg-config:/config
- /lib/modules:/lib/modules:ro
restart: unless-stopped
portainer-agent:
image: portainer/agent:latest
container_name: portainer-agent
# Bind sur l'IP WireGuard d'Albi.
ports:
- "10.0.0.3:9001:9001"
environment:
- AGENT_PORT=9001
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
restart: unless-stopped
depends_on:
- wireguard