UPDATE 2024-01-04

+ ajout de la variable : WEBUI_HOST=0.0.0.0
+ correction tag latest par v0.108.0-b.50 

Lors de discussions vocales animées avec la bande sur Discord, nous cherchions quoi faire de notre VPS chez Oracle.
Nous avons décidé d'installer un conteneur WireGuard avec wg-easy. C'est alors qu'un membre a mentionné :

  • "Pétard j'en ai marre des pubs..." hein @Cognotte
    et puis le deuxième à répondu :
  • "bah met Adguard !!" hein @Greg
    Du coup :
  • "ouais mais comment on va faire, blabla et si..."
    Après quelques recherches, nous avons choisi l'image adwireguard-dark en raison de son interface sombre et de la combinaison de WireGuard et AdGuard.
    De une parfait l'interface en sombre me ruine moins les yeux, quand je bosse de nuit et de deux bah les 2 trucs sont inclus ensemble... Il aura fallut faire un peu de gymnastique pour le fun 🙂

Donc on va partir du principe que :
1) vous avez une machine
2) vous avez installer docker + docker compose ( oui maintenant c'est avec un espace )
3) vous utilisez un reverse proxy et donc un docker network

Lorsque qu'on met des petits trucs maintenant on met l'image de NginxProxyManager de JC21 ( j'aime pas celle de lesage avec les ports exotiques xD )
Afin de raccourcir un peu on va tout de suite se mettre d'accord : NginxProxyManager c'est long, alors on va l'appeler NPM hein !

Donc pour faire des trucs faciles une fois docker installé, on créer un docker network pour NPM qu'on nomme npm-proxy...

En mettant les containers sur le même network que NPM, on peut les appeler par leur nom de container et non par les IPs que Docker leur attribue.
La raison est simple, à chaque reboot/restart les IPs peuvent être amené à changer... Imagine le souk !!

Vu que c'est quand même assez long, j'utiliserais un docker compose que je balance dans portainer dans la section stacks.

En voici le contenu :

version: "3.8"

services:
  adwireguard:
    container_name: adwireguard
    image: iganesh/adwireguard-dark:v0.108.0-b.50
    restart: unless-stopped
    ports:
      - '51820:51820/udp' # wireguard port
    environment:
        # WG-EASY ENVS
      - WG_HOST=wg.ndd.tld #enregistrement A qui pointe sur l'ip ou bien l'ip du vps en dur
      - PASSWORD=M0T2P4SS3UH # tu l'auras compris c'est le mot de passe de l'interface graphique de WG-EASY
      - WG_PORT=51820 #ici c'est le port UDP à exposer et ouvrir dans le parefeu pour que les clients puissent se connecter
      - WG_DEFAULT_ADDRESS=172.18.2.x #Ici c'est la gymnastique numéro 1
      - WG_DEFAULT_DNS=172.18.1.1 # Ici la gymnastique numéro 2
      - WG_MTU=1420
      - WEBUI_HOST=0.0.0.0
    volumes:
        # adguard-home volume
      - '/home/ubuntu/docker/adguard/work:/opt/adwireguard/work'
      - '/home/ubuntu/docker/adguard/conf:/opt/adwireguard/conf'
        # wg-easy volume
      - '/home/ubuntu/docker/wireguard:/etc/wireguard'
    cap_add:
      - NET_ADMIN
      - SYS_MODULE
    sysctls:
      - net.ipv4.ip_forward=1
      - net.ipv4.conf.all.src_valid_mark=1
      - net.ipv6.conf.all.disable_ipv6=1    # Disable IPv6
    networks:
      npm-proxy:
        ipv4_address: 172.18.1.1 # et la gymnastique numéro 3

networks:
  npm-proxy:
    name: npm-proxy
    external: true

Pour la plupart des trucs c'est assez compréhensible néanmoins on va s'attarder sur les 3 gymnastiques !
Numéro 1, c'est le range dans laquelle wg-easy attribuera les ip des clients créés. On laisse bien le x à la fin.
Numéro 2 et numéro 3 vont de paires !
On déclare comme default dns 172.18.1.1 pour la configuration des clients, cette même ip qu'on attribue plus bas a ce container qui est lui-même serveur wireguard et adguard.

Alors bien évidemment 172.18.1.1 et 172.18.2.x sont basés sur le range ip de network npm-proxy, lorsqu'on l'a créé à la volée docker lui a donné un range 172.18.0.0/16 donc en gros on va de 172.18.0.1 -> 172.18.255.255.
Ca en fait des IPs pour des containers 🤣 alors j'ai fait simple : je pars du principe que chaque containers aura une ip dans la plage 172.18.0.x, que mon container aura pour ip 172.18.1.1 et que le range des clients commencera dans 172.18.2.0 donc en gros on ne risque pas de se marcher sur les pieds.

Sur NPM, il suffira de déclarer un enregistrement wg.ndd.tld avec pour cible http://adwireguard:51821 pour accéder à l'interface de wg-easy et ad.ndd.tld avec pour cible http://adwireguard:3000 le temps de l'installation puis de modifier en http://adwireguard:80 pour accéder à l'interface d'adguard.

Tuto simple pour partager surtout le docker-compose.yml, si tu as des questions pose les ici ou sur discord 😉

Matt
PS: comme dirait Greg: p**ain y'a pas d'images !!!

Depuis cette interface on peut donc générer à la volée des clients, récupérer les fichiers de conf ou bien scanné le qrcode, on peut supprimer et aussi désactiver temporairement.

Et voilà un aperçu de adguard...
PS2: au fait du coup vu que les clients vpn sont dans le lan docker, tu peut accéder à tes containers en interne avec leur ip:port

    un mois plus tard

    une fois gouté, on ne peut plus s'en passer !

    (et en plus il y a des images) 😃

    8 mois plus tard

    Bonjour et merci beaucoup exactement se que je cherchais 😍. Mais malheureusement quand j'active le vpn je n'ai plus de connexion 😓. Une idée d'où commencé les recherches s'il vous plaît ? Les logs de adwireguard ont l'air normaux.
    Merci d'avance. Cordialement

      leouf69 bonsoir,
      est-ce qu'une fois le vpn activé un ping vers une ip en dur (ex 1.1.1.1) renvoi quelque chose ?

        MattProd Bonjour et merci de ta réponse.
        Non aucun retour comme si aucune connexion.
        Je viens de m'apercevoir peut-être que. Dans mes logs j'ai "The server is configured to refuse ANY requests".
        Cordialement

          leouf69 Je viens de voir qu'on avait eu une coquille. Et effectivement la version latest à l'air foiré.
          Je regarde dans quelques minutes.

          D'accord merci pour ton aide. Du coup je viens de voir ta correction dans le message d'origine, juste ça devrait corriger mon problème ? 🤣.
          Cordialement

            leouf69 alors effectivement la latest/v0.108.0-b.51 est foiré manifestement l'issue est toujours ouverte sur le GitHub.
            Je te propose de remplacer

            :latest

            par

            :v0.108.0-b.50

            Ha oui fonctionne parfaitement au top merci beaucoup j'adore tout tes tutos 😍.
            Merci encore

            MattProd Afin de raccourcir un peu on va tout de suite se mettre d'accord : NginxProxyManager c'est long, alors on va l'appeler NPM/npm hein !

            NPM uniquement STP, npm c'est déjà pris c'est le node package manager !
            (au moins pour les explications)

            MattProd c'est beaucoup plus simple que d'appeller les ips des containers qui peuvent changer et puis aussi de se tapper les published ports enfin la plupart du temps faut bien en publié de temps ( coucou rutorrent, wireguard, etc )

            A tes souhaits ? A reformuler je pense 🤯

            Pourquoi virer IPv6 ? (Si le courage me prend j'essayerai de refaire un compose avec IPv6)

              julienth37 NPM uniquement STP, npm c'est déjà pris c'est le node package manager !

              Oui alors NPM c'est ok 😉 je reprendrais la lecture/correction ce soir.

              julienth37 A tes souhaits ? A reformuler je pense 🤯

              Sûrement oui 😅

              julienth37 Pourquoi virer IPv6 ? (Si le courage me prend j'essayerai de refaire un compose avec IPv6)

              Parce que le container en lui même n'est pas construit avec l'ipv6... sinon tu penses bien que j'aurais jamais oser désactiver cette partie là xD

                MattProd Parce que le container en lui même n'est pas construit avec l'ipv6... sinon tu penses bien que j'aurais jamais oser désactiver cette partie là xD

                Arf donc plus qu'à refaire un conteneur alors ^^ (Bon en attendant OpenVPN Access Server marche nickel en dual stack IPv4/IPv6 👌 )

                3 mois plus tard

                Bonjour, j'ai suivi le tutoriel
                est quand j'active les dns de adguard sur ma carte wifi je n'ai plus acces au panel ...
                j'ai bien debloquer le port dans mon firewall

                de + qd jactive le tunnel wireguard plus aucune connection
                un ping sur 1.1.1.1 ne repond pas

                  Diesel les DNS enfin l'adresse DNS du container adwireguard sont uniquement accessible depuis le tunnel. A moins que tu n'es exposé les ports directement ?
                  En soit on a juste a publier le port 51820/udp pour établir le tunnel et donc autoriser ce port dans le firewall.
                  Les logs du container donnent quoi ?
                  Tu as quel configuration en gros ? NPM ? ou autre ? network docker ? etc ?

                    MattProd

                    en gros j'utilise npm avec un network npm-proxy
                    l'adresse du container adwireguard est accesible sans le tunnel
                    mai avec non
                    j'ai creer la stack du container avec portainer et oui tout est en docker
                    j'ai bien mis une regle udp sur mon firewall avec le port 51820
                    je sui chez free avec une box delta


                    quand j'active le vpn je n'ai plus de connection
                    pui dans adguard je n'ai rien pas de graphique rien du tout ( je dois rajouter les clients ... ? )

                    edit: en fait c'et du au dns de cloudfare merci MattProd c'est résolu

                    un mois plus tard

                    bonjour a tous j'ai perdu mon mot de passe pour adguard une solution pour en mettre un nouveau ?

                      5 mois plus tard

                      Bonjour,
                      Je débute sur Docker.
                      J'ai réussi à créer le "docker", mais je ne comprends pas la configuration à réaliser à ce niveau-là :

                      Numéro 1, c'est le range dans laquelle wg-easy attribuera les ip des clients créés. On laisse bien le x à la fin.
                      Numéro 2 et numéro 3 vont de paires !
                      On déclare comme default dns 172.18.1.1 pour la configuration des clients, cette même ip qu'on attribue plus bas a ce container qui est lui-même serveur wireguard et adguard.

                      Mon réseau est en 192.168.1.X