Skip to main content

Configuration Wireguard Docker

Docker compose

# =============================================================================
# docker-compose.yml — VPS OVH  (WireGuard Hub + Portainer UI)
# Version 3 — pare-feu géré par UFW (pas de règles dans wg0.conf)
# =============================================================================
# Arborescence :
#   /opt/wireguard-ovh/
#   ├── docker-compose.yml
#   └── wg-config/wg0.conf      (= servers/ovh-wg0.conf renommé)
#
# Démarrage :
#   docker compose up -d
#   sudo bash ovh-ufw-setup.sh   # APRÈS, pour que wg0 existe
# =============================================================================

services:

  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard-ovh
    # network_mode: host — cohabite sans souci avec d'autres conteneurs host
    # (ex : Home Assistant sur Albi). Indispensable pour que wg0 et le
    # routage soient au niveau de l'hôte, où UFW applique ses règles.
    network_mode: host
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
    volumes:
      - ./wg-config:/config
      # Accès au module kernel wireguard de l'hôte
      - /lib/modules:/lib/modules:ro
    restart: unless-stopped

  portainer:
    image: portainer/portainer-ce:latest
    container_name: portainer-ui
    # Bind sur l'IP WireGuard uniquement : invisible depuis l'IP publique 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  (WireGuard + Portainer Agent)
# wg-config/wg0.conf = servers/marseille-wg0.conf
# 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
      - /lib/modules:/lib/modules:ro
    restart: unless-stopped

  portainer-agent:
    image: portainer/agent:latest
    container_name: portainer-agent
    # Bind sur l'IP WireGuard de Marseille — joignable seulement via le mesh.
    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)
# wg-config/wg0.conf = servers/albi-wg0.conf
# Lancer ensuite : sudo bash albi-ufw-setup.sh
#
# Home 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