From dbfcc9363b29efa6e2b1d041c2aa47c6b0fa3f0b Mon Sep 17 00:00:00 2001 From: root Date: Wed, 25 Feb 2026 17:50:47 +0100 Subject: [PATCH] README.md aktualisiert --- README.md | 78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) diff --git a/README.md b/README.md index d073f2c..da53e94 100644 --- a/README.md +++ b/README.md @@ -71,3 +71,81 @@ Dieses Skript automatisiert die Synchronisation von Web-Domains zwischen einem * ## Nutzung & Parameter Das Skript kann manuell oder via Cronjob aufgerufen werden: + +### 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: +1. **Sicherheits-Priorität (`test`)**: Der Parameter `test` überschreibt alle schreibenden Aktionen. Auch wenn `force` oder `renew` gesetzt sind, wird im Testmodus nichts am System verändert. +2. **Scope-Priorität (`[DOMAIN]` vor `force`)**: Wenn eine spezifische `DOMAIN` angegeben wird, hat diese Vorrang. Der Parameter `force` wird in diesem Fall ignoriert, da das Skript gezielt nur diesen einen Datensatz anspricht. +3. **Aktions-Priorität (`renew`)**: Wird `renew` mit `force` kombiniert, werden konsequent für **alle** in ISPConfig aktiven Domains die Zertifikate neu angefordert. + +**Prioritäts-Regel:** 1. `test` (Verhindert jegliche Änderung) +2. `[DOMAIN]` (Beschränkt auf ein Ziel, ignoriert globalen `force`) +3. `force` (Erfasst alles, falls keine Domain definiert ist) + +--- + +# 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. + +--- + +# ISPConfig Proxy Nginx Template (`sync-ispconfig-nginx.tpl`) + +## Beschreibung +Dieses Template lagert die Erstellung der Nginx-Konfiguration aus dem Haupt-Sync-Skript aus. Es behebt spezifische Verbindungsprobleme, die bei iOS-Geräten (Safari) und WebDAV-Clients (Nextcloud/ownCloud) in einer IPv4-zu-IPv6-Proxy-Umgebung auftreten. + +## Gelöste Probleme (iOS / Safari & Nextcloud) +* **WebDAV-Authentifizierung:** Nginx reicht die Header `Authorization` und `Destination` standardmäßig nicht durch. Dies verhinderte Logins und Dateifreigaben in der iOS-App. +* **WebSocket-Protokollinkonsistenz:** Ein hart codiertes Blockieren (`proxy_hide_header Upgrade`) oder fehlerhaftes Erzwingen (`Connection "upgrade"`) führte zu Abbrüchen regulärer HTTP/2-Verbindungen unter Safari. +* **Timeouts bei großen Uploads:** Aktives Proxy-Buffering verursachte bei "Chunked Transfers" im Mobilfunknetz Verbindungsabbrüche. +* **Bash-Escaping-Fehler:** Die direkte Generierung der Nginx-Direktiven (wie `$host`) im Hauptskript war fehleranfällig. + +## Kernkonfiguration +Die implementierten Proxy-Parameter gewährleisten eine transparente Durchreichung an das IPv6-Backend: + +```nginx +proxy_http_version 1.1; +proxy_set_header Host $host; +proxy_set_header X-Real-IP $remote_addr; +proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Proto $scheme; + +# Dynamischer WebSocket Support +proxy_set_header Upgrade $http_upgrade; +proxy_set_header Connection $http_connection; + +# Transparente Header-Weitergabe für WebDAV +proxy_set_header Authorization $http_authorization; +proxy_pass_header Authorization; +proxy_set_header Destination $http_destination; + +# Optimierung für große Uploads +proxy_read_timeout 3600; +proxy_send_timeout 3600; +proxy_redirect off; +proxy_buffering off;