Skip to content

Latest commit

 

History

History
167 lines (116 loc) · 6.29 KB

File metadata and controls

167 lines (116 loc) · 6.29 KB

🛰️ Pi-hole Maintenance PRO MAX

Automatisiertes Pi-hole v6 Wartungsskript

Build License Buy Me a Coffee

Tech

Sprachen: 🇩🇪 Deutsch (diese Datei) • 🇬🇧 English


Was & Warum

Pi-hole v6 Wartung für Raspberry Pi OS (Bookworm/Trixie) mit Logging und Healthchecks.

Features

  • APT update/upgrade/autoremove/autoclean
  • Pi-hole Update (-up), Gravity (-g), optionaler FTL-Restart (--restart-ftl)
  • Healthchecks: Port 53, dig, GitHub-Erreichbarkeit
  • Optional: Tailscale-Info, FTL-Toplisten via sqlite3
  • Performance-Dashboard & intelligente Zusammenfassung
  • Lokales Backup vor Pi-hole-Änderungen
  • Installer setzt automatisch einen wöchentlichen Cron (0 4 * * 0) (idempotent)
  • Logs: /var/log/pihole_maintenance_pro_<timestamp>.log

Schnellstart

Installer:

bash -c "$(curl -fsSL https://raw.githubusercontent.com/TimInTech/pihole-maintenance-pro/main/scripts/install.sh)"

Update / Überschreiben (sichere Re-Installation)

Zieht die aktuelle Version und überschreibt die vorhandene:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/TimInTech/pihole-maintenance-pro/main/scripts/install.sh)"

Uninstall (saubere Entfernung)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/TimInTech/pihole-maintenance-pro/main/scripts/uninstall.sh)"

Beide Befehle sind idempotent: Update ersetzt die installierte Datei; Uninstall entfernt Script, Logs, Temp-Daten und den Cron-Eintrag.

Flags

  • --no-apt – APT-Schritte (update/upgrade/autoremove/autoclean) überspringen.
  • --no-upgradekein pihole -up.
  • --no-gravitypihole -g (Blocklisten/Gravity) überspringen.
  • --no-dnsreload – veraltet unter v6 (No-Op).
  • --restart-ftl – pihole-FTL am Ende neustarten (nur bei Bedarf).
  • --backup – Backup vor Pi-hole-Operationen unter /var/backups/pihole/.
  • --json – JSON-Ausgabe statt farbiger Zusammenfassung.

Manuell:

cd ~
wget -O pihole_maintenance_pro.sh https://raw.githubusercontent.com/TimInTech/pihole-maintenance-pro/main/pihole_maintenance_pro.sh
chmod +x pihole_maintenance_pro.sh
sudo install -m 0755 pihole_maintenance_pro.sh /usr/local/bin/pihole_maintenance_pro.sh

Interaktiv:

sudo /usr/local/bin/pihole_maintenance_pro.sh

Mit Flags:

sudo /usr/local/bin/pihole_maintenance_pro.sh --no-apt --no-upgrade --no-gravity --no-dnsreload

Beispielausgabe (echtes Pi-hole v6)

Aufgenommen auf einem Raspberry Pi mit Pi-hole Core 6.1.4, Web 6.2.1, FTL 6.2.3 – so sieht das aktuelle Dashboard + die Zusammenfassung live aus:

╔═══════════════ PERFORMANCE DASHBOARD ═══════════════╗
║ 🚀 Load: 1.81     💾 RAM: 23%    🌡  Temp: 50°C    🗄  Disk: 9% ║
╚═══════════════════════════════════════════════════════╝

════════ INTELLIGENTE ZUSAMMENFASSUNG ════════
  #00  🌍 Network    IP: 192.168.178.21                 ✔ OK
  #03  🛡  Pi-hole    v6.1.4                         ✔ OK
  #07  🔍 Health     4 listeners                        ✔ OK
  #08  🌐 DNS Ext    172.217.16.78                      ✔ OK
  #09  🏠 DNS Local  127.0.0.1                          ✔ OK
  #12  📊 FTL Query  24h: 141222 queries, 1% blocked    ✔ OK
  #13  👥 FTL Client 25 active clients                  ✔ OK

Hinweis zur Ausgabe (v5.3.2-Refresh): Die Live-Zeilen pro Schritt nutzen jetzt ein vereinheitlichtes, zeitgestempeltes Format ([HH:MM:SS] OK|WARN|ERR …) statt ✔ Erfolg/⚠ Warnung. Das oben gezeigte Dashboard und die Zusammenfassung bleiben unverändert. SIGINT/SIGTERM (Strg-C) erzeugen die Zusammenfassung und räumen das Temp-Verzeichnis nun genau einmal auf. Alle Flags, JSON-Ausgabe und Steps sind identisch.

Der reale Lauf bestätigt außerdem:

  • Backups werden vor Pi-hole-Wartung erstellt (z. B. /etc/pihole/backup_20251025_100315, /etc/pihole/backup_20251025_100337)
  • Der Installer setzt automatisch den empfohlenen Cron: 0 4 * * 0 /usr/local/bin/pihole_maintenance_pro.sh >>/var/log/pihole_maint_cron.log 2>&1
  • Security-Block (Steps 20–26) und Healthchecks (Steps 07–10) laufen ohne Warnungen durch

Empfohlene Cronjobs:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
*/30 * * * * /usr/local/bin/pihole_api_healthcheck.sh >> /var/log/pihole_healthcheck.log 2>&1
30 3 * * * /usr/local/bin/pihole_maintenance_pro.sh >> /var/log/pihole_maintenance_pro.log 2>&1

Trixie/Cron nutzt einen reduzierten PATH. Mit vollem PATH laufen beide Skripte zuverlässig. Der Installer setzt den wöchentlichen Cron jetzt idempotent.

Hinweis zu Pi-hole v6 API

  • setupVars.conf entfällt
  • Konfiguration in /etc/pihole/pihole.toml
  • API unter /api (nicht /api.php)
  • Authentifizierung mittels Session: POST /api/authsid, danach Header X-FTL-SID
  • Healthcheck (tools/pihole_api_healthcheck.sh) nutzt PIHOLE_API_URL und optional PIHOLE_PASSWORD zum Login
  • Unbound ist optional

Troubleshooting

  • sqlite3 für Top-Listen:

    sudo apt update && sudo apt install -y sqlite3
  • Locale-Warnungen:

    echo -e "en_GB.UTF-8 UTF-8\nde_DE.UTF-8 UTF-8" | sudo tee /etc/locale.gen >/dev/null
    sudo locale-gen && sudo update-locale LANG=de_DE.UTF-8 LC_ALL=de_DE.UTF-8
  • Hinweis linux-image-rpi-v8 auf Pi 3B: ignorierbar.

Lizenz

MIT. Siehe LICENSE.

Zuletzt aktualisiert: 2025-10-10 • Version: 5.3.2

Support

Wenn dir dieses Projekt hilft, kannst du es hier unterstützen: buymeacoffee.com/timintech