Pi-hole en Unbound in docker

De onderstaande stappen en configuraties zijn gebaseerd op het gebruik van Docker Compose voor het installeren van Pi-hole en Unbound in Docker containers. Voor Unbound wordt gebruik gemaakt van de versie 1.18.0, gebaseerd op het Dockerfile van MatthewVance/unbound-docker, terwijl Pi-hole wordt ingezet met de standaard configuratie van docker-pi-hole.

Deze setup biedt een geïntegreerde oplossing voor DNS-beheer en advertentieblokkering op een Synology NAS, wat wordt bereikt door de volgende stappen:

SSH inschakelen op je Synology NAS:

  • SSH inschakelen op je Synology NAS:
  • Log in op DSM (DiskStation Manager).
  • Ga naar Configuratiescherm > Terminal & SNMP.
  • Vink SSH-service inschakelen aan en klik op Toepassen.

Verbinden met je NAS via SSH:

  • Gebruik een SSH-client zoals PuTTY (Windows) of de terminal (macOS/Linux).
  • Maak verbinding met je NAS door het volgende commando uit te voeren:
ssh [gebruikersnaam]@[IP-adres-van-je-NAS]

Identificeer de LAN-interface van de Synology:

  • Voer het volgende commando in:
/sbin/ifconfig -a
  • Noteer de naam van de LAN-interface, bijvoorbeeld ovs_eth0.

Creëer een macvlan netwerk:

  • Voer het volgende commando in, waarbij je [parent-interface] vervangt door de naam van de LAN-interface die je hebt geïdentificeerd:
sudo docker network create -d macvlan -o parent=[parent-interface] --subnet=192.168.10.0/24 --gateway=192.168.10.1 --ip-range=192.168.10.30/31 pihole_unbound_network

Maak de benodigde mappen aan:

  • Voer de volgende commando’s in:
mkdir -p /volume1/docker/pihole/dnsmasq.d
mkdir -p /volume1/docker/pihole/pihole
mkdir -p /volume1/docker/unbound

Bestanden downloaden naar de unbound map:

  • Download de benodigde bestanden van de Unbound configuratie van GitHub naar de unbound map die je eerder hebt aangemaakt.

https://gitea.ipalm.nl/palmw01/Unbound

Let op, er is geen forwarding opgenomen in de configuratie, dus alle DNS-queries worden rechtstreeks door de Unbound DNS-server zelf afgehandeld zonder doorverwijzing naar externe DNS-servers.

Docker Compose YAML-bestand maken:

  • Maak een Docker Compose YAML-bestand aan (docker-compose.yml) voor het deployen van de containers met behulp van Portainer.
version: "3.9"
services:
pihole:
image: pihole/pihole
container_name: pihole
mem_limit: 2g
cpu_shares: 768
security_opt:
- no-new-privileges:false
restart: on-failure:5
networks:
pihole_unbound_network:
ipv4_address: 192.168.10.30
pihole_bridge:
ipv4_address: 192.168.90.30
volumes:
- /volume1/docker/pihole/dnsmasq.d:/etc/dnsmasq.d:rw
- /volume1/docker/pihole/pihole:/etc/pihole:rw
environment:
WEB_BIND_ADDR: 192.168.10.30
WEB_PORT: 8080
WEBPASSWORD: [wachtwoord]
TZ: Europe/Amsterdam
DNSMASQ_USER: root
DNSMASQ_LISTENING: all
PIHOLE_DNS_1: 192.168.10.31
cap_add:
- NET_ADMIN

unbound:
image: mvance/unbound:latest
container_name: unbound
restart: on-failure:5
volumes:
- /volume1/docker/unbound:/opt/unbound/etc/unbound:rw
ports:
- "53:53/udp"
- "53:53/tcp"
- "8953:8953/tcp"
networks:
pihole_unbound_network:
ipv4_address: 192.168.10.31

networks:
pihole_bridge:
driver: bridge
ipam:
config:
- subnet: 192.168.90.0/24
gateway: 192.168.90.1
pihole_unbound_network:
external:
name: pihole_unbound_network
  • Vervang 192.168.10.30 en 192.168.10.31 door de gewenste IP-adressen binnen het subnet dat je eerder hebt ingesteld voor het macvlan netwerk.
  • Indien je dit vervangt moet je ook het gewenste IP-adres vervangen bij het WEB_BIND_ADDR (IP-adres Pi-Hole) en PIHOLE_DNS_1 (IP-adres Unbound).

Docker Compose stack deployen via Portainer:

  • Log in op Portainer en navigeer naar Stacks.
  • Klik op Add stack en plak de inhoud van je Docker Compose YAML-bestand (docker-compose.yml) in het veld.
  • Geef je stack een naam, bijvoorbeeld pihole_unbound_stack.
  • Klik op Deploy the stack.

Controleer de deployed services:

  • Ga naar Containers in Portainer om te controleren of de pihole en unbound containers correct zijn gestart.

Wijzig DNS-instellingen op Synology NAS:

  • Log in op DSM (DiskStation Manager) van je Synology NAS.
  • Navigeer naar Configuratiescherm > Netwerk > Algemeen.
  • Selecteer DNS-server handmatig configureren.
  • Verander de DNS-serverinstellingen naar het IP-adres dat je hebt ingesteld voor de pihole container in het Docker Compose YAML-bestand. Kies ook een alternatieve DNS-server zoals 1.1.1.1 om geen DNS problemen te krijgen met andere docker containers.
  • Klik op toepassen.

Wijzig de DNS-instellingen in je netwerk (bijvoorbeeld UniFi):

  • Log in op de beheerinterface van je netwerkapparatuur (bijvoorbeeld UniFi Controller).
  • Navigeer naar de instellingen voor je netwerk of VLAN waar je Synology NAS en andere apparaten zijn verbonden.
  • Wijzig de DNS-instellingen zodat de Pi-hole container als DNS-server wordt gebruikt.

Wijzig unbound.conf om unbound-control in te schakelen:

  • Log in op je Synology NAS via SSH.
  • Navigeer naar de unbound map waar je unbound.conf zich bevindt (bijvoorbeeld /volume1/docker/unbound).
  • Open het unbound.conf bestand met een teksteditor.
  • Zoek naar de regel die unbound-control instellingen bevat.
  • Verander de waarde van unbound-control van no naar yes.
  • Sla het bestand op en sluit de teksteditor af.

Herstart de Unbound-container:

  • Om de wijzigingen in unbound.conf toe te passen, herstart je de Unbound-container.
  • Ga terug naar Portainer of gebruik SSH om de Unbound-container te herstarten.
docker restart unbound

Gebruik unbound-control via SSH:

  • Met unbound-control kun je verschillende operationele commando’s uitvoeren op de Unbound DNS-server.
  • Gebruik het volgende commando via SSH om unbound-control commando’s uit te voeren:
docker exec unbound unbound-control <command>
  • Vervang <command> door het gewenste commando.

Lijst met beschikbare unbound-control commando’s:

  • status: Toon de huidige status van de Unbound-server.
  • reload: Herlaad de configuratie van de Unbound-server.
  • start: Start de Unbound DNS-server.
  • stop: Stop de Unbound DNS-server.
  • stats_noreset: Toon statistieken zonder deze te resetten.
  • flush_zone : Verwijder de cache voor een specifieke DNS-zone.
docker exec unbound unbound-control status
docker exec unbound unbound-control reload
docker exec unbound unbound-control stats_noreset

Een volledige lijst met de commands kun je vinden via:

https://unbound.docs.nlnetlabs.nl/en/latest/manpages/unbound-control.html

Door deze stappen te volgen, kun je unbound-control inschakelen, de Unbound DNS-server beheren en specifieke commando’s uitvoeren via SSH op je Synology NAS.

WordPress op Synology

Deze handleiding leidt je stap voor stap door het proces van het installeren van WordPress op je Synology NAS. Voordat je begint, zorg ervoor dat je een domeinnaam hebt geregistreerd en de benodigde software zoals MariaDB 10, phpMyAdmin, PHP 8.0, Apache HTTP Server 2.4 en Webstation hebt geïnstalleerd op je Synology NAS. We gebruiken DSM versie 7.2-64561 als referentie. Volg deze stappen om een functionele WordPress-website op te zetten die bereikbaar is via je eigen domeinnaam.

Vooraf benodigdheden

Domeinnaam bij Hosting Provider

  • Zorg dat je een domeinnaam hebt geregistreerd bij een hosting provider zoals transip.nl.

Juiste DNS-instellingen bij Hosting Provider

  • Configureer de DNS-instellingen van je domeinnaam om naar je Synology NAS te wijzen.

Port forwarding naar je Synology

  • Stel port forwarding in op je router voor poorten 80 en 443 naar je Synology NAS.

Softwarevereisten op Synology

  • Installeer MariaDB 10, phpMyAdmin, PHP 8.0, Apache HTTP Server 2.4 en Webstation op je Synology NAS.

Gebaseerd op versie DSM 7.2-64561

WordPress downloaden

  • Download de laatste versie van WordPress van https://nl.wordpress.org/download/.
  • Pak het gedownloade bestand uit en verplaats de inhoud naar de map /web op je Synology NAS. Je kunt deze map hernoemen naar een herkenbare naam.

Aanmaken database in phpMyAdmin

  • Log in op phpMyAdmin.
  • Ga naar Gebruikersaccounts en voeg een nieuwe gebruiker toe:
    • Onder Aanmeldingsformatie: Kies een gebruikersnaam en wachtwoord.
  • Onder Database voor gebruikersaccount: Maak een nieuwe database met dezelfde naam als de gebruiker en geef alle rechten.
  • Onder Globale rechten: Selecteer ‘Alle’ en klik op ‘Start’ onderaan om de gebruiker en database aan te maken.

Configureren van Webstation

  • Log in op Synology DSM.
  • Ga naar Webstation en maak een nieuwe website:
    • Kies voor Website in oorspronkelijke scripttaal.
    • Selecteer PHP versie (PHP 8.0).
  • Selecteer de map waarin je WordPress hebt geplaatst (bijvoorbeeld /web/wordpress).
  • Kies HTTP back-endserver (Apache HTTP Server 2.4).
  • Geef de website een naam en beschrijving, en maak de website aan.

Instellen van Let’s Encrypt certificaat

  • Ga naar Configuratiescherm > Beveiliging > Certificaat.
  • Voeg een nieuw certificaat toe:
    • Kies ‘Een nieuw certificaat toevoegen’.
    • Selecteer ‘Krijg een certificaat van Let’s Encrypt’.
    • Voer de domeinnaam in (bijv. domeinnaam.nl en je e-mailadres en klik op ‘Voltooid’.

Selecteer het certificaat voor de website:

  • Ga naar Configuratiescherm > Beveiliging > Certificaat > Instellingen
  • Selecteer vervolgens het juiste certificaat.
  • Klik op ‘Ok’ om het certificaat te installeren.

WordPress installatie voltooien

  • Ga naar je domeinnaam (bijv. http://domeinnaam.nl).
  • Je wordt doorverwezen naar de WordPress installatiepagina.
  • Vul de volgende gegevens in:
    • Databasenaam: Naam van de database die je hebt aangemaakt in phpMyAdmin.
    • Gebruikersnaam: Gebruikersnaam voor de database.
    • Wachtwoord: Wachtwoord voor de database.
    • Hostnaam: Meestal localhost.
  • Klik op ‘Verzenden’ en volg de installatie-instructies:
  • Kies een sitetitel, gebruikersnaam, wachtwoord en e-mailadres.
  • Klik op ‘WordPress installeren’.

Afronding

WordPress is nu succesvol geïnstalleerd op je Synology NAS. Je kunt inloggen op WordPress via http://domeinnaam.nl/wp-admin. Vergeet niet regelmatig updates uit te voeren voor zowel WordPress als de bijbehorende software op je Synology NAS.ia domeinnaam/wp-admin.