Merge pull request 'Ajout de AdGuardHome en macvlan' (#40) from MilesTEG into master

Reviewed-on: #40
This commit is contained in:
NightPumpkin 2021-03-22 18:42:31 +01:00
commit 85ca0ace7b
3 changed files with 100 additions and 0 deletions

View File

@ -0,0 +1,60 @@
##=======================================================================================================##
## ##
## Attention, il faut créer le réseau macvlan à l'aide du script : docker_network_create_macvlan.sh , ##
## ou avec Portainer. ##
## Ce dernier va créer un réseau macvlan ayant comme IP unique 192.168.xxx.yyy ##
## 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 : bridgemacvlan-interface.sh ##
## Ce dernier va créer une IP-interface virtuelle 192.168.xxx.zzz 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/ ##
## ##
##=======================================================================================================##
---
version: "2.4"
services:
adguardhome_macvlan:
image: adguard/adguardhome:latest # https://github.com/AdguardTeam/AdGuardHome
container_name: adguardhome_macvlan
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 définie dans les scripts
restart: unless-stopped
networks:
macvlan-network: # Ce réseau devra bien entendu être créé avant avec le script annexe ou avec Portainer.
external: true

View File

@ -0,0 +1,39 @@
#!/bin/bash
##========================================================================================##
## Script bridgemacvlan-interface.sh ##
## ##
## Script de création d'interface virtuelle pour le conteneur AdGuardHome_macvlan ##
## Voir tuto : https://www.nas-forum.com/forum/topic/69319-tuto-docker-macvlan-pi-hole/ ##
## ##
##========================================================================================##
# Set timeout to wait host network is up and running
sleep 60
echo "$(date "+%R:%S - ") Script de création d'une interface virtuelle pour le NAS"
echo "$(date "+%R:%S - ") Exécution des commandes..."
ip link add macv0 link ovs_eth0 type macvlan mode bridge # macv0 : est le nom données à l'interface virtuelle
# ovs_eth0 : est l'interface réseau utilisée sur le NAS (lorsque VMM est utilisé)
ip addr add 192.168.xxx.zzz/32 dev macv0 # Adresse IP virtuelle 192.168.x.zzz/32 -- Il faut que cette adresse soit libre dans le réseau
# et qu'elle ne fasse pas partie du DHCP du routeur/box
ip link set dev macv0 address 5E:00:01:02:03:04 # MAC adresse pour l'adaptateur ayant l'IP virtuelle
# Il faut que l'adresse MAC respecte ces conditions :
# - Elle n'existe pas déjà sur mon hôte et sur mon réseau.
# - Elle respecte la base hexadécimale, les notations allant de 0 à F.
# - Le premier nombre doit être pair, ici 5E = 94 en base 10, c'est donc OK (vous pouvez
# utiliser un convertisseur en ligne, ou faire vos divisions euclidiennes).
# S'il est impair, vous aurez un message :
# RTNETLINK answers: Cannot assign requested address
ip link set macv0 up
ip route add 192.168.xxx.yyy/32 dev macv0 # 192.168.xxx.yyy/32 : Adresse macvlan du conteneur AdguardHome_macvlan sur lequel
# faire pointer l'IP virtuelle ( 1 seule adresse unique avec le /32 )
# C'est l'adresse du network macvlan-network créée avant de lancer le script.
# Utiliser Portainer ou l'interface Docker ou encore le script : create-macvlan-network.sh
#
echo "$(date "+%R:%S - ") Script terminé"
exit

View File

@ -0,0 +1 @@
docker network create -d macvlan --subnet=192.168.xxx.0/24 --ip-range=192.168.x.yyy/28 --gateway=192.168.xxx.1 -o parent=ovs_eth0 macvlan-network