Wartungsarbeiten an der Nextcloud

  Ralf Hersel   Lesezeit: 7 Minuten  🗪 3 Kommentare

Wer eine Nextcloud-Installation betreibt, muss ab und zu ein paar Wartungsarbeiten durchführen.

wartungsarbeiten an der nextcloud

Alle lieben die Nextcloud. Fast alle haben eine Nextcloud-Installation; entweder auf dem eigenen Server oder bei einem Hoster laufen. Wer seine Nextcloud als Shared-Service konsumiert, muss jetzt nicht weiterlesen, weil die Rechte fehlen, um selbst Wartungsarbeiten durchführen zu können. Für diejenigen, die einen Server betreiben, wird der Artikel nicht viel Neues bringen. Daher geht es vorrangig um Anwender:innen, die ihre Nextcloud auf einem gehosteten Webspace installiert haben und über Admin-Rechte für die Nextcloud verfügen.

Ob Wartungsarbeiten für die eigene Nextcloud-Installation anstehen, sieht man im System-Menü (rechts oben) unter dem Punkt Administration Settings (das in der Version 25 offensichtlich noch nicht übersetzt wurde). Dann geht man links im Menü auf den Punkt Übersicht und wundert sich über die Sicherheits- & Einrichtungswarnungen.

Hier noch einmal im Bilde:

Die Sicherheits- & Einrichtungswarnungen fallen bei euch natürlich anders aus, als im Screenshot gezeigt wird. Typische Warnungen sind:

  1. Der "Strict-Transport-Security“-HTTP-Header ist nicht auf mindestens "15552000“ Sekunden eingestellt.
  2. Für deine Installation ist keine Standard-Telefonregion festgelegt.
  3. Es wurde kein PHP Memory Cache konfiguriert.
  4. In der Datenbank fehlen einige Indizes.
  5. Bei einigen Spalten in der Datenbank fehlt eine Konvertierung in big int.

Um die erste Warnung zu beheben, geht ihr ins Backend eures Web-Hostings, öffnet dort den Dateimanger und navigiert zur Datei ../nextcloud/.htaccess und fügt am Ende der Datei diesen Code ein:

<IfModule mod_headers.c>
      Header always set Strict-Transport-Security "max-age=15552000; preload"
</IfModule>

Nextcloud gibt bei den Warnungen hilfreiche Empfehlungen an, an denen man sich orientieren kann. Damit lassen sich die meisten Probleme direkt innerhalb der Nextcloud-Einstellung beheben. Anders ist das bei den Warnungen 4 und 5. Diese Änderungen an der Datenbank erfordern die Bedienung des OCC-Tools. Wie ihr wisst, ist Nextcloud ein Fork von OwnCloud, wodurch sich der Name dieses Werkzeuges erklärt: ownCloud Console.

Um damit arbeiten zu können, ist ein SSH-Zugriff auf den Server nötig. Die Zugangsdaten findet ihr entweder in eurem Webhosting-Backend oder in den Unterlagen, die ihr beim Abschluss eures Accounts erhalten habt. Im Zweifelsfall fragt ihr beim Hoster nach.

Dann verbindet ihr euch im Terminal mit z.B.: ssh admin_name@81.75.145.219 -p2121 mit dem Server. Dort navigiert ihr in das Nextcloud-Verzeichnis, z.B.: cd /httpdocs/nextcloud, je nachdem, wo eure Nextcloud installiert ist. In diesem Verzeichnis liegt die Datei occ. Ob der Zugriff auf die ownCloud Console funktioniert, testet ihr mit diesem Befehl:

./occ status
The current PHP memory limit is below the recommended value of 512MB.
  - installed: true
  - version: 25.0.1.1
  - versionstring: 25.0.1
  - edition: 
  - maintenance: false
  - needsDbUpgrade: false
  - productname: Nextcloud
  - extendedSupport: false

Falls das so wie oben aussieht, hat die Ausführung von occ geklappt. In meinem Beispiel seht ihr einen Hinweis zur PHP Speichergrösse. Diese Warnung könnt ihr im Backend eures Web-Hostings abstellen, indem ihr den PHP Speicher erhöht.

Bevor ihr mit den Änderungen an der Nextcloud-Datenbank beginnt, empfehle ich a) ein vollständiges Backup der gesamten Nextcloud-Installation, und b) eure Nextcloud in den Maintenance-Modus zu schalten:

./occ maintenance:mode --on

Welche occ-Befehle ihr nun ausführt, hängt von den Warnungen ab, die ihr vorhin in der Übersicht gesehen habt. Daher ist Folgendes nur ein Beispiel. Bitte führt diese Befehle nur aus, wenn sie für eure Nextcloud angezeigt wurden.

./occ db:add-missing-indices

The current PHP memory limit is below the recommended value of 512MB.
Nextcloud is in maintenance mode, hence the database isn't accessible.
Cannot perform any command except 'maintenance:mode --off'

Check indices of the share table.
Check indices of the filecache table.
Check indices of the twofactor_providers table.
Check indices of the login_flow_v2 table.
Check indices of the whats_new table.
Check indices of the cards table.
Check indices of the cards_properties table.
Check indices of the calendarobjects_props table.
Check indices of the schedulingobjects table.
Check indices of the oc_properties table.
Check indices of the oc_jobs table.
Check indices of the oc_direct_edit table.
Adding direct_edit_timestamp index to the oc_direct_edit table, this can take some time...
oc_direct_edit table updated successfully.
Check indices of the oc_preferences table.
Adding preferences_app_key index to the oc_preferences table, this can take some time...
oc_properties table updated successfully.
Check indices of the oc_mounts table.
Adding mounts_class_index index to the oc_mounts table, this can take some time...
oc_mounts table updated successfully.

Die Meldungen in Zeile 3 bis 5 könnt ihr ignorieren, weil sie Unsinn sind, wie man im weiteren Verlauf des Kommandos sieht. Die Änderungen an den Indizes werden durchgeführt und am Ende sieht man die Erfolgsmeldungen.

Weiter geht es mit der Änderung des Datentyps auf big_int. Das sieht so aus:

./occ db:convert-filecache-bigint

The current PHP memory limit is below the recommended value of 512MB.
Nextcloud is in maintenance mode, hence the database isn't accessible.
Cannot perform any command except 'maintenance:mode --off'
Following columns will be updated:
* file_metadata.id
This can take up to hours, depending on the number of files in your instance!
Continue with the conversion (y/n)? [n] y

Auch hier gibt es wieder die irreführende Warnung, dass keine Änderungen an der Datenbank durchgeführt werden können, weil man im Maintenance-Modus ist. Der Befehl weist darauf hin, dass die Änderung mehrere Stunden in Anspruch nehmen kann. Das hängt von der Grösse eurer Nextcloud ab. Bei mir lief das Kommando in 1 Sekunde durch.

Ihr könnt nun weitere occ-Befehle absetzen, falls dafür gemäss der Warnungen die Notwendigkeit besteht. Sobald ihr fertig seid, müsst ihr den Maintenance-Modus wieder ausschalten:

./occ maintenance:mode --off

Jetzt könnt ihr euch wieder bei eurer Nextcloud anmelden und in der Übersicht nachschauen, ob die Warnungen weniger geworden sind. Ich empfehle, bei jeder neuen Nextcloud-Version nachzusehen, ob sich wieder ein Handlungsbedarf ergeben hat.

Tags

Nextcloud, OCC, Wartung, Hosting

Skr
Geschrieben von Skr am 28. November 2022 um 17:08

schade ist, dass man die Warnungen die dort angezeigt werden nicht auf der Konsole angezeigt bekommt. So muss man die NC erst wieder starten, sich dann die Fehlermeldungen angucken und wieder stoppen und es entsprechend beheben. Das sollte man angehen - das wäre mal ein sinnvolles feature

kamome
Geschrieben von kamome am 3. Dezember 2022 um 01:24

OCC gibt es (wenn gerade mit der Installation kompatibel) auch als App: https://apps.nextcloud.com/apps/occweb

Werden die manuelle Änderungen an der .htaccess nicht beim nächsten Neu-Generieren überschrieben? (auch unterhalb des „Do not change anything above this line“) Zumindest für RewriteBase war das der Fall, was Ich per 'htaccess.RewriteBase' => '/' in der config.php lösen musste.

Kristian
Geschrieben von Kristian am 3. Dezember 2022 um 16:57

Ich habe bei meinem Provider keinen SSH Zugriff. Über den Umweg per einmal gestarteten Cron-Job kann ich trotzdem die nötigen Wartungsarbeiten durchführen.

Als Befehl gebe ich unten gezeigte Zeile ein. Zuerst kommt der Pfad zur PHP Installation gefolgt vom Parameter -f und danach den Pfad zur Nextcloud Installation für den occ Befehl. Z.B.

/opt/php-8.0/bin/php -f /var/www/xxx/htdocs/nextcloud/occ db:add-missing-indices

Bei den Konvertierungen muss der Zusatz --no-interaction angehängt werden da über den Cronjob eventuelle Sicherheitsabfragen nicht bestätigt werden können.

/opt/php-8.0/bin/php -f /var/www/xxx/htdocs/nextcloud/occ db:convert-filecache-bigint --no-interaction

Da ich in der Cron-Verwaltung meine E-Mail Adresse hinterlegt habe, bekomme ich das Ergebnis der Ausführung kurze Zeit später per E-Mail und ich kann den Job wieder pausieren.