Sites-Konfiguration aus dem CMS nachziehen (Pull-Modell) #2
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/cms-config-sync"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Damit das CMS Sites automatisch anbinden kann, ohne dass jemand die
sites.yamlvon Hand pflegt.Warum Pull und nicht ein Schreib-Endpunkt
Naheliegend wäre
POST /api/sitesam Sammler. Dagegen sprechen zwei Dinge:config/sites.yamlist read-only gemountet — ein Schreib-Endpunkt bräuchte einen rw-Mount an genau der Datei, in der CORS-Domains und Auth-Keys stehen.Stattdessen holt der Sammler ab. Es gibt hier ohnehin schon einen 5-Minuten-Cron für die Traefik-Config; der neue Sync läuft direkt davor, damit neue Sites ohne zusätzliche Verzögerung ihr Zertifikat bekommen.
Was drin ist
cron/sync-sites.php— holt, validiert, schreibt atomar (tmp + rename) nach/app/data/sites-remote.yaml. Das Daten-Volume ist beschreibbar, also kein Mount-Umbau nötig.Config::mergeRemote()—config/sites.yamlgewinnt immer. Ein von Hand gepflegter Eintrag wird nie vom Sync überschrieben; Sites außerhalb des CMS bleiben so möglich.docker-compose.yml-Env,.env.example, README-Abschnitt.Fehlerverhalten
Bewusst konservativ — der Sammler soll nie Sites verlieren, nur weil das CMS hustet:
versionCMS_SYNC_URL/CMS_SYNC_SECRETleerSite-IDs und Keys werden vor dem Schreiben gegen ein Format geprüft; Keys ohne zugehörige Site fallen raus.
Getestet
Gegen den echten CMS-Endpunkt gelaufen (PHP 8.3): 4 Sites samt Domains, CNAMEs und Keys korrekt übernommen, die erzeugte YAML ist gültig.
php -lsauber für beide geänderten Dateien. Der Merge-Vorrang ist bisher nur gelesen, nicht im laufenden Container geprüft — das würde ich vor dem Deploy noch einmal live sehen wollen.Vor dem Deploy
CMS_SYNC_URLundCMS_SYNC_SECRETin die.env(Secret =TRACKER_SYNC_SECRETim CMS). Ohne die beiden ändert sich nichts am Verhalten.supercronic startet Jobs mit gleichem Schedule parallel — die Datei- Reihenfolge garantiert keine Ausfuehrungsreihenfolge. Der Kommentar ("laeuft davor") stimmte also nicht: eine neue CMS-Site haette ihr Zertifikat je nach Scheduling erst einen Zyklus spaeter bekommen. Jetzt beide Schritte in einer Crontab-Zeile, mit `;` statt `&&`, damit die Traefik-Config auch bei fehlgeschlagenem oder deaktiviertem Sync nachgezogen wird. README: Erst-Rollout braucht `docker compose up -d --build` — Cron-Script und Crontab stecken im Image, ohne Rebuild laeuft der Sync kommentarlos nie. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.Merge
Merge the changes and update on Forgejo.Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.