Ein modernes, schlankes AddOn zum Sperren des REDAXO Frontends und/oder Backends während Wartungsarbeiten.
- Frontend-Sperre mit eleganter und anpassbarer Wartungsseite
- Backend-Sperre für Redakteure (Admins haben immer Zugriff)
- Domain-spezifische Sperren für Multidomains mit YRewrite
- Passwort-Bypass zum Testen des Frontends im Wartungsmodus
- Automatischer Zugang für angemeldete Benutzer (konfigurierbar)
- IP-Whitelist mit einfacher Übernahme der aktuellen IP-Adresse
- Konfigurierbare HTTP-Statuscodes (503, 403, 307) mit Retry-After Header
- Konsolen-Befehle für Remote-Management
- Das AddOn über den REDAXO Installer installieren oder von GitHub herunterladen und installieren.
- Konfigurieren Sie die Einstellungen über das REDAXO-Backend.
Im Tab "Frontend" können Sie:
- Den Wartungsmodus aktivieren oder deaktivieren
- Den Titel und die Nachricht für die Wartungsseite anpassen
- Ein Passwort für den Testzugang festlegen
- Festlegen, ob angemeldete Benutzer Zugriff haben sollen
- IP-Adressen hinzufügen, die immer Zugriff haben
- Den HTTP-Statuscode (503, 403, 307) und Retry-After Header konfigurieren
Im Tab "Backend" können Sie:
- Den Wartungsmodus für das Backend aktivieren oder deaktivieren (sperrt alle Benutzer außer Administratoren)
Wenn YRewrite installiert ist, können Sie im Tab "Domains":
- Den Wartungsmodus für einzelne Domains aktivieren oder deaktivieren
Sie können die Wartungsseite anpassen, indem Sie ein eigenes Fragment erstellen:
- Erstellen Sie den Ordner
fragments/upkeep
in Ihrem Project-AddOn - Kopieren Sie die Datei
fragments/upkeep/frontend.php
aus dem Upkeep-AddOn dorthin - Passen Sie den Inhalt der Datei nach Ihren Wünschen an
Sie können den Wartungsmodus auch über die Konsole aktivieren oder deaktivieren:
# Frontend-Wartungsmodus aktivieren
php redaxo/bin/console upkeep:mode frontend on
# Frontend-Wartungsmodus deaktivieren
php redaxo/bin/console upkeep:mode frontend off
# Backend-Wartungsmodus aktivieren
php redaxo/bin/console upkeep:mode backend on
# Backend-Wartungsmodus deaktivieren
php redaxo/bin/console upkeep:mode backend off
Das Upkeep-AddOn bietet eine REST-API, mit der Sie den Wartungsmodus programmgesteuert abfragen und ändern können. Dies ist besonders nützlich für automatisierte Wartungsabläufe, CI/CD-Pipelines oder Monitoring.
- Navigieren Sie zu den Frontend-Einstellungen des AddOns
- Im Abschnitt "API-Einstellungen" können Sie einen API-Token generieren oder selbst eingeben
- Der Token wird für alle API-Anfragen benötigt
- Lassen Sie das Token-Feld leer, um die API zu deaktivieren
Die API wird über den REDAXO-API-Mechanismus aufgerufen:
https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=AKTION
Alle API-Anfragen benötigen folgende Parameter:
rex-api-call=upkeep
: Ruft die Upkeep-API auftoken=IHR_API_TOKEN
: Authentifizierung mit Ihrem API-Tokenaction=AKTION
: Die auszuführende Aktion
Alle Anfragen liefern JSON-Antworten zurück.
Ruft den aktuellen Status aller Wartungsmodi ab.
index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=status
Beispielantwort:
{
"success": true,
"frontend_active": true,
"backend_active": false,
"all_domains_locked": false
}
Aktiviert oder deaktiviert den Frontend-Wartungsmodus.
index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=1
Parameter:
status=1
: Aktivieren des Wartungsmodusstatus=0
: Deaktivieren des Wartungsmodus
Beispielantwort:
{
"success": true,
"frontend_active": true
}
Aktiviert oder deaktiviert den Backend-Wartungsmodus.
index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_backend&status=1
Parameter:
status=1
: Aktivieren des Wartungsmodusstatus=0
: Deaktivieren des Wartungsmodus
Beispielantwort:
{
"success": true,
"backend_active": true
}
Aktiviert oder deaktiviert den Wartungsmodus für alle YRewrite-Domains auf einmal.
index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_all_domains&status=1
Parameter:
status=1
: Alle Domains sperrenstatus=0
: Domainsperre aufheben
Beispielantwort:
{
"success": true,
"all_domains_locked": true
}
Aktiviert oder deaktiviert den Wartungsmodus für eine bestimmte YRewrite-Domain.
index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_domain&domain=example.com&status=1
Parameter:
domain=DOMAIN_NAME
: Name der Domain (z.B. example.com)status=1
: Domain sperrenstatus=0
: Domain entsperren
Beispielantwort:
{
"success": true,
"domain": "example.com",
"status": true
}
#!/bin/bash
# Wartungsmodus aktivieren vor Backup oder Deployment
curl "https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=1"
# Backup- oder Deployment-Prozess hier...
# Wartungsmodus wieder deaktivieren
curl "https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=0"
<?php
// Wartungsmodus aktivieren
$response = file_get_contents('https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=1');
$result = json_decode($response, true);
if ($result['success']) {
// Wartungsarbeiten durchführen...
// Wartungsmodus wieder deaktivieren
file_get_contents('https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=0');
}
// Status abfragen
fetch('https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=status')
.then(response => response.json())
.then(data => {
console.log('Wartungsmodus Status:', data);
});
// Wartungsmodus aktivieren
fetch('https://example.com/index.php?rex-api-call=upkeep&token=IHR_API_TOKEN&action=set_frontend&status=1')
.then(response => response.json())
.then(data => {
if (data.success) {
console.log('Wartungsmodus aktiviert');
}
});
Bei ungültigen oder fehlerhaften Anfragen gibt die API einen entsprechenden Fehlercode zurück:
{
"success": false,
"error": "Invalid token"
}
Mögliche Fehlermeldungen:
"Invalid token"
: Der API-Token ist ungültig oder fehlt"Invalid action"
: Die angegebene Aktion wird nicht unterstützt"Domain not found"
: Die angegebene Domain existiert nicht"Invalid domain or YRewrite not available"
: YRewrite ist nicht verfügbar oder die Domain ist ungültig
HTTP-Statuscodes:
200 OK
: Anfrage erfolgreich400 Bad Request
: Ungültige Anfrage401 Unauthorized
: Ungültiger API-Token
- Bewahren Sie Ihren API-Token sicher auf
- Setzen Sie den Token zurück, wenn Sie vermuten, dass er kompromittiert wurde
- Verwenden Sie nach Möglichkeit HTTPS für alle API-Aufrufe
- Beschränken Sie den Zugriff auf die API über Ihre Server-Konfiguration
- Die API bietet keine Ratengrenzwerte, implementieren Sie bei Bedarf eigene Maßnahmen gegen Missbrauch
UPKEEP_ALLOWED_PATHS
: Hier können Sie Pfade definieren, die vom Wartungsmodus ausgenommen werden sollen (z.B. für APIs oder bestimmte Medien)
- KLXM Crossmedia
MIT License - siehe LICENSE.md