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 openSUSE Tumbleweed/Hidalgo).
- 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
| Script | Parameter | Beschreibung | Beispiel |
|---|---|---|---|
proxy-inventory.sh |
[DOMAIN] |
Filtert das Inventar nach Domainname; unterstützt Wildcards wie *. |
./proxy-inventory.sh "knut*" |
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
Nutzung & Parameter
Das Skript kann manuell oder via Cronjob aufgerufen werden:
./sync-ispconfig-proxy.sh [DOMAIN] [Optionen]
Parameter-Referenz
| Script | Parameter | Beschreibung | Beispiel |
|---|---|---|---|
sync-ispconfig-proxy.sh |
[DOMAIN] |
Synchronisiert gezielt nur eine bestimmte Domain oder deren Parent-Domain. | ./sync-ispconfig-proxy.sh example.com |
test |
Aktiviert den Test-Modus: Simuliert den Lauf ohne Änderungen an Nginx oder SSL. | ./sync-ispconfig-proxy.sh test |
|
force |
Erzwingt die Verarbeitung aller Domains, unabhängig vom Datalog-Status. | ./sync-ispconfig-proxy.sh force |
|
renew / repair |
Erzwingt eine Neuausstellung der SSL-Zertifikate via acme.sh. | ./sync-ispconfig-proxy.sh renew |
|
-debug |
Aktiviert den Debug-Modus und gibt u.a. die SQL-Queries in der Konsole aus. | ./sync-ispconfig-proxy.sh -debug |
ISPConfig Proxy Cleanup Script (sync-ispconfig-cleanup.sh)
Beschreibung
Dieses Skript dient der Bereinigung des Proxy-Servers von verwaisten Konfigurationsdateien. Es vergleicht die lokal unter /etc/nginx/conf.d/proxy_generated vorhandenen .conf-Dateien mit den aktiven Domains in der ISPConfig-Datenbank (Version 3.3.0p3). Dateien, die keiner aktiven Domain mehr zugeordnet sind und nicht auf einer geschützten Blocklist stehen, werden entfernt.
Kernfunktionen
- Verwaisten-Check: Identifiziert lokale Nginx-Konfigurationen, die in ISPConfig gelöscht oder deaktiviert wurden.
- Blocklist-Schutz: Ignoriert Dateien, die in der
proxy_based_server.confunter der Sektion[blocklist]definiert sind, um manuelle Spezialkonfigurationen zu schützen. - Sicherheits-Lock: Verwendet ein Lockfile (
/tmp/restart.cleanproxy.lock), um gleichzeitige Ausführungen zu verhindern. - Integritätsprüfung: Führt nach Löschvorgängen automatisch einen
nginx -tSyntax-Check durch, bevor der Dienst neu geladen wird.
Parameter-Referenz
| Parameter | Beschreibung | Beispiel |
|---|---|---|
-e / --execute |
Führt den Löschvorgang und den Nginx-Reload tatsächlich aus (Standard ist Dry-Run). | ./sync-ispconfig-cleanup.sh --execute |
-h / --help |
Zeigt die Hilfe und Nutzungsinformationen an. | ./sync-ispconfig-cleanup.sh --help |
Hinweis: Ohne den Parameter -e startet das Skript immer im Dry-Run Modus und zeigt lediglich an, welche Dateien gelöscht würden, ohne physische Änderungen am Dateisystem vorzunehmen.