Nextcloud-Migration auf S3/Minio

In vergangenen Übungen wurde Nextcloud basierend auf dem LAMP-Stack aufgesetzt und Minio als systemd-Service konfiguriert. Nextcloud verwendet als Datenspeicher das lokale Dateisystem. Zwecks besserer Skalierbarkeit sollen die beiden Teile nun kombiniert werden, sodass Nextcloud die Nutzdaten via Minio in einem S3-Speicher verwaltet.

Voraussetzungen

Für diese Übungen wird folgendes vorausgesetzt:

  1. Minio wurde mit systemd als Service eingerichtet.
  2. Der LAMP-Stack wurde in Betrieb genommen.
  3. Nextcloud wurde installiert.

Vorbereitung

Erstelle ein Verzeichnis für die Datensicherung unter /var/backup:

sudo mkdir /var/backup

Konfiguration sichern

Da Konfigurationsänderungen an Nextcloud vorgenommen werden, soll zuerst die Konfigurationsdatei in ein entsprechendes Verzeichnis gesichert werden:

sudo mkdir /var/backup/config
sudo cp /var/www/nextcloud/config/config.php /var/backup/config/

Logge dich als Administrator (admin) und als ihren persönlichen Benutzer unter IP-ADRESSE in Nextcloud ein. (Verwende ein privates Browserfenster, damit du zwei Sessions gleichzeitig aktiv halten kannst.)

Logs verfolgen

Öffnen zwei weitere SSH-Sessions auf deine VM. Dort kannst du mit tail -f die Ausgaben zweier Logs verfolgen.

Verfolge das Fehlerlog von Apache:

sudo tail -f /var/log/apache2/error.log

Und verfolge das Log von Nextcloud:

sudo tail -f /var/www/nextcloud/data/nextcloud.log

Die Logdateien können im Fall eines Fehlers über dessen Ursache Auskunft geben.

Konfiguration anpassen

Um die Konfiguration von Nextcloud kennenzulernen, sollst du folgende Änderungen an der Datei /var/www/nextcloud/config/config.php vornehmen:

  1. Aktiviere das automatische Logout nach Ablauf der Sitzungsdauer mit der Option auto_logout (siehe Auto Logout).
  2. Reduziere die Sitzungsdauer von einem Tag auf eine Stunde mit der Option session_lifetime (siehe Session Lifetime).

Kontrollfrage 1: Wie lauten die beiden Konfigurationsangaben? Halte diese fest!

Die Änderungen werden sofort beim nächsten Neuladen einer Nextcloud-Seite aktiv. Probiere das aus. Erscheint eine Fehlermeldung, hat sich wohl ein Fehler in der Konfiguration eingeschlichen. Korrigiere diesen und lade die Nextcloud-Seite erneut, bis wieder alles funktioniert.

S3/Minio als Datenspeicher

Damit die Speichermenge von Nextcloud nicht von der Grösse einer lokalen Partition vorgegeben ist, soll der Datenspeicher vom Verzeichnis /var/www/nextcloud/data auf den S3-Speicher Minio umgestellt werden. (Grundsätzlich liesse sich ein beliebiger S3-Speicher anbinden, egal ob in der Cloud oder selber gehosted.)

Stelle zunächst sicher, ob der Minio-Service läuft:

sudo systemctl is-active minio.service

Läuft der Service, logge dich unter IP-ADRESSE:9090 auf Minio ein. Andernfalls musst du noch einmal nachschauen, wie man Minio als systemd-Service konfiguriert.

Erstelle einen Bucket namens nextcloud.

Logge dich nun aus Nextcloud aus – sowohl mit dem Administrator als auch mit deinem persönlichen Benutzer.

Minio als Datenspeicher konfigurieren

In der Nextcloud-Dokumentation ist die Einbindung von S3-Speichern unter Primary Storage genauer beschrieben.

Lege eine neue Nextcloud-Konfigurationsdatei namens minio.config.php an und setze den Benutzer www-data als deren Besitzer:

sudo touch /var/www/nextcloud/config/minio.config.php
sudo chown www-data:www-data /var/www/nextcloud/config/minio.config.php

Kopiere folgendes Konfigurationsgerüst in diese Datei:

<?php
$CONFIG = array (
	'objectstore' => [
		'class' => '\OC\Files\ObjectStore\S3',
		'arguments' => [
			'hostname' => /* TODO */,
			'port' => /* TODO */,
			'key' => /* TODO */,
			'secret' => /* TODO */,
			'bucket' => /* TODO */,
			'use_ssl' => /* TODO: true/false */,
			'region' => 'optional',
			'use_path_style' => true,
		],
	],
);

Kontrollfrage 2: Wie lauten die sechs fehlenden Konfigurationsangaben?

Ersetze die /* TODO */-Kommentare durch die korrekten Angaben vom lokal laufenden Minio-Server. Die meisten Angaben sollten dir bereits bekannt sein. (Tipp: key und secret beziehen sich auf die Benutzerdaten von Minio.)

Speichere die Konfigurationsänderungen ab und versuche dich in Nextcloud einzuloggen. Erscheint eine Fehlermeldung, prüfe die Logdatei von Nextcloud. Versuche anhand dieser Meldungen den Konfigurationsfehler zu finden und zu korrigieren.

Den Datenspeicher testen

Funktioniert das Login, wirst du feststellen, dass der Benutzer nun keine Dateien mehr hat. Das liegt daran, dass die Daten nicht vom lokalen Speicher zu Minio migriert worden sind. Keine Sorge: Die alten Dateien sind im Verzeichnis /var/www/nextcloud/data/[username]/files zu finden. (Erstetze [username] durch den jeweiligen Benutzernamen.)

Laden nun einige Dateien in Nextcloud hoch.

Schaue auf dem Minio-Server im Object Browser (Navigation links) nach, ob der Bucket nun Daten enthält. Sind Einträge zu sehen, hat die Umstellung des Datenspeichers auf Minio funktioniert!

Kontrollfrage 3: Wie heissen die Objekte im Bucket? Notiere dir einen Namen!