README.md geändert
This commit is contained in:
114
README.md
114
README.md
@@ -1 +1,113 @@
|
|||||||
x
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 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:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./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.
|
||||||
|
|||||||
Reference in New Issue
Block a user