Nextcloud klassische Wartungsbefehle auf der Kommandozeile

Veröffentlicht am:

Keine Kommentare

Aufmerksamen Lesern ist es nicht entgangen, dass hier im Blogbereich unter anderem auch der Einsatz einer Nextcloud-Installation behandelt wird. Mit all seinen Pros und Contras.
Warum Nextcloud und nicht WordPress? Man kann mit WordPress unterschiedlichste Anwendungen realisieren und Anforderungen begegnen. Aber seine Stärken liegen nun mal nicht unbedingt im Bereich Dokumentenmanagement. Hier bringt die open source Software Nextcloud von Haus aus alles mit, was man zum gemeinschaftlichen Arbeiten an einer gemeinsamen Datenbasis benötigt. Und das größtenteils sogar kostenlos. Ein Dokumentenmanagementsystem wie Nextcloud gehört zwar nicht unbedingt zu meiner Kernkompetenz, aber ich habe mich in den Jahren stark eingearbeitet und biete das auch auf Wunsch für meine Kunden an.

Eine Nextcloud-Instanz sollte regelmäßig auf den neuesten Stand gebracht werden. Somit profitiert man nicht nur von den Neuerungen in der Funktionalität sondern auch im Bereich Sicherheit, da mit jedem Update auch Sicherheitslücken geschlossen werden. Wer bereits mit Nextcloud arbeitet, kennt das sicher: Jedes Update erfordert es, dass man nachträglich selbst noch einmal Hand anlegt. Diese Art von Wartungsaufgaben können mit speziellen Befehlen auf Kommandozeilen Basis durchgeführt werden. Ich stelle hier einige der häufigsten Anwendungsfälle vor.

Ich beschreibe das hier anhand einer beispielhaften Installation auf einem all-inkl.com shared Webhosting. Es wird zwar immer ein echter Server für eine Nextcloud empfohlen, aber bei all-inkl funktioniert das mit Ausnahmen und für kleinere Instanzen recht gut.

Zuerst einmal, wie funktioniert das überhaupt?

Wir führten diese Aufgaben mit der OCC Befehlssammlung durch.
OCC steht für OwnCloud Configuration und verweist damit auch auf das gemeinschaftliche Erbe von Owncloud und Nextcloud. OCC wurde ja bereits eingeführt, bevor es überhaupt zur Abspaltung kam. OCC ist eine PHP Skriptdatei, die direkt auf dem Server aufgerufen wird und verschiedene Befehle ausführen kann. Ohne einen direkten „Draht“ zum Server kann man OCC nicht nutzen, weshalb viele Webhosting-Pakete ausscheiden.

Mit dem richtigen all-inkl Tarif hat man auch über SSH Zugang zum Server. Auch sollte die Version von PHP CLI nicht veraltet sein. Die Version des PHP Interpreters bei der Arbeit über den SSH-Zugang ist nicht mit dem PHP des Webservers identisch. In den KAS Einstellungen lässt sich für jede Domain die PHP Version auswählen, unter der die hinterlegte Webseite oder Webanwendung läuft. Das beeinflußt aber nicht das Kommandozeilen-PHP (ich nenne das jetzt mal so). Warum ist das wichtig? Bei neueren Nextcloud Versionen funktionieren einige OCC Befehle nicht, wenn sie mittels veraltetem PHP ausgeführt werden. Hier ist ein Artikel aus der all-inkl Hilfe, wie die Änderung der PHP CLI Version durchgeführt werden kann.
Andererseits kann man auch auf der Kommandozeile die unterschiedlichen PHP Interpreter aufrufen. Dieser Befehl führt beispielsweise ein Programm in der PHP Version 8.0 aus.

/usr/bin/php80 something

Aber natürlich ist es einfacher, man aktualisiert die PHP ClI Version von vornherein, so dass man einfach nur „php“ aufrufen muss.

Wenn alles vorbereitet ist und ihr über ein SSH-Terminal mit eurem Server verbunden seid, wechselt dort in das Nextcloud Wurzelverzeichnis.

Wartungsarbeiten nach Nextcloud Updates

Die meisten Wartungsarbeiten fallen nach einem Upgrade der Nextcloud-Instanz selbst an. Neben Änderungen im Programmcode sind die Tabellen in der Datenbank betroffen. Ein häufig auftretender Fall ist das Fehlen optionaler Spalten. Das liest sich in der Übersicht dann so:

In der Datenbank fehlen einige optionale Spalten.

Da ihr Vorhandensein nur eine Option und kein Muss ist, wurden sie von Nextcloud nicht automatisch hinzugefügt, sondern können manuell angelegt werden. Hierfür muss dieser Befehl ausgeführt werden:

php occ db:add-missing-columns

In der Erfolgsmeldung wird dann auch vermerkt, welche fehlenden Tabellenspalten nachträglich angelegt wurden.

Bei einigen Tabellen ist der Datentyp für gewisse Spalten veraltet bzw. nicht mehr ausreichend. Das habe ich bisher nur beim Typ integer/biginteger gesehen. Der entsprechende Hinweis lautet:

Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int.

Die Konvertierung wird mittels dieses Aufrufs durchgeführt:

php occ db:convert-filecache-bigint

Nextcloud rät hier dazu, die Instanz während der Konvertierung offline zu nehmen, aber ich denke, bei kleinen Installationen mit wenig Nutzern ist das unnötig. Wer auf Nummer Sicher gehen will, versetzt die Nextcloud mit diesem Kommando in den Wartungsmodus:

php occ maintenance:mode --on

Hiermit wird der Wartungsmodus wieder beendet:

php occ maintenance:mode --off

Was wirklich oft vorkommt, ist das Fehlen von Indizes in bestimmten Tabellen.

In der Datenbank fehlen einige Indizes.

Ein Index gibt an, wie Daten sortiert werden und kann die Abfragen auf Tabellen beschleunigen. Es ist also ratsam, die Indizes zu setzen. Selbstverständlich gibt es auch für diesen Zweck einen OCC Befehl:

php occ:db-add-missing-indices

Änderungen in der Nextcloud Verschlüsselung

Bei einem Wechsel von Uralt- auf aktuelle Nextcloud Installationen kommt es ab und zu vor, dass NC die veraltete Verschlüsselung anmahnt. Verschlüsselung auf einer Nextcloud ist ein Thema für sich, aber ich möchte eine Methode anbieten, damit umzugehen. Folgt dieser Befehlskette:

php occ maintenance:mode --on
php occ encryption:scan:legacy-format

In diesem Beispiel liegen die Dateien in einem aktuellen Verschlüsselungsformat vor. Es gibt nichts weiter zu tun. Wenn ein legacy-Eintrag in der config vorliegt, kann dieser auf false gesetzt werden.

Sollte hier nicht alles in Ordnung sein, kann man das Format migrieren:

php occ encryption:migrate-key-storage-format
php occ encryption:status
php occ maintenance:mode --off

Nextcloud Upgrade

Ich persönlich vollziehe ein Upgrade der Nextcloud Installation über das Web-Interface. Das gibt mir alle nötigen Informationen und Hinweise zur anstehenden Aktualisierung. Nicht so komfortabel aber bei größeren Instanzen durchaus angebracht ist das Upgrade über die OCC Console:

php occ maintenance:mode --on
php occ upgrade
php occ maintenance:mode --off

Eine Übersicht aller OCC Befehle erhält man mit diesem Befehl:

php occ list

Für eine Erklärung was welcher Befehl bewirkt, gibt man folgenden Code ein:

php occ help

Bitte beachten Sie: die Informationen in diesem Artikel wurden zum Zeitpunkt seiner Erstellung nach bestem Wissen und Gewissen zusammengetragen, aufbereit und niedergeschrieben.
Diese können heute, abhängig vom Zeitpunkt der Veröffentlichung und des behandelnden Themas, überholt und ungültig sein.
Es obliegt den Lesern, diese Inhalte mit dem aktuellen Wissensstand abzugleichen.

Artikel online seit: 6 Monaten 9 Tagen
Letzte Änderung: 05.12.2023

Schreibe einen Kommentar