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
| Parameter | Beschreibung | Beispiel |
|---|---|---|
[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 |
| Script | Parameter | Beschreibung |
| :--- | :--- | :--- |
proxy-inventory.sh |
[DOMAIN] |
Filtert das Inventar nach Domainname; unterstützt Wildcards wie *. |
ID <n> |
Filtert die Ergebnisliste nach einer spezifischen ISPConfig Server-ID. | |
PROXY <status> |
Filtert nach dem Proxy-Status: OK (vorhanden) oder FEHLT. |
|
DNS <status> |
Filtert nach dem DNS-Status: OK oder N/A. |
|
MODUS <typ> |
Filtert nach dem Modus: NORMAL oder DUMMY. |
|
-h / --help |
Zeigt die Hilfe-Seite mit Beispielen für das Inventar-Script an. |
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:
./sync-ispconfig-proxy.sh [DOMAIN] [Optionen]
Parameter-Referenz
| Parameter | Beschreibung | Beispiel |
|---|---|---|
[DOMAIN] |
Beschränkt die Ausführung auf eine spezifische Domain. | ./sync-ispconfig-proxy.sh example.com |
test |
Dry-Run: Simuliert alle Schritte ohne Nginx-Configs zu schreiben oder Dienste zu laden. | ./sync-ispconfig-proxy.sh test |
force |
Ignoriert den Zeitstempel/ID der letzten Änderung und verarbeitet den gesamten Bestand. | ./sync-ispconfig-proxy.sh force |
renew / repair |
Erzwingt die Neuausstellung aller betroffenen SSL-Zertifikate (acme.sh --force). | ./sync-ispconfig-proxy.sh renew |
-debug |
Aktiviert detaillierte Ausgaben (z.B. SQL-Queries und interne Variablen). | ./sync-ispconfig-proxy.sh -debug |
Kombination & Priorität
Die Parameter können kombiniert werden, um das Verhalten präzise zu steuern. Dabei gilt folgende Priorisierung:
- Sicherheits-Priorität (
test): Der Parametertestüberschreibt alle schreibenden Aktionen. Auch wennforceoderrenewgesetzt sind, wird im Testmodus nichts am System verändert. - Scope-Priorität (
[DOMAIN]vorforce): Wenn eine spezifischeDOMAINangegeben wird, hat diese Vorrang. Der Parameterforcewird in diesem Fall ignoriert, da das Skript gezielt nur diesen einen Datensatz anspricht. - Aktions-Priorität (
renew): Wirdrenewmitforcekombiniert, werden konsequent für alle in ISPConfig aktiven Domains die Zertifikate neu angefordert.
Gängige Kombinationen:
./sync-ispconfig-proxy.sh example.com renew: Erneuert gezielt nur das Zertifikat fürexample.com../sync-ispconfig-proxy.sh force -debug: Verarbeitet alle Domains neu und zeigt dabei die SQL-Abfragen zur Fehleranalyse an../sync-ispconfig-proxy.sh renew test: Simuliert die Erneuerung aller Zertifikate, ohne acme.sh tatsächlich aufzurufen.
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.