2222
2323## ✨ Features
2424
25- ✅ ** Ein-Klick-Installation** - Setup mit einem Befehl
26- ✅ ** DNS-Sicherheit** - Pi-hole + Unbound mit DNSSEC
27- ✅ ** Netzwerk-Monitoring** - NetAlertX Geräte-Tracking
28- ✅ ** API-Monitoring** - Python FastAPI + SQLite
29- ✅ ** Produktionsbereit** - Systemd-Hardening & Auto-Restart
30- ✅ ** Idempotent** - Sicher mehrfach ausführbar
25+ ✅ ** Ein-Klick-Installation** – Setup mit einem Befehl
26+ ✅ ** DNS-Sicherheit** – Pi-hole + Unbound mit DNSSEC
27+ ✅ ** Netzwerk-Monitoring** – NetAlertX Geräte-Tracking
28+ ✅ ** API-Monitoring** – Python FastAPI + SQLite
29+ ✅ ** Produktionsbereit** – Systemd-Hardening & Auto-Restart
30+ ✅ ** Idempotent** – Sicher mehrfach ausführbar
3131
3232---
3333
@@ -38,20 +38,20 @@ git clone https://github.com/TimInTech/Pi-hole-Unbound-PiAlert-Setup.git
3838cd Pi-hole-Unbound-PiAlert-Setup
3939chmod +x install.sh
4040sudo ./install.sh
41- ```
41+ ````
4242
4343** Fertig! ** 🎉 Ihr kompletter DNS-Sicherheits-Stack läuft jetzt.
4444
4545---
4646
4747# # 🧰 Was installiert wird
4848
49- | Komponente | Zweck | Zugriff |
50- | ------------| -------| ---------|
51- | ** 🕳️ Pi-hole** | DNS-Werbeblocker & Web-UI | ` http://[ihre-ip]/admin ` |
52- | ** 🔐 Unbound** | Rekursiver DNS + DNSSEC | ` 127.0.0.1:5335 ` |
53- | ** 📡 NetAlertX** | Netzwerkgeräte-Monitoring | ` http://[ihre-ip]:20211 ` |
54- | ** 🐍 Python API** | Monitoring & Statistik-API | ` http://127.0.0.1:8090 ` |
49+ | Komponente | Zweck | Zugriff |
50+ | ----------------- | --------------------------------- | ------------------------ |
51+ | ** 🕳️ Pi-hole** | DNS-Werbeblocker & Web-Oberfläche | ` http://[ihre-ip]/admin` |
52+ | ** 🔐 Unbound** | Rekursiver DNS + DNSSEC | ` 127.0.0.1:5335` |
53+ | ** 📡 NetAlertX** | Netzwerkgeräte-Monitoring | ` http://[ihre-ip]:20211` |
54+ | ** 🐍 Python API** | Monitoring- & Statistik-API | ` http://127.0.0.1:8090` |
5555
5656---
5757
@@ -77,6 +77,7 @@ sudo ./install.sh
7777```
7878
7979**Datenfluss:**
80+
80811. **Clients** → Pi-hole (DNS-Filterung)
81822. **Pi-hole** → Unbound (rekursive Auflösung)
82833. **Unbound** → Root-Server (DNSSEC-Validierung)
@@ -87,15 +88,32 @@ sudo ./install.sh
8788
8889## 🔌 API-Referenz
8990
91+ #### `GET /leases`
92+
93+ ```json
94+ [
95+ {
96+ "ip": "192.168.1.101",
97+ "mac": "aa:bb:cc:dd:ee:ff",
98+ "hostname": "drucker",
99+ "lease_start": "2024-12-21 10:00:00",
100+ "lease_end": "2024-12-21 12:00:00"
101+ }
102+ ]
103+ ```
104+
90105### Authentifizierung
91- Alle Endpunkte benötigen ` X-API-Key ` -Header:
106+
107+ Alle Endpunkte benötigen den ` X-API-Key ` -Header:
108+
92109``` bash
93- curl -H " X-API-Key: ihr-api-key " http://127.0.0.1:8090/endpoint
110+ curl -H " X-API-Key: $SUITE_API_KEY " http://127.0.0.1:8090/endpoint
94111```
95112
96113### Endpunkte
97114
98115#### ` GET /health `
116+
99117``` json
100118{
101119 "ok" : true ,
@@ -105,6 +123,7 @@ curl -H "X-API-Key: ihr-api-key" http://127.0.0.1:8090/endpoint
105123```
106124
107125#### ` GET /dns?limit=50 `
126+
108127``` json
109128[
110129 {
@@ -117,6 +136,7 @@ curl -H "X-API-Key: ihr-api-key" http://127.0.0.1:8090/endpoint
117136```
118137
119138#### ` GET /devices `
139+
120140``` json
121141[
122142 {
@@ -130,6 +150,7 @@ curl -H "X-API-Key: ihr-api-key" http://127.0.0.1:8090/endpoint
130150```
131151
132152#### ` GET /stats `
153+
133154``` json
134155{
135156 "total_dns_logs" : 1250 ,
@@ -143,21 +164,24 @@ curl -H "X-API-Key: ihr-api-key" http://127.0.0.1:8090/endpoint
143164## 🛠️ Manuelle Schritte (Optional)
144165
145166### Pi-hole-Konfiguration
146- 1 . Admin-Interface aufrufen: ` http://[ihre-ip]/admin `
167+
168+ 1 . Admin-Oberfläche aufrufen: ` http://[ihre-ip]/admin `
1471692 . ** Einstellungen → DNS** navigieren
148- 3 . ** Custom upstream ** prüfen : ` 127.0.0.1#5335 `
149- 4 . Geräte konfigurieren, um Pi-hole als DNS-Server zu verwenden
170+ 3 . ** Custom Upstream ** setzen : ` 127.0.0.1#5335 `
171+ 4 . Geräte im Netzwerk konfigurieren, um Pi-hole als DNS-Server zu nutzen
150172
151173### NetAlertX-Setup
152- - Dashboard aufrufen: ` http://[ihre-ip]:20211 `
153- - Scan-Zeitpläne und Benachrichtigungen konfigurieren
154- - Netzwerk-Topologie und Geräteliste überprüfen
174+
175+ * Dashboard aufrufen: ` http://[ihre-ip]:20211 `
176+ * Scan-Zeitpläne und Benachrichtigungen konfigurieren
177+ * Netzwerk-Topologie und Geräteliste prüfen
155178
156179---
157180
158181## 🧪 Gesundheitschecks & Problembehandlung
159182
160183### Schneller Gesundheitscheck
184+
161185``` bash
162186# Unbound testen
163187dig @127.0.0.1 -p 5335 example.com
@@ -173,6 +197,7 @@ curl -H "X-API-Key: $SUITE_API_KEY" http://127.0.0.1:8090/health
173197```
174198
175199### Service-Verwaltung
200+
176201``` bash
177202# Services prüfen
178203systemctl status pihole-suite unbound pihole-FTL
@@ -190,32 +215,35 @@ docker restart netalertx
190215
191216### Häufige Probleme
192217
193- | Problem | Lösung |
194- | ---------| --------|
195- | ** Port 53 belegt** | ` sudo systemctl stop systemd-resolved ` |
196- | ** API-Key fehlt** | ` .env ` -Datei prüfen oder mit Installer neu generieren |
197- | ** Datenbankfehler** | ` python scripts/bootstrap.py ` ausführen |
198- | ** Unbound startet nicht** | ` /etc/unbound/unbound.conf.d/pi-hole.conf ` prüfen |
218+ | Problem | Lösung |
219+ | ------------------------- | -------------------------------------------------------------------------------------------- |
220+ | ** Port 53 belegt** | ` sudo systemctl stop systemd-resolved ` * (ggf. dauerhaft: disable + /etc/resolv.conf prüfen) * |
221+ | ** API-Key fehlt** | ` .env ` -Datei prüfen oder mit Installer neu generieren |
222+ | ** Datenbankfehler** | ` python scripts/bootstrap.py ` ausführen |
223+ | ** Unbound startet nicht** | ` /etc/unbound/unbound.conf.d/pi-hole.conf ` prüfen |
199224
200225---
201226
202227## 🧯 Sicherheitshinweise
203228
204229### 🔐 API-Sicherheit
205- - ** API-Keys** werden automatisch generiert (16-Byte Hex)
206- - ** CORS** nur für localhost aktiviert
207- - ** Authentifizierung** für alle Endpunkte erforderlich
230+
231+ * ** API-Keys** werden automatisch generiert (16-Byte Hex)
232+ * ** CORS** nur für localhost aktiviert
233+ * ** Authentifizierung** für alle Endpunkte erforderlich
208234
209235### 🛡️ Systemd-Hardening
210- - ** NoNewPrivileges** verhindert Rechte-Eskalation
211- - ** ProtectSystem=strict** Schreibschutz für Dateisystem
212- - ** PrivateTmp** isolierte temporäre Verzeichnisse
213- - ** Memory-Limits** verhindern Ressourcen-Erschöpfung
236+
237+ * ` NoNewPrivileges ` verhindert Rechte-Eskalation
238+ * ` ProtectSystem=strict ` schützt das Dateisystem
239+ * ` PrivateTmp ` isoliert temporäre Verzeichnisse
240+ * Speicherlimits verhindern Ressourcenüberlastung
214241
215242### 🔒 Netzwerk-Sicherheit
216- - ** Unbound** nur auf localhost (nicht exponiert)
217- - ** DNS über TLS** zu Upstream-Resolvern
218- - ** DNSSEC** -Validierung aktiviert
243+
244+ * ** Unbound** lauscht nur auf ` localhost `
245+ * DNS über TLS zu Upstream-Resolvern
246+ * DNSSEC-Validierung ist aktiviert
219247
220248---
221249
@@ -231,19 +259,19 @@ docker restart netalertx
231259
232260## 📜 Lizenz
233261
234- Dieses Projekt ist unter der ** MIT-Lizenz** lizenziert - siehe [ LICENSE] ( LICENSE ) -Datei.
262+ Dieses Projekt ist unter der ** MIT-Lizenz** lizenziert – siehe [ LICENSE] ( LICENSE ) -Datei.
235263
236264---
237265
238266## 📈 Changelog
239267
240- Siehe [ CHANGELOG.md] ( CHANGELOG.md ) für Versionshistorie und Updates.
268+ Siehe [ CHANGELOG.md] ( CHANGELOG.md ) für Versionsverlauf und Updates.
241269
242270---
243271
244272<div align =" center " >
245273
246- ** Mit ❤️ für die Pi-hole-Community erstellt **
274+ ** Mit ❤️ für die Pi-hole-Community entwickelt **
247275
248276[ 🐛 Bug melden] ( https://github.com/TimInTech/Pi-hole-Unbound-PiAlert-Setup/issues ) •
249277[ ✨ Feature anfordern] ( https://github.com/TimInTech/Pi-hole-Unbound-PiAlert-Setup/issues ) •
0 commit comments