Lors de vocaux endiablé avec la bande sur discord, nous cherchions quoi faire de notre VPS chez Oracle.
On est partit pour installer un wireguard en container avec wg-easy, puis y'en à un qui à dit :
- "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...
Pour au final tomber sur l'image adwireguard-dark.
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 a juste 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/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...

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 )
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:latest
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
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 acceder à tes containers en interne avec leur ip:port