5.0 KiB
Dokumentation: ISPConfig & Proxy Inventar (proxy-inventory.sh)
Beschreibung
Dieses Skript dient der automatisierten Statusprüfung aller in ISPConfig (Version 3.3.0p3) verwalteten Web-Domains. Das Tool gleicht den Datenbankbestand mit der tatsächlichen Nginx-Konfiguration auf dem Proxy-Server ab und validiert den aktuellen DNS-Status.
Kernfunktionen
- Datenbank-Abgleich: Extrahiert aktive Web-Domains (
vhost,alias,subdomain) direkt aus der ISPConfig-Datenbank. - Proxy-Validierung: Prüft die Existenz der zugehörigen Nginx-Konfigurationsdateien im definierten Verzeichnis.
- Routing-Analyse: Liest die Ziel-IP (
proxy_pass) aus den generierten Konfigurationen aus. - DNS-Live-Check: Verifiziert mittels
dig, ob der AAAA-Record der Domain korrekt auf die Infrastruktur zeigt. - Automatischer Export: Generiert eine tabellarische Übersicht unter
/var/www/html/proxy_inventory.txt.
Voraussetzungen
- System: Linux-basiert (getestet auf Debian 12, Proxmox Hostserver mit LCX und VM als Client. Proxysever VM).
- Abhängigkeiten:
mysql-client,bind9-host(fürdig),grep,sed. - Konfigurationsdateien:
/usr/local/bin/sync-ispconfig-proxy.conf: Enthält Datenbank-Zugangsdaten./usr/local/bin/proxy_based_server.conf: Enthält die Liste der zu prüfenden Quell-Server.
Installation & Einrichtung
- Das Skript
proxy-inventory.shnach/usr/local/bin/kopieren. - Ausführungsrechte setzen:
chmod +x /usr/local/bin/proxy-inventory.sh. - Sicherstellen, dass die Datei
/usr/local/bin/sync-ispconfig-proxy.conflesbar ist und die VariablenDB_HOST,DB_USER,DB_PASSundDB_NAMEdefiniert.
Nutzung
Das Skript kann ohne Parameter zur vollständigen Inventarisierung oder mit Filtern aufgerufen werden:
| Parameter | Beschreibung | Beispiel |
| DOMAIN | Filtert nach Domainname (Wildcards möglich) | ./proxy-inventory.sh knut* |
| ID <n> | Filtert nach der ISPConfig Server-ID | ./proxy-inventory.sh ID 17 |
| PROXY <status> | Filtert nach Proxy-Status (OK / FEHLT) | ./proxy-inventory.sh PROXY FEHLT |
| DNS <status> | Filtert nach DNS-Status (OK / N/A) | ./proxy-inventory.sh DNS N/A |
| MODUS <typ> | Filtert nach Modus (NORMAL / DUMMY) | ./proxy-inventory.sh MODUS DUMMY |
Status-Definitionen
- PROXY OK: Nginx-Konfigurationsdatei ist vorhanden.
- PROXY FEHLT: Domain in ISPConfig aktiv, aber keine Proxy-Konfiguration gefunden.
- DNS OK: AAAA-Record der Domain zeigt auf das korrekte Ziel.
- DNS N/A: Domain löst nicht auf oder zeigt auf eine abweicheichende IPv6.
Parameter-Referenz
| Parameter | Beschreibung | Beispiel |
| [DOMAIN] | Filtert das Inventar nach Domainname (unterstützt Wildcards wie *). | ./proxy-inventory.sh "suchwort*" |
| ID <n> | Filtert die Ergebnisliste nach einer spezifischen ISPConfig Server-ID. | ./proxy-inventory.sh ID 17 |
| PROXY <status> | Filtert nach dem Proxy-Status: OK (vorhanden) oder FEHLT. | ./proxy-inventory.sh PROXY FEHLT |
| DNS <status> | Filtert nach dem DNS-Status: OK oder N/A. | ./proxy-inventory.sh DNS N/A |
| MODUS <typ> | Filtert nach dem Modus: NORMAL oder DUMMY. | ./proxy-inventory.sh MODUS DUMMY |
| -h / --help | Zeigt die Hilfe-Seite mit Beispielen für das Inventar-Script an. | ./proxy-inventory.sh --help |
ISPConfig Proxy Sync Script (sync-ispconfig-proxy.sh)
Beschreibung
Dieses Skript automatisiert die Synchronisation von Web-Domains zwischen einem ISPConfig-Master (Version 3.3.0p3) und einem Nginx-Proxy-Server. Es überwacht Änderungen in der ISPConfig-Datenbank und generiert dynamisch Nginx-Vhost-Konfigurationen inklusive SSL-Zertifikatsverwaltung via acme.sh.
Kernfunktionen
- Safe Lock Mechanism: Verwendet
lockfile, um parallele Ausführungen zu verhindern und die Systemstabilität zu gewährleisten. - Datalog-basierte Synchronisation: Erkennt Änderungen effizient über die
sys_datalog-Tabelle, anstatt bei jedem Durchlauf alle Domains zu verarbeiten. - Auto-Subdomain Support: Erkennt automatisch die ISPConfig-Einstellung für
www.Subdomains und inkludiert diese in die Nginx-Konfiguration sowie in das SSL-Zertifikat. - SSL/TLS Automatisierung: Integriert
acme.shzur automatischen Ausstellung und Erneuerung von Let's Encrypt (ECC) Zertifikaten. - Routed-IP Logik: Unterstützt IPv6-Routing und mappt spezifische interne Netze (z.B.
::113) automatisch auf die korrekten Ziel-IPs. - Hybrid-Serving: Erkennt lokale Web-Verzeichnisse (
/var/www/domain/web) und konfiguriert Nginx so, dass statische Dateien lokal bedient und dynamische Anfragen an den Backend-Server weitergeleitet werden.
Konfiguration & Dateien
- Konfiguration:
/usr/local/bin/sync-ispconfig-proxy.conf. - Server-Liste:
/usr/local/bin/proxy_based_server.conf(Definiert die zu synchronisierenden Quell-Server). - Status-Speicher:
/var/local/sync-ispconfig-last-id(Speichert den letzten verarbeiteten Datenbank-Index).
Nutzung & Parameter
Das Skript kann manuell oder via Cronjob aufgerufen werden: