Pi-Hole

Pi-Hole ist ein DNS-basierter Werbefilter. Ich habe ihn nativ installiert damit ich mich nicht mit Docker und IPv6 herumschlagen muss und als DNS-Server in meiner Fritzbox eingetragen. Dazu gibt es schon genug Tutorials, deshalb wiederhole ich das hier nicht. Dabei wird auch ein cronjob angelegt (/etc/cron.d/pihole), welcher dafür sorgt, dass die Ad-Lists und pihole selbst regelmäßig aktualisiert werden.

Pausieren von pihole mithilfe von homeassistant

Da ich das Webinterface von pihole nicht benötige und nicht allzu viel auf meinem Pi laufen lassen möchte, habe ich mich dagegen entschieden, den Webserver zu installieren. Allerdings wollte ich dennoch eine einfache Möglichkeit haben, pihole für ein paar Minuten zu deaktivieren, sollte es notwendig sein. Hätte ich den Webserver mitinstalliert, hätte ich die pihole Integration nutzen können. So musste ich mir anderweitig behelfen.

Einrichtung des Pause-Knopfs

Homeassistant bietet die Möglichkeit, ein lokales Skript mithilfe der Shell Command Integration auszuführen. Da ich jedoch Docker für meine Homeassistant-Instanz verwende, konnte ich nicht direkt auf pihole zugreifen und musste zunächst herausfinden, welche Dateien und Ordner ich in meinen Container mounten muss. Ich habe der docker-compose.yml noch folgende volumes hinzugefügt:

version: '3'
services:
  homeassistant:
    container_name: homeassistant
    image: "ghcr.io/home-assistant/home-assistant:stable"
    volumes:
      - /usr/local/bin/pihole:/usr/local/bin/pihole
      - /opt/pihole:/opt/pihole
      - /etc/pihole:/etc/pihole

Außerdem musste ich der configuration.yaml von Homeassistant folgendes hinzufügen:

shell_command:
  pihole_pause: /usr/local/bin/pihole disable 5m

homeassistant:
  allowlist_external_dirs:
    - "/opt"
    - "/etc/pihole"

Anschließend habe ich einen Button-Helper und eine Automatisierung erstellt. Immer wenn der Knopf gedrückt wird, wird der Shell-Command ausgeführt. Hier die Automatisierung:

alias: Disable Pihole
trigger:
  - platform: state
    entity_id:
      - input_button.disable_pihole
action:
  - service: shell_command.pihole_pause
mode: single

Auslesen des aktuellen pihole-status

Damit ich in Homeassistant sehen kann, ob pihole gerade aktiv ist oder nicht, habe ich mir einen Sensor angelegt. Besonders schön ist es nicht geworden, da der Sensor entweder BLOCKING_ENABLED=true oder BLOCKING_ENABLED=false anzeigt, aber es ist besser als nichts. Dazu habe ich der configuration.yaml einen Sensor hinzugefügt:

sensor:
  - platform: file
    file_path: /etc/pihole/setupVars.conf
    name: pihole

Der Sensor liest immer die letzte Zeile der Datei aus, in meinem Fall ist das zum Glück genau die die ich brauche. Man kann den Sensor auch noch etwas hübscher gestalten, indem man dem customize-Abschnitt in der configuration.yaml folgendes hinzufügt:

customize:
  sensor.pihole:
    icon: mdi:pi-hole
Zuletzt aktualisiert am