lebensbaum / contao-domain-manager-bundle
Zentrale Verwaltung, Synchronisation und Überwachung mehrerer Contao-Installationen
Package info
github.com/lebensbaum-gmbh/contao-domain-manager-bundle
Type:contao-bundle
pkg:composer/lebensbaum/contao-domain-manager-bundle
Requires
- php: ^8.3
- ext-openssl: *
- contao/core-bundle: ^5.7
- symfony/http-client: ^6.4 || ^7.0
Requires (Dev)
- contao/manager-plugin: ^2.0
- phpunit/phpunit: ^11.5
Conflicts
- contao/manager-plugin: <2.0 || >=3.0
This package is auto-updated.
Last update: 2026-08-27 13:50:13 UTC
README
Der Contao Domain Manager ermöglicht die zentrale Verwaltung, Synchronisation und Überwachung mehrerer Contao-Installationen in einer eigenen Contao-Installation.
Hauptdomains und zugehörige Installationen können im Backend verwaltet, mit den jeweiligen Zielsystemen verbunden und deren Systeminformationen zentral aktualisiert werden. Für das Frontend stehen eine geschützte Domainübersicht und umfangreiche Filter zur Verfügung.
Funktionen
- Verwaltung von Hauptdomains und zugehörigen Contao-Installationen
- Verbindungstest zu überwachten Installationen
- Einzel- und Sammelsynchronisation von Systeminformationen
- automatische Synchronisation über Contaos Cronjob-Framework
- konfigurierbares Auto-Sync-Intervall: stündlich, alle 6 Stunden, alle 12 Stunden oder täglich
- Status, letzter Versuch und letzter vollständiger Erfolg der automatischen Synchronisation
- Verwaltung beliebiger externer Dienste wie Monitoring, Hosting oder GitHub
- Zuordnung mehrerer externer Dienste pro Installation
- automatische Migration bestehender Trakked-Verknüpfungen aus Version 1.4
- automatische Übernahme von Contao-Version, PHP-Version, Datenbankname und DocumentRoot
- kompakte Anzeige des Webroots im Frontend, z. B.
/publicoder/web - Statussystem mit OK, Hinweis und Fehler
- Hinweise bei veralteter Synchronisation, fehlender System-Info-Konfiguration und
/webals Webroot - automatische Bewertung der Supportphase von Contao- und PHP-Versionen
- Status- und Zeitinformationen zur letzten Synchronisation
- Statusfilter für OK, Hinweis und Fehler
- Filter nach externen Diensten
- Notizen und Screenshots je Installation
- Rechteverwaltung für Backend-Benutzergruppen
- Frontend-Inhaltselement Domainübersicht
- Frontend-Inhaltselement Domainfilter
- responsives Standardlayout und Seitentheme
- anpassbare CSS-Custom-Properties
- Ersteinrichtungs-Assistent, der Theme, Seitenlayout, Seitenstruktur, Login, Fehlerseiten, Mitgliedergruppe und Inhaltselemente automatisch anlegt
Voraussetzungen
- Contao
^5.7 - PHP
^8.3 - PHP-Erweiterung
openssl
Für jede überwachte Zielinstallation wird zusätzlich benötigt:
lebensbaum/contao-system-info-bundle
Empfohlener Aufbau
Der Domain Manager sollte bevorzugt in einer eigenen, separaten Contao-Installation betrieben werden. Dadurch bleibt die Verwaltungsoberfläche von normalen Websites getrennt und der Ersteinrichtungs-Assistent kann eine dafür optimierte Seitenstruktur anlegen.
Beispiel für eine eigene Subdomain:
domainverwaltung.<ihre-domain.tld>
Der DocumentRoot der Contao-Installation sollte auf /public zeigen.
Installation des Domain Managers
1. Frisches Contao installieren
Installiere eine normale Contao-5.7-Installation, verbinde die Datenbank und lege einen Backend-Administrator an.
Es ist nicht erforderlich, vorher ein Theme, Seitenlayout, Seitenbaum oder Frontend-Modul anzulegen.
2. Domain Manager installieren
Installiere über den Contao Manager:
lebensbaum/contao-domain-manager-bundle
Führe anschließend die von Contao angebotenen Datenbankmigrationen aus.
3. Ersteinrichtung starten
Öffne im Backend:
Domainverwaltung → Ersteinrichtung
Der Assistent prüft zunächst, welche Bausteine bereits vorhanden sind. Fehlende Bausteine werden beim Klick auf Einrichtung vervollständigen in einer Transaktion angelegt. Bei einem Fehler wird der Vorgang vollständig zurückgerollt.
Bei einer frischen Installation legt der Assistent automatisch an:
- Frontend-Mitgliedergruppe Domainverwaltung
- Theme Domainverwaltung
- Seitenlayout Domainverwaltung
- Artikel-Modul in der Hauptspalte
- Startpunkt einer Website
- geschützte Seite Domainübersicht, Alias
index - ungeschützte Seite Login, Alias
login - Seite 401 – Nicht authentifiziert mit Weiterleitung auf Login
- Seite 403 – Zugriff verweigert mit Standardhinweis
- Frontend-Modul Domainverwaltung – Login
- Artikel und Überschriften für Domainübersicht und Login
- Inhaltselement Domainfilter
- Inhaltselement Domainübersicht
- Freigabe der Mitgliedergruppe in den Domain-Manager-Einstellungen
- Standardwert von 30 Tagen für die Synchronisationswarnung
Vorhandene passende Bausteine werden wiederverwendet. Ein erneuter Aufruf soll keine Duplikate erzeugen.
4. Frontend-Mitglied anlegen
Benutzername und Passwort werden bewusst nicht automatisch erzeugt.
Lege unter Benutzerverwaltung → Mitglieder mindestens ein Frontend-Mitglied an:
- Anmeldung aktivieren
- Benutzername und Passwort vergeben
- Mitgliedergruppe Domainverwaltung zuweisen
Die Ersteinrichtung prüft diesen Schritt. Solange kein aktives Mitglied der Gruppe vorhanden ist, erscheint ein entsprechender Hinweis. Sobald ein geeignetes Mitglied existiert, wird der Frontend-Zugang als vorbereitet angezeigt.
Damit ist die zentrale Domainverwaltung grundsätzlich einsatzbereit.
System-Info auf Zielinstallationen
Installiere auf jeder Contao-Installation, die überwacht oder synchronisiert werden soll, über den Contao Manager:
lebensbaum/contao-system-info-bundle
Nach der Installation erscheint im Backend unter System → System-Info die Verbindungskonfiguration.
Das System-Info-Bundle erzeugt automatisch:
- eine eindeutige Installations-ID
- ein zufälliges Secret
- den geschützten System-Info-Endpunkt
Es müssen keine .env-, Composer- oder sonstigen Konfigurationsdateien manuell bearbeitet werden.
Erste Zielinstallation hinzufügen
1. Zugangsdaten übernehmen
Auf der Zielinstallation unter System → System-Info:
- Installations-ID kopieren
- Secret anzeigen und kopieren
2. Hauptdomain anlegen
In der zentralen Installation unter Domainverwaltung → Hauptdomains eine Hauptdomain anlegen.
3. Installation hinzufügen
Unter der Hauptdomain eine Installation anlegen und mindestens eintragen:
- Domain der Installation
- Installations-ID
- Secret
Technische Daten wie Contao-Version, PHP-Version, Datenbankname und DocumentRoot werden bei der Synchronisation automatisch übernommen.
Der vollständige DocumentRoot bleibt intern gespeichert. Im Frontend wird bewusst nur der relevante Webroot angezeigt, z. B. /public oder /web.
4. Verbindung testen
Über Verbindung testen wird geprüft, ob die Zielinstallation erreichbar ist und die Zugangsdaten gültig sind.
5. Systemdaten synchronisieren
Im Frontend stehen je Hauptdomain Systemdaten aktualisieren sowie global Alle Systemdaten aktualisieren zur Verfügung.
Bei der Sammelsynchronisation werden alle Hauptdomains nacheinander verarbeitet. Ein Fehler bei einer Installation verhindert nicht die Aktualisierung der übrigen Einträge.
Automatische Synchronisation
Unter Domainverwaltung → Einstellungen kann die automatische Synchronisation aktiviert werden. Zur Auswahl stehen die Intervalle:
- stündlich
- alle 6 Stunden
- alle 12 Stunden
- täglich
Die eigentliche Synchronisation verwendet dieselbe zentrale Logik wie die manuelle Sammelsynchronisation. Fehler einzelner Hauptdomains oder Installationen verhindern nicht die Verarbeitung der übrigen Einträge.
Der Domain Manager speichert:
- den letzten automatischen Versuch
- die letzte vollständig erfolgreiche automatische Synchronisation
- den Status des letzten Laufs
- eine Zusammenfassung des Ergebnisses
Server-Cronjob erforderlich
Für eine zuverlässige automatische Synchronisation muss Contaos Cronjob-Framework regelmäßig per CLI gestartet werden. Der Domain Manager kann einen Cronjob auf Ebene des Hosting-Accounts oder Servers nicht selbst anlegen.
Empfohlen ist ein Server-Cronjob, der möglichst jede Minute folgenden Befehl ausführt:
php /pfad/zur/contao-installation/vendor/bin/contao-console contao:cron
Der konkrete PHP-Befehl hängt vom Hoster ab und kann z. B. auch /usr/bin/php84 oder /usr/bin/php85 lauten.
Der häufige Aufruf bedeutet nicht, dass jede Minute alle Synchronisationen laufen: Contao entscheidet selbst, welche registrierten Cronjobs fällig sind. Zusätzlich prüft der Domain Manager das konfigurierte Synchronisationsintervall.
In den Domain-Manager-Einstellungen wird ein Cron-Hinweis mit dem installationsbezogenen Kommando angezeigt. Der Status wird aus den tatsächlich erfolgten automatischen CLI-Läufen abgeleitet. Bleibt ein fälliger Lauf über das eingestellte Intervall plus einer kurzen Toleranzzeit hinaus aus, weist der Domain Manager auf die Cron-Konfiguration hin.
Externe Dienste
Unter Domainverwaltung → Externe Dienste können optionale externe Werkzeuge neutral hinterlegt werden, zum Beispiel:
- Monitoring-Dienste
- Hosting-Verwaltungen
- GitHub oder andere Repository-Dienste
- sonstige technische Verwaltungsoberflächen
Jeder Dienst erhält eine Bezeichnung und eine URL. Installationen können einem oder mehreren Diensten zugeordnet werden. Im Frontend erscheinen nur die tatsächlich konfigurierten Dienste und Zuordnungen.
Bei einem Update von Version 1.4 werden eine vorhandene Trakked-URL und bestehende Trakked-Zuordnungen automatisch in dieses neutrale System übernommen.
Automatisch erzeugte Seitenstruktur
Der Ersteinrichtungs-Assistent erzeugt standardmäßig:
Domainverwaltung Startpunkt einer Website
├── Domainübersicht Reguläre Seite, Alias index, geschützt
├── Login Reguläre Seite, Alias login, ungeschützt
├── 401 – Nicht authentifiziert
│ Weiterleitung auf Login
└── 403 – Zugriff verweigert
eigene Hinweisseite
Der typische Ablauf ist damit:
- nicht angemeldet → geschützte Domainübersicht → 401 → Login
- erfolgreiche Anmeldung → Domainübersicht
- angemeldet, aber nicht berechtigt → 403
- angemeldet und berechtigt → direkter Zugriff auf die Domainübersicht
Ersteinrichtung als Prüfer und Reparaturassistent
Die Ersteinrichtung ist nicht nur für neue Installationen gedacht. Sie erkennt auch auf bestehenden Installationen vorhandene Bestandteile und zeigt an, was fehlt.
Geprüft werden derzeit:
- Frontend-Mitgliedergruppe
- Theme
- Seitenlayout
- Startpunkt
- Seite Domainübersicht
- Seite Login
- 401-Seite
- 403-Seite
- Login-Modul
- Inhaltselement Domainfilter
- Inhaltselement Domainübersicht
Zusätzlich wird geprüft, ob mindestens ein aktives Frontend-Mitglied mit erlaubter Anmeldung der Mitgliedergruppe Domainverwaltung zugeordnet ist.
Status & Warnungen
Der Domain Manager bewertet Installationen mit OK, Hinweis oder Fehler. Die Hauptdomain übernimmt jeweils den schlechtesten Status ihrer Installationen.
Typische Bewertungen:
- Fehler bei fehlgeschlagener Synchronisation oder fehlgeschlagenem Verbindungstest
- Hinweis bei noch nicht getesteter bzw. unvollständig konfigurierter Verbindung
- Hinweis bei fehlender oder ungültiger System-Info-Installations-ID
- Hinweis bei noch nie erfolgter bzw. zu lange zurückliegender erfolgreicher Synchronisation
- Hinweis bei
/webals veraltetem Webroot - Hinweis während einer reinen Security-Supportphase einer Contao- oder PHP-Version
- Fehler, sobald eine bekannte Contao- oder PHP-Version ihr Supportende erreicht hat
Die Warnschwelle für veraltete Synchronisationen kann unter Domainverwaltung → Einstellungen angepasst werden. Standard sind 30 Tage.
Frontend-Ausgabe
Domainübersicht
Die Hauptdomains werden als aufklappbare Einträge dargestellt. Bereits in der kompakten Ansicht sichtbar sind unter anderem:
- aktuelle Zielinstallation
- Contao-Version
- PHP-Version
- Status
Im aufgeklappten Bereich erscheinen zusätzliche technische Daten und konkrete Statushinweise.
Bei aktivierter automatischer Synchronisation zeigt die Übersicht zusätzlich den letzten vollständigen Erfolg und den frühestmöglichen nächsten Lauf.
Domainfilter
Der Filter unterstützt unter anderem:
- Suchbegriff
- aktuelles Ziel
- externe Dienste
- Status OK, Hinweis, Fehler
- Contao-Version
- PHP-Version
- Umgebung
Mehrere Filter können kombiniert werden. Eine Hauptdomain bleibt sichtbar, sobald mindestens eine ihrer Installationen den gewählten Kriterien entspricht.
Gestaltung / CSS
Der Domain Manager liefert mehrere Stylesheets mit:
- Komponenten-Styling für Domainübersicht und Domainfilter
- responsivem Layout
- Seitentheme für Domainübersicht, Login und Fehlerseite
Die automatisch angelegte Seitenstruktur verwendet die vorgesehenen Klassen:
Domainübersicht-Seite: domainverwaltung-page
Login-Seite: domainverwaltung-login-page
403-Seite: domainverwaltung-error-page
Login-Modul: domainverwaltung-login
Eigene Farben und Gestaltung
Bundle-Dateien sollten nicht direkt geändert werden. Die wichtigsten Werte können über CSS-Custom-Properties überschrieben werden.
Beispiel:
body.domainverwaltung-page, body.domainverwaltung-login-page, body.domainverwaltung-error-page { --dm-theme-primary: #992228; --dm-theme-primary-hover: #741b20; --dm-theme-primary-soft: #f7ecee; --dm-theme-page: #f8f6f6; --dm-theme-surface: #ffffff; --dm-theme-text: #2b2b2b; --dm-theme-muted: #6b6b6b; --dm-theme-border: #ded7d9; --dm-theme-radius: 10px; --dm-theme-content-width: 1500px; --dm-theme-font-family: Arial, sans-serif; }
Weitere verfügbare Variablen umfassen unter anderem:
--dm-theme-primary
--dm-theme-primary-hover
--dm-theme-primary-soft
--dm-theme-page
--dm-theme-surface
--dm-theme-surface-soft
--dm-theme-text
--dm-theme-muted
--dm-theme-border
--dm-theme-border-light
--dm-theme-success
--dm-theme-success-soft
--dm-theme-warning
--dm-theme-warning-soft
--dm-theme-error
--dm-theme-error-soft
--dm-theme-radius
--dm-theme-shadow
--dm-theme-content-width
--dm-theme-font-family
Rechteverwaltung
Für Backend-Benutzergruppen können getrennte Rechte vergeben werden, unter anderem für:
- Bearbeiten von Hauptdomains und Installationen
- Bearbeiten externer Dienste
- Verbindungstests
- Ersetzen von Secrets
- globale Einstellungen
Die Ersteinrichtung steht ausschließlich Administratoren zur Verfügung.
Frontend-Aktionen zur Einzel- und Sammelsynchronisation werden unabhängig von den Backend-Rechten über die unter Domainverwaltung → Einstellungen freigegebenen Frontend-Mitgliedergruppen kontrolliert.
Sicherheit
- Secrets der Zielinstallationen werden verschlüsselt gespeichert.
- Der System-Info-Endpunkt verwendet eine signierte Authentifizierung.
- Die Domainübersicht ist standardmäßig als geschützte Frontend-Seite vorgesehen.
- Die automatische Ersteinrichtung ist nur für Backend-Administratoren verfügbar.
- Der Assistent arbeitet beim Anlegen mehrerer Bausteine innerhalb einer Datenbanktransaktion.
- Längere automatische Synchronisationen werden bewusst nur im CLI-Cron ausgeführt und nicht während normaler Frontend-Aufrufe.
Updates
Stabile Versionen werden über Packagist veröffentlicht. Empfohlen ist eine normale Composer-Versionsanforderung, z. B.:
^1.5
Entwicklungsstände wie dev-main oder Feature-Branches sind ausschließlich für Tests gedacht.
Lizenz
MIT
Support / Issues
Fehlerberichte und Verbesserungsvorschläge können über die GitHub-Issues des Projekts gemeldet werden.