[Tuto] installation de AdGuard Home en Docker sur Raspberry Pi

EVOTk a dit:
Salut,
Pour la commande docker run, j'aurai plutôt vu comme ceci :

Code:
docker run -d --name="Adguardhome" --net=adguard-network -v /adguard/workdir:/opt/adguardhome/work -v /adguard/confdir:/opt/adguardhome/conf --restart=unless-stopped adguard/adguardhome

La commande -d doit se trouver juste apres "run"
AH ? J'ai pris la commande que tu as indiqué sur ton tuto :whistle:
Je n'y ai toujours pas accès via http://10.0.0.7 Je suis presque convaincu que mon routeur bloque ce flux et j'avoue avoir regardé je ne trouve pas le moyen de le laisser faire. Une idée pour ne pas passer par un sous-réseau ? Peut-être l'utilisation d'un port avec un reverse ?
 
Si le macvlan est bien dans la plage d'ip du routeur, il n'y a aucune réson qu'il bloque.

Peut tu publier les logs du conteneur adguard ?
 
EVOTk a dit:
Si le macvlan est bien dans la plage d'ip du routeur, il n'y a aucune réson qu'il bloque.
OK je comprends
EVOTk a dit:
Peut tu publier les logs du conteneur adguard ?
Les voici :
Code:
2021/04/30 18:59:19 [info] AdGuard Home, version v0.106.1,
2021/04/30 18:59:19 [info] This is the first time AdGuard Home is launched,
2021/04/30 18:59:19 [info] Checking if AdGuard Home has necessary permissions,
2021/04/30 18:59:19 [info] AdGuard Home can bind to port 53,
2021/04/30 18:59:19 [info] Initializing auth module: /opt/adguardhome/work/data/sessions.db,
2021/04/30 18:59:19 [info] auth: initialized.  users:0  sessions:0,
2021/04/30 18:59:19 [info] Initialize web module,
2021/04/30 18:59:19 [info] This is the first launch of AdGuard Home, redirecting everything to /install.html ,
2021/04/30 18:59:19 [info] AdGuard Home is available on the following addresses:,
2021/04/30 18:59:19 [info] Go to http://127.0.0.1:3000,
2021/04/30 18:59:19 [info] Go to http://10.0.0.7:3000,
 
EVOTk a dit:
Te connecte tu bien a l'adresse http://10.0.0.7:3000 comme demandé dans le logs ?
Je n'atteins rien.
Par acquis de conscience, j'ai même ouvert le port 3000 sur l'IP 10.0.0.7 sans succès
 
Dans la commande de création du macvlan "-o parent=wlan0", tu est bien sur du wlan0 ?

Tu as un routeur derriere la livebox, mais on est d'accord que la machine avec adguard, et le pc avec lequel tu souhaite y acceder sont connecter tout les deux a ce 2eme routeur ?
 
EVOTk a dit:
Dans la commande de création du macvlan "-o parent=wlan0", tu est bien sur du wlan0 ?

Tu as un routeur derriere la livebox, mais on est d'accord que la machine avec adguard, et le pc avec lequel tu souhaite y acceder sont connecter tout les deux a ce 2eme routeur ?
Tout est derrière le dit routeur oui.
Par contre, j'ai l'impression qu'en réalisant le sous-réseau j'ai créé de nouvelles interfaces dans le RPI.
RfcGlSW.png
 
Ton raspberry est connecté en ethernet ? en wifi ?

Que donne la commande :
Code:
ifconfig

Si tu souhaite supprimer ton macvlan :
On stop le conteneur : sudo docker stop Adguardhome
On le supprime : sudo docker rm Adguardhome
On supprime le reseau : sudo docker network rm adguard-network
 
EVOTk a dit:
Ton raspberry est connecté en ethernet ? en wifi ?

Que donne la commande :
Code:
ifconfig

Si tu souhaite supprimer ton macvlan :
On stop le conteneur : sudo docker stop Adguardhome
On le supprime : sudo docker rm Adguardhome
On supprime le reseau : sudo docker network rm adguard-network
Bon j'ai tout supprimé et j'obtiens ceci avec ifconfig
Code:
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 fe80::42:84ff:fe21:5b1f  prefixlen 64  scopeid 0x20<link>
        ether 02:42:84:21:5b:1f  txqueuelen 0  (Ethernet)
        RX packets 3749  bytes 7633124 (7.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4779  bytes 1867472 (1.7 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        ether dc:a6:32:6f:b4:fe  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Boucle locale)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth15e0eeb: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.126.234  netmask 255.255.0.0  broadcast 169.254.255.255
        inet6 fe80::60f9:bd97:44fd:511f  prefixlen 64  scopeid 0x20<link>
        ether 12:25:20:a3:f9:47  txqueuelen 0  (Ethernet)
        RX packets 3129  bytes 7337222 (6.9 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4237  bytes 1592070 (1.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

veth42c8926: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 169.254.146.216  netmask 255.255.0.0  broadcast 169.254.255.255
        inet6 fe80::8c66:28ff:fe85:c502  prefixlen 64  scopeid 0x20<link>
        inet6 fe80::4730:db09:31e1:1a81  prefixlen 64  scopeid 0x20<link>
        ether 8e:66:28:85:c5:02  txqueuelen 0  (Ethernet)
        RX packets 28  bytes 2802 (2.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 146  bytes 36223 (35.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.6  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::5774:417c:920d:de3a  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:6f:b4:ff  txqueuelen 1000  (Ethernet)
        RX packets 13749  bytes 8547686 (8.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8500  bytes 8374917 (7.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
 
Code:
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.6  netmask 255.255.255.0  broadcast 10.0.0.255
        inet6 fe80::5774:417c:920d:de3a  prefixlen 64  scopeid 0x20<link>
        ether dc:a6:32:6f:b4:ff  txqueuelen 1000  (Ethernet)
        RX packets 13749  bytes 8547686 (8.1 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 8500  bytes 8374917 (7.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Donc tu est bien en Wifi.
A mon sens, le soucis est là.

Je ne trouve aucune erreur dans ta config, les logs sont ok. J'en déduit que le macvlan n'est pas compatible avec une interface wifi.
 
OK. Alors tu me proposes quelle solution ? Pour AdGuard, je suis obligé de passer sur un sous-réseau ?
 
Pour un serveur DNS c'est un peu bizarre de le connecter en wifi je trouve :) Un serveur DNS on s'attend a des réponses rapides, ...

Ton raspberry te sert a d'autre chose ?

Si les ports d'adguard sont libre sur ton raspberry tu peu l'installer en mode host :

Code:
docker run -d --name adguardhome --net host -v /media/adguard/workdir:/opt/adguardhome/work -v /media/adguard/confdir:/opt/adguardhome/conf  --restart unless-stopped adguard/adguardhome
 
EVOTk a dit:
Pour un serveur DNS c'est un peu bizarre de le connecter en wifi je trouve :) Un serveur DNS on s'attend a des réponses rapides, ...

Je n'ai pas pensé qu'il servait de DNS AdGuard ^^ J'utilise déjà CloudFare comme DNS. AdGuard est plus sécurisé que CloudFare ?
 
AdGuard est un serveur DNS, mais ou tu pourra lui inclure des filtres. Lui meme va apres chercher les infos sur le serveur DNS de ton choix.
 
EVOTk a dit:
AdGuard est un serveur DNS, mais ou tu pourra lui inclure des filtres. Lui meme va apres chercher les infos sur le serveur DNS de ton choix.
Ah OK ! Bon je vais me co en eth demain et réinitialiser mon installation afin avoir du propre. Je te tiens au jus
 
Essaye effectivement en connexion ethernet.

// -- Mais je ne vois pas pourquoi le macvlan ne fonctionnerait pas avec une connexion wifi... -- //
Par contre, je me demande si ton adresse macvlan est dans le plage du DHCP.
Il est souvent conseillé que les IP macvlan soient en-dehors de la plage du DHCP du routeur.

PS : il est impossible d'avoir plusieurs réseau macvlan, donc si tu envisages un futur conteneur en macvlan, il faudra supprimer puis recréer le réseau macvlan pour y mettre plusieurs IP.

PPS : tu n'as que le routeur comme moyen de connexion à internet ?

edit : ha bah en fait le macvlan ne semble pas fonctionner sur du WLAN... : https://stackoverflow.com/a/67126254
http://hicu.be/macvlan-vs-ipvlan


Edit 2 : Si tu retentes le macvlan, voilà mon docker-compose.yml qui fonctionne bien :) (faut juste avoir créé le réseau avant)
Mon réseau macvlan contient plusieurs IP.
Code:
##==============================================================================================
##                                                                                            ##
##                   Fichier docker-compose.yml pour Adguard-Home en macvlan                  ##
##                                                                                            ##
##==============================================================================================

##============================================================================================##
##                                                                                            ##
## Attention, il faut créer le réseau macvlan à l'aide du script : macvlan-network.sh         ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.2.210                  ##
## Cette IP doit être dans la plage d'IP mavclan définie dans le script de création du réseau.##
## Le conteneur sera donc vu comme une machine sur le réseau LAN, mais ne pourra pas être     ##
## joint par le NAS lui-même.                                                                 ##
## Pour celà, il faut utiliser le second script : boot-bridgemacvlan-interface.sh             ##
## Ce dernier va créer une IP-interface virtuelle qui pourra être accessible par le NAS.      ##
## Cette interface ne persiste pas au démarrage, il faudra mettre le script en tâche          ##
## planifiée avec le planificateur de tâches dans DSM.                                        ##
##                                                                                            ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/       ##
##                                                                                            ##
##                                         Attention !                                        ##
##                                                                                            ##
## Ces deux scripts ne sont à utiliser qu'une seule fois, quelque soit le nombre de           ##
## conteneurs qui en bénéficieront.                                                           ##
## Par exemple, si vous utilisez 2 conteneurs en macvlan, une fois le réseau macvlan créé     ##
## pour le 1er, il est inutile (et impossible) de le recréer.                                 ##
## Le script boot-bridgemacvlan-interface.sh ne doit être lancé qu'une seule fois, et à       ##
## chaque reboot. L'IP virtuelle est unique, il ne faut pas en recréer une seconde.           ##
##                                                                                            ##
##==============================================================================================

---
version: "2.4"
services:
  adguardhome_macvlan:
    image: adguard/adguardhome:latest   # https://github.com/AdguardTeam/AdGuardHome
                                        # https://github.com/AdguardTeam/AdGuardHome/wiki/Docker
    container_name: adguardhome_macvlan
    
    hostname: AdGuard-Home--DS920+      # Permet d'avoir un nom pour le conteneur dans AdGuard lui même (sinon c'est une chaine aléatoire)
    
    environment:
      - PUID=1000  # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - PGID=100   # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - TZ=Europe/Paris
      - LANG=fr_FR.UTF8
      - LANGUAGE=fr_FR.UTF8

    # ---------------------------------------------------------------------------------
    # Le label ci-dessous permet à Watchtower de faire les mises à jour automatiquement
    # Cela peut-être supprimé si Watchtower n'est pas utilisé.
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    # ---------------------------------------------------------------------------------

    volumes:
      - "/volume1/docker/adguardhome_macvlan/work:/opt/adguardhome/work"
      - "/volume1/docker/adguardhome_macvlan/conf:/opt/adguardhome/conf" 

    # La déclaration des ports n'est pas utile lors d'une installation en macvlan, car tous les ports seront directement accessible
    # avec l'IP virtuelle.
    # ports:
    #   -  "953:53"
    #   -  "967:67/udp"
    #   -  "968:68"
    #   -  "8080:80/tcp"
    #   -  "9443:443/tcp"
    #   -  "9853:853/tcp"
    #   -  "3030:3000/tcp"

    networks:
      macvlan-network:
        ipv4_address: 192.168.xxx.yyy     # Mettre ici l'IP macvlan dans la plage définie dans les scripts

    restart: unless-stopped

    healthcheck:
      test: "/bin/netstat -pant | /bin/grep 53"
      interval: 45s
      timeout: 30s
      retries: 3

networks:
  macvlan-network:        # Ce réseau devra bien entendu être créé avant avec le script annexe ou avec Portainer.
    external: true


Et pour créer le réseau macvlan, j'utilise ça : il y a pas mal de commentaires pour comprendre avec des liens de calculateurs de masque de sous-réseau CIDR

Code:
#!/bin/bash

##============================================================================================##
##                            Script macvlan-network.sh                                       ##
##                                                                                            ##
## Script de création d'interface virtuelle pour les conteneurs Swag at AdGuard Home          ##
## Voir tutos :                                                                               ##
## https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/                   ##
##                                                                                            ##
## Les IPs prévues pour les conteneurs sont :                                                 ##
## - AdGuard-Home : 192.168.xxx.yyy                                                           ##
## - Pi-Hole :      192.168.xxx.ooo                                                           ## 
##                                                                                            ##
## Rappels des différentes IP :                                                               ##
## - Plage d'IP macvlan :  192.168.xxx.MMM/28                                                 ##
## - IP virtuelle unique : 192.168.xxx.zzz/32                                                 ##
## - IP conteneur n°1 :    192.168.xxx.yyy                                                    ##
## - IP conteneur n°2 :    192.168.xxx.ooo                                                    ##
## - Plage d'IP du LAN :   192.168.xxx.0/24                                                   ##
## - Passerelle/routeur :  192.168.xxx.1                                                      ##
##                                                                                            ##
##==============================================================================================

##==============================================================================================
##                                                                                            ##
## --ip-range=192.168.xxx.MMM/28 : cela correspond à la plage d'IP pour le réseau macvlan     ##
## sachant que 192.168.xxx.MMM doit être la 1ère IP donnée par les calculateurs internet.     ##
## Il se peut que ce ne soit pas la même que l'IP macvlan que l'on veut donner au conteneur   ##
## AdGuardHome.                                                                               ##
##                                                                                            ##
## Quelques calculateurs internet :                                                           ##
## https://cric.grenoble.cnrs.fr/Administrateurs/Outils/CalculMasque/                         ##
## https://www.cidr.eu/en/calculator/+/192.168.2.208/28                                       ##
##                                                                                            ##
##==============================================================================================


docker network create -d macvlan \
--subnet=192.168.xxx.0/24 \
--ip-range=192.168.xxx.MMM/28 \
--gateway=192.168.xxx.1 \
-o parent=ovs_eth0 \              # Ici, ovs_eth0 est à remplacer par votre interface réseau : eth0 ou autre...
macvlan-network




Et sinon, si tu veux juste du mode HOST :
Code:
##==============================================================================================
##                                                                                            ##
##                     Fichier docker-compose.yml pour Adguard-Home en HOST                   ##
##                                                                                            ##
##==============================================================================================

---
version: "2.4"
services:
  adguardhome_host:
    image: adguard/adguardhome:latest   # https://github.com/AdguardTeam/AdGuardHome
                                        # https://github.com/AdguardTeam/AdGuardHome/wiki/Docker
    container_name: adguardhome_host
    
    hostname: AdGuard-Home--DS920+      # Permet d'avoir un nom pour le conteneur dans AdGuard lui même (sinon c'est une chaine aléatoire)
    
    environment:
      - PUID=1000  # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - PGID=100   # Utiliser la commande (en SSH) : id NOM_UTILISATEUR
      - TZ=Europe/Paris
      - LANG=fr_FR.UTF8
      - LANGUAGE=fr_FR.UTF8

    # ---------------------------------------------------------------------------------
    # Le label ci-dessous permet à Watchtower de faire les mises à jour automatiquement
    # Cela peut-être supprimé si Watchtower n'est pas utilisé.
    labels:
      - "com.centurylinklabs.watchtower.enable=true"
    # ---------------------------------------------------------------------------------

    volumes:
      - "/volume1/docker/adguardhome_macvlan/work:/opt/adguardhome/work"
      - "/volume1/docker/adguardhome_macvlan/conf:/opt/adguardhome/conf" 

    # La déclaration des ports n'est pas utile lors d'une installation en macvlan, car tous les ports seront directement accessible
    # avec l'IP virtuelle.
    # ports:
    #   -  "953:53"
    #   -  "967:67/udp"
    #   -  "968:68"
    #   -  "8080:80/tcp"
    #   -  "9443:443/tcp"
    #   -  "9853:853/tcp"
    #   -  "3030:3000/tcp"

    network_mode: "host"      # The host networking driver only works on Linux hosts, and is not supported on Docker Desktop for Mac, Docker Desktop for Windows, or Docker EE for Windows Server.

    restart: unless-stopped

    healthcheck:
      test: "/bin/netstat -pant | /bin/grep 53"
      interval: 45s
      timeout: 30s
      retries: 3
 
Pas de difficultés pour installer AdGuard Home par contre en utilisation, j'ai pas mal de site auquel je n'arrive plus à me connecter si je passe par lui.
La configuration des paramètres n'est peut être pas la bonne.
 
@Dim33 Tes filtres sont probablement trop restrictifs.
Va dans le journal des requêtes, et débloque les sites qui sont bloqués.