2026-01-29 09:37:29 +01:00
2026-01-28 12:03:22 +01:00
2026-01-28 11:44:12 +01:00
2026-01-28 11:44:12 +01:00
2026-01-29 09:27:13 +01:00
2026-01-28 11:44:12 +01:00
2026-01-29 09:37:29 +01:00
2026-01-28 11:44:12 +01:00

Dokumentation: ISPConfig & Proxy Inventar (proxy-inventory.sh)

Beschreibung

Dieses Skript dient der automatisierten Inventarisierung und Statusprüfung aller in ISPConfig (Version 3.3.0p3) verwalteten Web-Domains. Es wurde speziell für ein Routed-Setup auf Hetzner-Systemen entwickelt, bei dem keine separaten MAC-Adressen verwendet werden.

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ür dig), 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

  1. Das Skript proxy-inventory.sh nach /usr/local/bin/ kopieren.
  2. Ausführungsrechte setzen: chmod +x /usr/local/bin/proxy-inventory.sh.
  3. Sicherstellen, dass die Datei /usr/local/bin/sync-ispconfig-proxy.conf lesbar ist und die Variablen DB_HOST, DB_USER, DB_PASS und DB_NAME definiert.

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.sh zur 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

| 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.conf` unter 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 -t` Syntax-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.
Description
Automated ISPConfig Edge Proxy ist ein automatisiertes Nginx-Gateway zur zentralen SSL-Terminierung und transparenten Weiterleitung von Web-Traffic an verteilte ISPConfig-Backends. Kurz-Charakteristik Zweck: Zentraler SSL-Endpunkt (Edge) für ISPConfig-gesteuerte vServer. Mechanismus: Ein Bash-Sync-Skript liest die ISPConfig-Master-DB aus und generiert on-the-fly Nginx-Reverse-Proxy-Konfigurationen. SSL-Management: Automatisiertes Zertifikats-Handling via acme.sh (Let's Encrypt) direkt auf dem Edge-Node. Routing: Transparente IPv6-Weitergabe an Apache-Backends, wobei die Konfigurationshoheit beim ISPConfig-Panel bleibt. Tech-Stack Nginx | Bash | MySQL/MariaDB | ISPConfig 3.x | acme.sh
Readme 74 KiB
Languages
Shell 100%