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