Sicheres Beheben des Nextcloud-Wartungsmodus mit OCC
Wenn Nextcloud nach einem Update oder einer Wartungsaufgabe weiterhin den Wartungsmodus anzeigt, prüfen Sie zunächst, ob das Datenbank-Upgrade abgeschlossen ist. Falls occ statusdie Meldung erscheint needsDbUpgrade: false, führen Sie occ maintenance:mode --offden Befehl als Webserver-Benutzer in der korrekten Nextcloud-Installation aus; falls die Meldung erscheint true, schließen Sie den Vorgang ab, occ upgradebevor Sie die Website erneut öffnen.
Durch Deaktivieren des Flags werden die Anmeldedaten wiederhergestellt, ein fehlgeschlagenes Upgrade wird dadurch jedoch nicht behoben. Ziel ist es, die Instanz wieder online zu bringen, wobei sowohl das Wartungsflag als auch der Upgrade-Status verifiziert sind.
1. Überprüfen Sie die Instanz, bevor Sie ihren Zustand ändern.
Stellen Sie eine Verbindung zum Host oder Container her, der die betroffene Nextcloud-URL bereitstellt. Wechseln Sie bei einer manuellen Linux-Installation in das Nextcloud-Verzeichnis (oftmals /var/www/nextcloud) und überprüfen Sie den Status als HTTP-Benutzer.
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Achten Sie auf die Werte für „Wartungsmodus“ maintenanceund „Wartungsmodus deaktivieren“. Ein typischer Zustand, in dem needsDbUpgradeder Wartungsmodus sicher deaktiviert werden kann, ist „ Wartungsmodus deaktiviert“. Wenn „Wartungsmodus“ bereits auf „false“ gesetzt ist, zeigt der Browser möglicherweise eine veraltete Seite an oder greift auf einen anderen Server zu. Wenn „Wartungsmodus“ auf „true“ gesetzt ist, deaktivieren Sie den Wartungsmodus noch nicht.maintenance: trueneedsDbUpgrade: falseneedsDbUpgrade
Das Statusbeispiel zeigt, dass der Wartungsmodus aktiviert ist, obwohl kein Datenbank-Upgrade ansteht. In diesem Zustand ist es normalerweise angebracht, den Wartungsmodus zu deaktivieren.
Nextcloud benötigt OCC als HTTP-Benutzer, um die Dateiberechtigungen beizubehalten. Unter Debian oder Ubuntu ist dies üblicherweise `/usr/local/bin` www-data; andere Distributionen verwenden möglicherweise `/ usr/local/bin` apache, http`/usr/bin` oder ` /usr/bin` wwwrun. Überprüfen Sie das Dienstkonto Ihrer Installation, bevor Sie den Benutzer in einem Befehl ersetzen. Die aktuelle Nextcloud-OCC-Dokumentation beschreibt die Unterschiede zwischen den Benutzern und den Statusbefehl.
2. Wartungsmodus mit OCC deaktivieren
Für die Installation eines Archivs oder Pakets führen Sie den Befehl aus dem Verzeichnis aus, das das entsprechende occSkript enthält:
Der Befehl sollte melden, dass der Wartungsmodus deaktiviert ist. Die --offOption ändert den Wartungsstatus; sie führt keine Migrationen aus, korrigiert keine Berechtigungen und macht keine unterbrochenen Dateiersetzungen rückgängig.
Dies ist der OCC-Befehl für eine Standardinstallation, wenn das Upgrade abgeschlossen ist und der Befehl im aktiven Nextcloud-Verzeichnis ausgeführt wird.
Verwenden Sie den Wrapper, der zu Ihrer Installation passt. Für das offizielle Nextcloud-Docker-Image dokumentiert das Projekt sowohl docker execDocker-Compose- als auch Docker-Compose-Beispiele. Ersetzen Sie den Beispielcontainer- oder Dienstnamen durch Ihren eigenen:
# Docker Compose; "app" is an example service name
docker compose exec --user www-data app php occ maintenance:mode --off
# Docker; replace CONTAINER_ID with the Nextcloud container
docker exec -it --user www-data CONTAINER_ID php occ maintenance:mode --off
Führen Sie in Docker Compose OCC innerhalb des Nextcloud-Dienstes als www-data aus; verwenden Sie Ihren Compose-Dienstnamen anstelle des Beispielnamens app.
Verwenden Sie für den Nextcloud Snap den hostseitigen OCC-Wrapper, anstatt in die internen Verzeichnisse des Snaps einzusteigen:
3. Falls ein Upgrade noch aussteht, schließen Sie es zuerst ab.
Wenn Nextcloud Statusmeldungen ausgibt needsDbUpgrade: true, signalisiert dies, dass die Code- und Datenbankmigration nicht synchron verlaufen. Dies tritt häufig auf, nachdem ein Updater den Code ersetzt hat, die Migrationsphase aber noch nicht abgeschlossen wurde. In diesem Zustand ist möglicherweise nur eine eingeschränkte Anzahl von OCC-Befehlen verfügbar, und der Wartungsmodus kann absichtlich aktiviert bleiben, um Benutzer während des Upgrades fernzuhalten.
Verwenden Sie den Upgrade-Pfad für Ihren Installationstyp und überprüfen Sie die Fehlermeldung des Updaters, bevor Sie fortfahren. Bei einer standardmäßigen archivbasierten Installation führen Sie nach Bestätigung der gewünschten Nextcloud-Codeversion und Erstellung eines aktuellen Datenbank- und Datei-/Konfigurations-Backups (falls noch nicht vorhanden) folgenden Befehl aus:
sudo -E -u www-data php occ upgrade
Lassen Sie den Befehl vollständig ausführen und beheben Sie alle gemeldeten Fehler. Schalten Sie den Wartungsmodus nicht wiederholt ein und aus, um einen Migrationsfehler zu umgehen. Die Nextcloud- Upgrade-Dokumentation erklärt, dass die Datenbankmigration nach dem Austausch des Servercodes erfolgt und empfiehlt, vor einem Upgrade ein aktuelles Backup zu erstellen. Docker, Snap und verwaltete Pakete können eigene Upgrade-Prozeduren haben; verwenden Sie diese Anweisungen, falls sie vom archivbasierten Beispiel abweichen.
Sobald das Upgrade erfolgreich abgeschlossen ist und der Status keine ausstehende Datenbankaktualisierung mehr anzeigt, führen Sie den entsprechenden maintenance:mode --offBefehl oben aus. Vermeiden Sie es, config.phpdie Datenbank direkt zu aktualisieren oder die Einstellungen zu bearbeiten. Falls OCC die Einstellung nicht schreiben kann, überprüfen Sie, ob Sie die richtige Installation und den richtigen HTTP-Benutzer ausgewählt haben, und prüfen Sie, ob es Fehler in der Konfigurationsrichtlinie für schreibgeschützte Dateien oder in den Dateisystemberechtigungen gibt, bevor Sie die Berechtigungen ändern.
4. Überprüfen Sie die Flagge und die Live-Website.
Führen Sie den Status erneut mit demselben Installationspfad, Container und Benutzer aus:
sudo -E -u www-data php occ status
Bestätigen Sie sowohl `<option1>` maintenance: falseals auch needsDbUpgrade: false`<option2>`. In Docker oder Snap wiederholen Sie die Prüfung mit demselben Wrapper, der zum Deaktivieren des Flags verwendet wurde. Der Nextcloud-Befehl `status` dokumentiert diese Felder; seine maschinenlesbare Form lautet `<option3>` occ status --output=json_pretty.
Bei erfolgreicher Überprüfung wird angezeigt, dass der Wartungsmodus deaktiviert ist und kein Datenbank-Upgrade aussteht; dieses Beispiel stammt nicht von einem Live-Server.
Laden Sie die Seite anschließend in einem neuen Browsertab und testen Sie die Anmeldung und die Dateiauflistung. Nextcloud weist darauf hin, dass Benutzer, die vor dem Wartungsmodus angemeldet waren, ihren Browser möglicherweise aktualisieren müssen, nachdem der Server wieder online ist. Falls OCC meldet, dass der Wartungsmodus deaktiviert ist, die Seite aber weiterhin angezeigt wird, überprüfen Sie, ob der Hostname oder Load Balancer auf dieselbe Instanz verweist, die Sie geändert haben. Bei mehreren Containern oder Knoten befindet sich möglicherweise ein anderes Backend noch im Wartungsmodus.
Eine erfolgreiche Fehlerbehebung erfordert daher mehr als nur die Meldung „deaktiviert“: Der OCC-Status muss beide Flags als deaktiviert anzeigen, und die vorgesehene öffentliche URL muss die funktionierende Instanz bereitstellen. Falls das Upgrade-Flag weiterhin gesetzt ist oder der Migrationsbefehl fehlschlägt, müssen Benutzer vom Zugriff ausgeschlossen und der Upgrade-Fehler behoben werden, bevor Nextcloud wieder geöffnet wird.