Home » Blog

Project Router Addon - Part 2 - Zusammenspiel Pi-Hole und Nginx Proxy Manager

 · 5 Minute · Michael Bäcker

Wie bringen wir einen Mehrwert in unser Heimnetzwerk

Linux

Umkonfiguration Pi-Hole

Docker Compose Datei anpassen

Datei docker-compose.yaml

Wir ersetzen in der Datei den Part mit den Ports durch den network_mode

<     ports:
<       # DNS Ports
<       - "53:53/tcp"
<       - "53:53/udp"
<       # Default HTTP Port
<       - "7777:7777/tcp"
<       # Uncomment the below if using Pi-hole as your DHCP Server
<       - "67:67/udp"
---
>     network_mode: host

Danach sieht die Datei wie folgt aus:

services:
  pihole:
    deploy:
      replicas: 1
    container_name: pihole
    image: pihole/pihole:latest
    network_mode: host
    environment:
      # Set the appropriate timezone for your location (https://en.wikipedia.org/wiki/List_of_tz_database_time_zones), e.g:
      TZ: 'Europe/Berlin'
      # Set a password to access the web interface. Not setting one will result in a random password being assigned
      FTLCONF_webserver_api_password: 'correct horse battery staple'
    # Volumes store your data between container upgrades
    volumes:
      # For persisting Pi-hole's databases and common configuration file
      - './etc-pihole:/etc/pihole'
      # Uncomment the below if you have custom dnsmasq config files that you want to persist. Not needed for most starting fresh with Pi-hole v6. If you're upgrading from v5 you and have used this directory before, you should keep it enabled for the first v6 container start to allow for a complete migration. It can be removed afterwards. Needs environment variable FTLCONF_misc_etc_dnsmasq_d: 'true'
      - './etc-dnsmasq.d:/etc/dnsmasq.d'
      - './var-log-pihole:/var/log/pihole'
    cap_add:
      # See https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
      # Required if you are using Pi-hole as your DHCP server, else not needed
      - NET_ADMIN
      # Required if you are using Pi-hole as your NTP client to be able to set the host's system time
      - SYS_TIME
      # Optional, if Pi-hole should get some more processing time
      - SYS_NICE
    restart: unless-stopped

Webserver Port in pihole.toml setzen

Im Anschluss ändern wir in der Datei etc-pihole/pihole.toml die Portnummer des integrierten Webservers.

Im VI könnt ihr mit dem Symbol "/" eine Suche nach einem Begriff starten.

[webserver]
  ...
  port = "7777o,[::]:7777o"

Damit konfigurieren wir den eingebauten Webserver im Pi-Hole, damit er auf dem Port 7777 lauscht. Dieser Port wird dann durch das weiter oben gesetzte "network_mode: host" dann verwendet.

Konfiguration DHCP in der Pihole Weboberfläche

Im Interface von Pihole stellen wir ein:

  • Settings

    • DHCP

      • DHCP server enabled aktivieren
      • Start und End IP Adresses kontrollieren
      • Gateway und Netmask kontrollieren

Anschliessend dann den Pihole Container neu starten

  docker compose down

  docker compose up -d

Ob alles geklappt hat kann man sich in den Logs ansehen:

  docker compose logs -f
  # Mit STRG+C die Ausgabe beenden

Wichtig … euer Pihole Container lauscht nun aktuell auf dem Port 7777. Bitte beim Aufrufen der Pi-Hole Administrationsoberfläche daran denken. http://192.168.1.51:7777/

DHCP auf eurem Router deaktivieren

Fritz Box

  • Heimnetz

    • Netzwerk

      • Netzwerkeinstellungen

        • IPv4 Einstellungen

          • DHCP-Server aktivieren (bitte den Hacken raus nehmen)

Unifi Controller

  • Settings (Zahnrad links unten)

    • Networks

      • default

        • DHCP

          • DHCP Mode: None

Kontrolle, ob DHCP funktioniert

Nun kommt der spannenden Teil. In der Oberfläche von Pi-Hole beobachten wir nun die pihole.log Datei:

  • System

    • Tools

      • Tail log files

        • pihole.log

Wartet hier ab oder macht auf eurem Smartphone, Tablet mal WLAN aus und wieder an.

Im Logfile sollte etwas mit DHCPREQUEST und DHCPACK stehen.

Die verwendeten IP-Adressen, die per DHCP vergeben wurden, kann man auch ansehen in der Liste:

  • Settings

    • DHCP

      • Currently active DHCP leases

DNS Einträge in Pihole

DNS Einträge könnt ihr nun zukünftig in Pi-Hole machen.

  • System

    • Settings

      • Local DNS Records

Installation NGinx Proxy Manager

Docker Container einrichten

Wie üblich richten wir einen Docker Container ein mittels einer docker-compose.yaml Datei in einem eigenen Ordner.

services:
  app:
    image: 'jc21/nginx-proxy-manager:latest'
    restart: unless-stopped
    ports:
      # These ports are in format <host-port>:<container-port>
      - '80:80' # Public HTTP Port
      - '443:443' # Public HTTPS Port
      - '81:81' # Admin Web Port
      # Add any other Stream port you want to expose
      # - '21:21' # FTP

    # Uncomment the next line if you uncomment anything in the section
    environment:
      # Uncomment this if you want to change the location of
      # the SQLite DB file within the container
      DB_SQLITE_FILE: "/data/database.sqlite"

      # Uncomment this if IPv6 is not enabled on your host
      DISABLE_IPV6: 'true'

    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt

Dann legen wir noch auf die Schnelle die notwendigen Ordner an:

mkdir data letsencrypt

… und starten den Container.

  docker compose up
  # bzw.
  docker-compose up

Aufruf über die IP-Adresse und den Port 81. http://192.168.1.51:81/

Anmelden über:

  • Email Address: admin@example.com
  • Password: changeme

Quelle: https://nginxproxymanager.com/setup/#default-administrator-user

Einrichtung des ersten "virtuellen Hosts"

Im NGinx Proxy Manager richten wir den Proxy Host ein:

  • Hosts

    • Proxy Hosts

      • Add Proxy Host

        • Domain Names: pihole.home.baecker.com
        • Scheme: http
        • Forward Hostname / IP: 192.168.1.51
        • Forward Port: 7777

In Pihole richten wir einen DNS Namen oder einen CName ein:

  • Settings

    • Local DNS Records

      • Einen local DNS Record für eure Maschine
      • Domain: routeraddon.home.baecker.com
      • IP: 192.168.1.51
      • Einen local CNAME Record für euren virtuellen Host
      • Domain: pihole.home.baecker.com
      • Target: routeraddon.home.baecker.com

Und jetzt solltet ihr mittels http://pihole.home.baecker.com/admin/ auf euer Pi-Hole Webinterface zugreifen können.

SearXNG Container einbinden als zweiten "virtuellen Host"

Erst mal schnell das docker-compose.yaml File anlegen in einem eigenen Ordner:

services:
    searxng:
        image: searxng/searxng
        environment:
            - INSTANCE_NAME=searxng
            - 'BASE_URL=http://search.home.baecker.com/'
            - PUID=1000
            - PGID=1000
        volumes:
            - ./data:/etc/searxng
        ports:
            - '8999:8080'
        cap_add:
            - CHOWN
            - SETGID
            - SETUID
        user: 1000:1000
  mkdir data

  docker compose up -d
  # oder
  docker-compose up -d

  # Kontrolle ob er richtig läuft
  docker compose logs -f
  # oder
  docker-compose logs -f
  # Mit STRG+c die Ausgabe beenden

Im NGinx Proxy Manager richten wir den Proxy Host ein:

  • Hosts

    • Proxy Hosts

      • Add Proxy Host

        • Domain Names: search.home.baecker.com
        • Scheme: http
        • Forward Hostname / IP: 192.168.1.51
        • Forward Port: 8999

In Pihole richten wir einen DNS Namen oder einen CName ein:

  • Settings

    • Local DNS Records

      • Einen local CNAME Record für euren virtuellen Host
      • Domain: search.home.baecker.com
      • Target: routeraddon.home.baecker.com

Und jetzt solltet ihr mittels http://search.home.baecker.com/ auf die Startseite von SearXNG kommen