Nextcloud Sicherheits- und Einrichtungswarnungen beheben – Anleitung für Apache2, Nginx und OCC

Wer Nextcloud auf einem eigenen Server betreibt, findet in den Administrationseinstellungen regelmäßig verschiedene Sicherheits- und Einrichtungswarnungen. Diese erscheinen beispielsweise nach einem Update, einer Änderung der Serverkonfiguration oder wenn neue Funktionen hinzugefügt wurden.

Nicht jede Warnung bedeutet automatisch, dass Nextcloud unsicher ist oder nicht richtig funktioniert. Häufig handelt es sich um fehlende Konfigurationseinträge, zusätzliche Datenbankindizes, nicht abgeschlossene Migrationen oder Probleme mit dem Webserver. Trotzdem sollte man die Meldungen nicht dauerhaft ignorieren, da einige davon die Sicherheit, Leistung oder Zuverlässigkeit der eigenen Nextcloud-Installation beeinträchtigen können.

In meinem Fall betreibe ich Nextcloud auf einem Ubuntu-Server innerhalb eines Proxmox-LXC-Containers. Apache2, PHP und die übrigen benötigten Komponenten sind direkt unter Ubuntu installiert. Für den Zugriff über das Internet verwende ich zusätzlich den Nginx Proxy Manager als Reverse Proxy.

Nach der Aktualisierung auf Nextcloud 34.0.5 wurden mir verschiedene Sicherheits- und Einrichtungswarnungen angezeigt. Darunter fehlende Datenbankindizes, MIME-Type-Migrationen, Probleme mit .well-known-URLs und eine nicht konfigurierte Wartungszeit.

In dieser Anleitung zeige ich, wie man diese Nextcloud-Warnungen behebt, welche OCC-Befehle dafür benötigt werden und worauf man insbesondere bei einer Installation hinter einem Reverse Proxy achten sollte.

Voraussetzungen und verwendete Serverumgebung

Die folgenden Schritte beziehen sich auf eine manuell installierte Nextcloud-Instanz unter Ubuntu.

Als Beispiel verwende ich folgende Serverkonfiguration:

KomponenteVerwendete Umgebung
VirtualisierungProxmox VE
ContainerUbuntu LXC
Cloud-SoftwareNextcloud 34.0.5, Upgrade auf 35.0.2
WebserverApache2
PHPPHP 8.4
DatenbankMariaDB oder MySQL
Reverse ProxyNginx Proxy Manager
HTTPSÜber den Reverse Proxy
Nextcloud-Verzeichnis/var/www/html
Webserver-Benutzerwww-data

Die meisten Befehle funktionieren auch auf Debian oder einem Ubuntu-Server, der direkt auf einem PC beziehungsweise einer virtuellen Maschine installiert wurde.

Bei Docker-Installationen, Nextcloud AIO oder Snap-Paketen können sich die Verzeichnisse und benötigten Befehle unterscheiden.

Wichtig ist außerdem, dass sich die verwendete PHP-Version und die Datenbank innerhalb der Systemanforderungen der installierten Nextcloud-Version befinden.

Wo findet man die Sicherheits- und Einrichtungswarnungen in Nextcloud?

Die Meldungen findet man direkt in der Nextcloud-Weboberfläche.

Dazu meldet man sich mit einem Administratorkonto an und öffnet über das Profilmenü die Verwaltungseinstellungen.

Anschließend wechselt man zum Menüpunkt Übersicht.

Dort führt Nextcloud verschiedene automatische Prüfungen durch. Kontrolliert werden unter anderem die Datenbank, der Webserver, die Sicherheitseinstellungen, Hintergrundaufgaben und bestimmte Funktionen der installierten Apps.

Nextcloud unterscheidet dabei zwischen Warnungen und Hinweisen.

Gelbe Warnsymbole weisen auf Konfigurationsprobleme hin, die überprüft beziehungsweise behoben werden sollten. Blaue Informationssymbole zeigen dagegen häufig empfohlene oder optionale Einstellungen an.

Typische Meldungen sind:

FehlermeldungUrsacheLösung
Fehler im ProtokollFehler durch Apps, PHP, Datenbank oder HintergrundjobsProtokolle untersuchen
Beginn des WartungsfenstersKeine Startzeit für WartungsaufgabenWartungsfenster konfigurieren
MIME-Type-Migrationen verfügbarZusätzliche Dateityp-Migrationen erforderlichReparaturbefehl ausführen
OCS-Anbieter-AuflösungWebserver verarbeitet /ocm-provider/ nicht korrektApache-Konfiguration prüfen
.well-known-URLsFehlende oder falsche WeiterleitungenApache oder Reverse Proxy konfigurieren
Fehlende DatenbankindizesNeue Indizes wurden nicht automatisch erstelltIndizes hinzufügen
CLI-URL überschreibenÖffentliche Nextcloud-Adresse nicht hinterlegtoverwrite.cli.url setzen
AppAPI-Bereitstellungs-DaemonKein Deployment-Daemon eingerichtetAppAPI konfigurieren oder deaktivieren
Zwei-Faktor-Konfiguration2FA nicht verpflichtendOptional aktivieren
Standard-TelefonregionKeine Standard-LändervorwahlTelefonregion festlegen
Konfiguration Server-IDKeine feste Server-ID vorhandenOptional Server-ID setzen

Die folgenden Abschnitte erklären die einzelnen Probleme und zeigen, wie man sie beheben kann.

Vorbereitungen – Nextcloud über SSH verwalten

Für viele Wartungsarbeiten benötigt man Zugriff auf das Terminal des Nextcloud-Servers.

Bei einer Installation innerhalb eines Proxmox-LXC-Containers kann man die Konsole direkt über die Proxmox-Weboberfläche öffnen. Alternativ verbindet man sich per SSH mit dem Ubuntu-Server.

Nach der Anmeldung wechselt man in das Nextcloud-Installationsverzeichnis:

cd /var/www/html

Anschließend kann man mit folgendem Befehl überprüfen, ob Nextcloud korrekt installiert ist:

sudo -u www-data php occ status

Die Ausgabe enthält beispielsweise:

installed: true
version: 34.0.5.1
versionstring: 34.0.5
maintenance: false
needsDbUpgrade: false

Hier sieht man die aktuell installierte Nextcloud-Version und ob sich das System im Wartungsmodus befindet.

Der Eintrag needsDbUpgrade: false bedeutet, dass für die installierten Programmdateien kein Datenbank-Upgrade mehr aussteht.

Was ist OCC bei Nextcloud?

OCC steht für Nextclouds Kommandozeilenwerkzeug und basiert auf PHP.

Darüber lassen sich zahlreiche administrative Aufgaben durchführen, ohne die Weboberfläche öffnen zu müssen.

Dazu gehören beispielsweise:

  • Nextcloud-Updates und Datenbankmigrationen
  • Reparaturen und Wartungsaufgaben
  • Verwaltung von Benutzern und Apps
  • Konfiguration von Systemeinstellungen
  • Hinzufügen fehlender Datenbankindizes
  • Verwaltung von Dateien und Dateiversionen
  • Überprüfung des Wartungsmodus

Die OCC-Befehle sollten unter Ubuntu normalerweise mit dem Webserver-Benutzer www-data ausgeführt werden.

Wer sie stattdessen als root startet, riskiert unter Umständen falsch gesetzte Dateiberechtigungen.

Falls bei der Ausführung eine Fehlermeldung bezüglich APCu erscheint, kann man PHP anweisen, den Cache auch über die Kommandozeile zu aktivieren:

sudo -u www-data php -d apc.enable_cli=1 occ status

Für die übrigen Beispiele verwende ich die kürzere Schreibweise. Sollte APCu bei einzelnen OCC-Befehlen Probleme verursachen, kann derselbe Parameter ergänzt werden.

Vorher ein Backup erstellen

Vor einem größeren Nextcloud-Update oder einer Datenbankreparatur sollte man unbedingt ein vollständiges Backup erstellen.

Dieses sollte mindestens die folgenden Bestandteile enthalten:

BestandteilBedeutung
Nextcloud-ProgrammdateienDateien der installierten Nextcloud-Version
config.phpServereinstellungen und Datenbankverbindung
Nextcloud-DatenverzeichnisHochgeladene Dateien und Benutzerdaten
DatenbankBenutzer, Dateimetadaten, Freigaben und Apps
Webserver-KonfigurationApache- und gegebenenfalls PHP-Konfiguration

Wer Proxmox verwendet, kann zusätzlich einen Snapshot oder ein vollständiges Container-Backup erstellen.

Dabei sollte beachtet werden, dass ein Snapshot eines laufenden Containers nicht zwangsläufig eine konsistente Sicherung der Datenbank garantiert. Für eine zuverlässige Wiederherstellung empfiehlt sich deshalb eine koordinierte Sicherung der Datenbank und der zugehörigen Dateien.

Ein Backup sollte idealerweise auch regelmäßig testweise wiederhergestellt werden.

Nextcloud-Warnung: Beginn des Wartungsfensters festlegen

Eine häufig angezeigte Warnung betrifft das nicht konfigurierte Wartungsfenster.

Nextcloud führt regelmäßig verschiedene Hintergrundaufgaben aus. Dazu gehören unter anderem die Bereinigung alter Daten, Prüfungen und weitere Verwaltungsaufgaben.

Einige dieser Aufgaben können die Datenbank oder den Server stärker belasten.

Damit solche Arbeiten möglichst außerhalb der normalen Nutzungszeiten ausgeführt werden, kann man ein Wartungsfenster konfigurieren.

Wartungsfenster über OCC konfigurieren

Mit folgendem Befehl wird das Wartungsfenster auf 02:00 Uhr UTC festgelegt:

sudo -u www-data php occ config:system:set maintenance_window_start --type=integer --value=2

Nextcloud verwendet hierfür grundsätzlich die Zeitzone UTC.

In Deutschland ergeben sich dadurch folgende Zeiten:

ZeitzoneWartungsfenster
UTC02:00 bis 06:00 Uhr
Deutschland Winterzeit03:00 bis 07:00 Uhr
Deutschland Sommerzeit04:00 bis 08:00 Uhr

Der eingestellte Wert beschreibt die Startstunde eines vierstündigen Zeitfensters.

Allerdings werden dadurch nicht alle Hintergrundaufgaben auf diese Uhrzeit beschränkt. Die Einstellung betrifft vor allem weniger zeitkritische tägliche Aufgaben.

Normale, zeitkritische Cronjobs können weiterhin außerhalb dieses Zeitfensters ausgeführt werden.

Außerdem funktioniert diese Einstellung nur, wenn Nextcloud den Hintergrundmodus Cron verwendet.

Wartungsfenster überprüfen

Den eingestellten Wert kann man jederzeit abfragen:

sudo -u www-data php occ config:system:get maintenance_window_start

Bei der oben beschriebenen Konfiguration sollte die Ausgabe 2 lauten.

Nextcloud MIME-Type-Migrationen verfügbar – Fehler beheben

Nach einem Nextcloud-Update erscheint gelegentlich die Meldung, dass eine oder mehrere MIME-Type-Migrationen verfügbar sind.

MIME-Typen beschreiben den Inhalt beziehungsweise das Format einer Datei.

Beispiele hierfür sind:

DateitypMIME-Type
JPEG-Bildimage/jpeg
PNG-Bildimage/png
PDF-Dokumentapplication/pdf
MP4-Videovideo/mp4
ZIP-Archivapplication/zip

Nextcloud verwendet solche Informationen unter anderem, um Dateien zu erkennen, passende Vorschaubilder anzuzeigen und sie Anwendungen zuzuordnen.

Bei Updates können neue MIME-Typen oder Anpassungen an bestehenden Zuordnungen hinzukommen.

Da die Migration bei Installationen mit vielen Dateien länger dauern kann, führt Nextcloud diese nicht immer automatisch durch.

MIME-Type-Migrationen durchführen

Um die verfügbaren Migrationen auszuführen, verwendet man folgenden OCC-Befehl:

sudo -u www-data php occ maintenance:repair --include-expensive

Der Parameter --include-expensive sorgt dafür, dass auch zeitaufwendigere Reparaturarbeiten berücksichtigt werden.

Je nach Größe der Nextcloud-Installation kann der Vorgang etwas Zeit beanspruchen.

Bei großen Installationen sollte man den Befehl deshalb möglichst außerhalb der Hauptnutzungszeit ausführen.

Während der Reparatur werden mehrere Schritte angezeigt, beispielsweise die Überprüfung von Metadaten, die Bereinigung alter Einträge oder die Vorbereitung von Hintergrundjobs.

Wichtig ist, den Vorgang vollständig durchlaufen zu lassen und nicht vorzeitig abzubrechen.

Nextcloud: Fehlende Datenbankindizes hinzufügen

Eine weitere häufig auftretende Warnung lautet:

In der Datenbank fehlen Indizes

Datenbankindizes helfen dabei, bestimmte Datensätze schneller zu finden.

Vergleichbar ist das mit dem Inhaltsverzeichnis eines Buches. Anstatt sämtliche Seiten durchsuchen zu müssen, kann die Datenbank mithilfe eines passenden Indexes deutlich schneller auf bestimmte Informationen zugreifen.

Bei größeren Nextcloud-Installationen mit vielen Dateien, Benutzern oder Apps können fehlende Indizes die Leistung negativ beeinflussen.

Nach einem Update oder der Installation neuer Apps kann es vorkommen, dass zusätzliche Indizes benötigt werden.

In meinem Fall meldete Nextcloud beispielsweise den fehlenden Index taskp_tasks_scheduled in der Tabelle taskprocessing_tasks.

Fehlende Datenbankindizes automatisch erstellen

Nextcloud bringt dafür einen eigenen OCC-Befehl mit:

sudo -u www-data php occ db:add-missing-indices

Dieser überprüft die vorhandenen Indizes und ergänzt fehlende Einträge, sofern diese von Nextcloud erkannt werden.

Die Ausgabe kann beispielsweise folgendermaßen aussehen:

Adding additional taskp_tasks_scheduled index
to the oc_taskprocessing_tasks table,
this can take some time...

oc_taskprocessing_tasks table updated successfully.

Damit wurde der fehlende Index erfolgreich erstellt.

Der Vorgang kann bei größeren Tabellen einige Zeit in Anspruch nehmen und die Datenbank vorübergehend belasten.

Deshalb sollte die Indexerstellung möglichst nicht während einer hohen Serverauslastung durchgeführt werden.

Eine manuelle Bearbeitung der Datenbank mit phpMyAdmin oder direkten SQL-Befehlen ist für diese Standardwarnung normalerweise nicht notwendig.

Nextcloud: OCS-Anbieter-Auflösung und OCM-Provider reparieren

Bei manchen Nextcloud-Installationen wird folgende Meldung angezeigt:

OCS Anbieter-Auflösung

In der Beschreibung wird darauf hingewiesen, dass der Webserver nicht richtig für den Aufruf von /ocm-provider/ konfiguriert ist.

Der OCM-Provider gehört zum Open Cloud Mesh-Protokoll und wird unter anderem für die Zusammenarbeit und Freigabe von Ressourcen zwischen unterschiedlichen Cloud-Systemen verwendet.

Die Bezeichnung der Warnung und der tatsächlich betroffene URL-Pfad können etwas verwirrend sein. Entscheidend ist hier der von Nextcloud angegebene Pfad /ocm-provider/.

Häufig liegt die Ursache nicht bei Nextcloud selbst, sondern an einer fehlerhaften oder veralteten Rewrite-Konfiguration des Webservers.

Apache2 Rewrite-Modul überprüfen

Da ich Apache2 verwende, kontrolliere ich zunächst, ob das benötigte Rewrite-Modul aktiviert ist.

apache2ctl -M | grep rewrite

Wenn keine Ausgabe erscheint, lässt sich das Modul aktivieren:

sudo a2enmod rewrite

Zusätzlich können die Module headers und env überprüft beziehungsweise aktiviert werden:

sudo a2enmod headers
sudo a2enmod env

Anschließend die Apache-Konfiguration überprüfen:

sudo apache2ctl configtest

Wenn keine Fehler angezeigt werden, kann Apache2 neu geladen werden:

sudo systemctl reload apache2

Apache2 AllowOverride überprüfen

Damit Apache2 die Rewrite-Regeln aus der .htaccess-Datei von Nextcloud verarbeitet, muss die entsprechende Verzeichniskonfiguration dies erlauben.

Die Einstellung befindet sich abhängig von der Installation in der Apache-Hauptkonfiguration oder in der VirtualHost-Datei.

Auf Ubuntu kann man zunächst die aktiven VirtualHosts anzeigen:

apache2ctl -S

Typische Konfigurationsdateien befinden sich unter:

/etc/apache2/apache2.conf
/etc/apache2/sites-available/

Für eine Nextcloud-Installation direkt in /var/www/html kann die Verzeichniskonfiguration folgendermaßen aussehen:

<Directory /var/www/html>
    AllowOverride All
    Require all granted
</Directory>

Wichtig ist, diese Einstellung im tatsächlich verwendeten VirtualHost beziehungsweise im zutreffenden Verzeichnisblock vorzunehmen.

Anschließend die Konfiguration erneut testen und Apache2 neu laden.

Nextcloud .htaccess aktualisieren

Nextcloud verwendet eine eigene .htaccess-Datei mit verschiedenen Rewrite-Regeln und Sicherheitseinstellungen.

Diese kann nach bestimmten Konfigurationsänderungen über OCC neu generiert beziehungsweise aktualisiert werden.

Wenn Nextcloud direkt unter der Domain und nicht in einem Unterverzeichnis wie /nextcloud erreichbar ist, kann man die Rewrite-Basis folgendermaßen setzen:

sudo -u www-data php occ config:system:set htaccess.RewriteBase --value="/"

Anschließend die .htaccess aktualisieren:

sudo -u www-data php occ maintenance:update:htaccess

Vor Änderungen an der Datei empfiehlt es sich, eine vorhandene individuelle Konfiguration zu sichern.

Wichtig: Nicht einfach irgendwelche Dateien oder Verzeichnisse aus älteren Nextcloud-Versionen kopieren. Insbesondere beim OCM-Provider können sich die benötigten Dateien und Rewrite-Regeln zwischen den Versionen unterscheiden.

Wenn die Warnung weiterhin erscheint, sollte zusätzlich überprüft werden, ob die Apache-Konfiguration tatsächlich zur installierten Nextcloud-Version passt.

Nextcloud CLI-URL überschreiben

Bei Installationen hinter einem Reverse Proxy erscheint gelegentlich die Warnung:

CLI-URL überschreiben

Dabei handelt es sich um die Nextcloud-Einstellung overwrite.cli.url.

Diese legt fest, welche Basisadresse Nextcloud verwenden soll, wenn URLs über Kommandozeilenprozesse oder Hintergrundaufgaben erzeugt werden.

Ohne diese Einstellung kann es beispielsweise passieren, dass Links auf eine interne IP-Adresse, einen falschen Hostnamen oder eine unverschlüsselte HTTP-Adresse verweisen.

Öffentliche Nextcloud-Domain festlegen

Angenommen, die eigene Nextcloud-Installation ist unter folgender Adresse erreichbar:

https://cloud.example.de

Dann kann die CLI-URL mit diesem Befehl konfiguriert werden:

sudo -u www-data php occ config:system:set overwrite.cli.url --value="https://cloud.example.de"

Anschließend kann man die Einstellung überprüfen:

sudo -u www-data php occ config:system:get overwrite.cli.url

Die Ausgabe sollte die zuvor konfigurierte Adresse enthalten.

Nextcloud hinter Nginx Proxy Manager richtig konfigurieren

Bei einer Nextcloud-Installation hinter einem Reverse Proxy sind zusätzliche Einstellungen sinnvoll.

Besonders wichtig sind die Parameter trusted_domains, trusted_proxies und overwriteprotocol.

Diese befinden sich in der Nextcloud-Konfigurationsdatei:

/var/www/html/config/config.php

Was ist trusted_domains?

Mit trusted_domains legt man fest, unter welchen Hostnamen Nextcloud erreichbar sein darf.

Dazu gehört beispielsweise die öffentliche Domain:

'trusted_domains' => [
    'cloud.example.de',
],

Diese Einstellung sollte nicht mit trusted_proxies verwechselt werden.

Was ist trusted_proxies?

Bei trusted_proxies hinterlegt man die IP-Adressen der Reverse-Proxys, denen Nextcloud vertraut.

Dadurch kann Nextcloud beispielsweise die tatsächliche IP-Adresse eines Besuchers über die entsprechenden Proxy-Header ermitteln.

Ein Beispiel:

'trusted_proxies' => [
    '192.168.1.10',
],

Die IP-Adresse muss durch die tatsächliche IP-Adresse des Nginx Proxy Managers ersetzt werden.

Wichtig: Es sollten nur vertrauenswürdige Reverse-Proxys eingetragen werden. Die Einstellung sollte nicht pauschal auf sämtliche IP-Adressen erweitert werden.

Andernfalls können Angreifer unter bestimmten Umständen Header manipulieren und falsche Client-IP-Adressen übermitteln.

HTTPS mit overwriteprotocol konfigurieren

Wenn HTTPS am Nginx Proxy Manager beendet wird und Apache2 die Anfragen intern über HTTP erhält, kann Nextcloud unter Umständen das falsche Protokoll erkennen.

In diesem Fall hilft die Einstellung:

'overwriteprotocol' => 'https',

Dadurch verwendet Nextcloud für generierte URLs das HTTPS-Protokoll.

Das ist insbesondere dann wichtig, wenn Links innerhalb der Weboberfläche oder in Benachrichtigungen fälschlicherweise mit http:// beginnen.

Zusätzlich kann bei Bedarf overwritehost verwendet werden. Diese Einstellung ist allerdings normalerweise nicht notwendig, wenn der Reverse Proxy den Host-Header korrekt weiterleitet.

Die bestehende config.php sollte nicht vollständig durch eine Beispielkonfiguration ersetzt werden, da sie weitere wichtige Einstellungen und Zugangsdaten enthält.

Nextcloud: Standard-Telefonregion festlegen

Wenn Nextcloud meldet, dass keine Standard-Telefonregion eingerichtet wurde, fehlt die Einstellung default_phone_region.

Mit dieser wird festgelegt, welche Ländervorwahl bei Telefonnummern ohne explizite internationale Vorwahl angenommen werden soll.

Für Deutschland verwendet man den ISO-Ländercode DE.

Die Einstellung lässt sich direkt per OCC setzen:

sudo -u www-data php occ config:system:set default_phone_region --value="DE"

Anschließend kann man sie überprüfen:

sudo -u www-data php occ config:system:get default_phone_region

Der Befehl sollte DE zurückgeben.

Alternativ kann die Einstellung in der config.php hinterlegt werden:

'default_phone_region' => 'DE',

Besonders bei der Verwaltung von Benutzerprofilen mit Telefonnummern ist diese Einstellung sinnvoll.

Nextcloud AppAPI-Bereitstellungs-Daemon konfigurieren oder deaktivieren

Neuere Nextcloud-Versionen unterstützen sogenannte externe Apps, kurz Ex-Apps.

Diese können zusätzliche Funktionen bereitstellen und werden außerhalb des eigentlichen Nextcloud-PHP-Prozesses ausgeführt.

Dafür verwendet Nextcloud die AppAPI.

Ist AppAPI aktiviert, aber kein passender Deployment-Daemon eingerichtet, erscheint ein entsprechender Hinweis in der Administrationsübersicht.

Was ist ein AppAPI Deployment-Daemon?

Ein Deployment-Daemon ist für die Bereitstellung und Verwaltung externer Apps zuständig.

Je nach eingesetzter Lösung können dafür zusätzliche Dienste oder Container benötigt werden.

Für neuere Nextcloud-Versionen steht beispielsweise HaRP zur Verfügung.

Die AppAPI-Warnung bedeutet nicht, dass die normalen Nextcloud-Funktionen wie Dateisynchronisierung, Kalender oder Kontakte nicht mehr funktionieren.

AppAPI deaktivieren, wenn sie nicht benötigt wird

Wer keine externen Apps verwenden möchte, kann AppAPI deaktivieren.

Dafür verwendet man folgenden Befehl:

sudo -u www-data php occ app:disable app_api

Damit wird die entsprechende Nextcloud-App deaktiviert.

Das sollte allerdings nur erfolgen, wenn keine installierten Funktionen von AppAPI abhängig sind.

Alternativ kann man unter den Verwaltungseinstellungen von AppAPI einen passenden Deployment-Daemon registrieren und als Standard festlegen.

Nextcloud Zwei-Faktor-Authentifizierung aktivieren

Eine weitere Meldung weist darauf hin, dass zwar Anbieter für die Zwei-Faktor-Authentifizierung vorhanden sind, ihre Verwendung jedoch nicht verpflichtend ist.

Bei der Zwei-Faktor-Authentifizierung, auch 2FA genannt, reicht das normale Passwort allein nicht für die Anmeldung aus.

Zusätzlich wird beispielsweise ein zeitlich begrenzter Zahlencode benötigt, der über eine Authenticator-App erzeugt wird.

Dadurch lässt sich das Risiko eines unbefugten Zugriffs reduzieren, wenn ein Passwort bekannt wird.

Nextcloud unterstützt hierfür unterschiedliche Verfahren, darunter TOTP-Apps und weitere Authentifizierungsmethoden.

Zwei-Faktor-Authentifizierung verpflichtend machen

Die verpflichtende Zwei-Faktor-Authentifizierung kann über die Nextcloud-Weboberfläche unter den Verwaltungseinstellungen im Bereich Sicherheit aktiviert werden.

Alternativ kann man die Aktivierung über OCC durchführen.

Für alle Benutzer:

sudo -u www-data php occ twofactorauth:enforce --on

Um die verpflichtende Verwendung nur für Mitglieder der Administratorgruppe zu aktivieren:

sudo -u www-data php occ twofactorauth:enforce --on --group=admin

Dabei sollte man unbedingt darauf achten, dass die betroffenen Benutzer bereits eine geeignete Authentifizierungsmethode eingerichtet haben beziehungsweise diese bei der nächsten Anmeldung einrichten können.

Außerdem empfiehlt es sich, Wiederherstellungscodes zu erzeugen und sicher aufzubewahren.

Wer sein Smartphone verliert und keine alternative Anmeldemöglichkeit eingerichtet hat, kann sonst den Zugriff auf das eigene Konto verlieren.

Für öffentlich erreichbare Nextcloud-Installationen ist insbesondere die Absicherung von Administratorkonten empfehlenswert.

Nextcloud Server-ID konfigurieren

Seit Nextcloud 33 wird für bestimmte Funktionen ein Verfahren zur Erzeugung eindeutiger Kennungen verwendet, das auf sogenannten Snowflake-IDs basiert.

Eine solche ID kann unter anderem Informationen über den Erstellungszeitpunkt und den erzeugenden Server enthalten.

Bei Installationen mit mehreren PHP-Servern ist es sinnvoll beziehungsweise erforderlich, dass diese unterschiedliche Server-IDs verwenden.

Die Einstellung heißt serverid.

Server-ID überprüfen

Mit folgendem Befehl kann man den bestehenden Wert anzeigen:

sudo -u www-data php occ config:system:get serverid

Wenn noch keine Server-ID vorhanden ist, kann man bei einem einzelnen PHP-Server beispielsweise den Wert 1 verwenden:

sudo -u www-data php occ config:system:set serverid --type=integer --value=1

Zulässig sind ganzzahlige Werte zwischen 0 und 511.

Wichtig ist, dass bei mehreren PHP-Servern jede Instanz eine eigene ID verwendet.

Einmal festgelegte Server-IDs sollten möglichst nicht mehr geändert werden, da sie Teil der generierten Kennungen sind.

Für eine kleine Nextcloud-Installation mit nur einem Webserver ist dieser Hinweis normalerweise weniger kritisch als fehlerhafte HTTPS-Einstellungen oder Datenbankprobleme.

Nextcloud-Protokollfehler finden und beheben

In der Administrationsübersicht zeigt Nextcloud häufig auch Fehler aus den vergangenen Tagen an.

Dabei können beispielsweise mehrere Dutzend oder sogar Hunderte Fehler gemeldet werden.

Die Zahl allein sagt allerdings noch wenig über die tatsächliche Ursache aus.

Ein einzelner Fehler kann durch einen regelmäßig ausgeführten Hintergrundjob mehrfach auftreten.

Ebenso können nach einem Update noch ältere Protokolleinträge vorhanden sein, obwohl das eigentliche Problem bereits behoben wurde.

Nextcloud-Logdatei finden

Die Nextcloud-Protokolldatei heißt standardmäßig:

nextcloud.log

Sie befindet sich normalerweise im konfigurierten Nextcloud-Datenverzeichnis, sofern kein abweichender Logpfad festgelegt wurde.

Das Datenverzeichnis kann man über OCC auslesen:

sudo -u www-data php occ config:system:get datadirectory

Anschließend kann man die letzten 100 Zeilen der Logdatei anzeigen:

tail -n 100 /PFAD/ZUM/DATENVERZEICHNIS/nextcloud.log

Der Beispielpfad muss entsprechend angepasst werden.

Bei Nextcloud-Installationen mit sehr großen Logdateien sollte man nicht die gesamte Datei auf einmal ausgeben.

Stattdessen empfiehlt es sich, gezielt nach Fehlermeldungen zu suchen oder die neuesten Einträge zu untersuchen.

Apache2-Protokolle überprüfen

Falls der Fehler mit Apache2 oder PHP zusammenhängt, kann auch das Apache-Fehlerprotokoll hilfreich sein.

Unter Ubuntu befindet es sich häufig hier:

/var/log/apache2/error.log

Die neuesten Einträge lassen sich folgendermaßen anzeigen:

sudo tail -n 100 /var/log/apache2/error.log

Alternativ kann man die aktuellen Apache-Meldungen über das Systemjournal abrufen:

sudo journalctl -u apache2 -n 100 --no-pager

Wenn Nextcloud hinter einem Reverse Proxy betrieben wird, sollte man bei Verbindungsproblemen zusätzlich die Protokolle des Reverse Proxys überprüfen.

Besonders hilfreich sind dabei HTTP-Statuscodes wie 403, 404, 502 oder 504.

Häufige Ursachen für Nextcloud-Logfehler

FehlerartMögliche Ursache
PHP-FehlerNicht kompatible App oder fehlendes PHP-Modul
DatenbankfehlerVerbindungsproblem, Abfragefehler oder fehlerhafte Migration
HTTP 404Falscher Pfad oder Rewrite-Regel
HTTP 502Backend-Webserver nicht erreichbar
HTTP 504Zeitüberschreitung zwischen Proxy und Backend
BerechtigungsfehlerFalsche Dateirechte
Cron-FehlerHintergrundjob fehlgeschlagen
Redis-FehlerCache-Server nicht erreichbar

Gerade nach größeren Updates empfiehlt es sich, die Protokolle erneut zu überprüfen.

Einzelne Warnungen sollten nicht einfach durch das Löschen oder Zurücksetzen der Logdatei versteckt werden.

Nextcloud Cronjobs richtig einrichten

Damit Nextcloud dauerhaft zuverlässig funktioniert, müssen verschiedene Hintergrundaufgaben regelmäßig ausgeführt werden.

Dafür stehen unter anderem AJAX, Webcron und Cron zur Verfügung.

Für einen selbst betriebenen Linux-Server empfiehlt sich normalerweise die Verwendung eines echten Cronjobs.

Dieser funktioniert unabhängig davon, ob gerade jemand die Weboberfläche geöffnet hat.

Nextcloud Cronjob überprüfen

Unter Ubuntu kann man mit folgendem Befehl die vorhandenen Cronjobs des Webserver-Benutzers anzeigen:

sudo crontab -u www-data -l

Ein typischer Nextcloud-Cronjob sieht folgendermaßen aus:

*/5 * * * * /usr/bin/php -f /var/www/html/cron.php

Damit wird Nextclouds cron.php alle fünf Minuten ausgeführt.

Falls APCu für PHP-CLI aktiviert werden muss, kann der Aufruf entsprechend angepasst werden:

*/5 * * * * /usr/bin/php -d apc.enable_cli=1 -f /var/www/html/cron.php

Den Cronjob kann man mit folgendem Befehl bearbeiten:

sudo crontab -u www-data -e

Wichtig ist, den Installationspfad an die eigene Umgebung anzupassen.

Wer bereits einen systemd-Timer für Nextcloud eingerichtet hat, sollte nicht zusätzlich denselben Cronjob verwenden.

Andernfalls können Hintergrundaufgaben unnötig mehrfach gestartet werden.

Außerdem sollte in den Nextcloud-Verwaltungseinstellungen überprüft werden, ob der Hintergrundmodus auf Cron eingestellt ist.

Nextcloud erfolgreich aktualisieren – OCC Upgrade und Updater

Bei größeren Nextcloud-Updates gibt es einen wichtigen Unterschied zwischen dem eigentlichen Updater und dem OCC-Befehl upgrade.

Der Updater übernimmt das Herunterladen und Austauschen der Nextcloud-Programmdateien.

Der Befehl occ upgrade führt dagegen die für die installierte Version benötigten Datenbankmigrationen und weiteren Upgrade-Schritte aus.

Installierte Nextcloud-Version überprüfen

Mit folgendem Befehl wird die installierte Version angezeigt:

sudo -u www-data php occ status

Wenn dort beispielsweise weiterhin versionstring: 34.0.5 steht, ist Nextcloud 34.0.5 installiert.

Auch wenn im Administrationsbereich bereits Nextcloud 35.0.2 angeboten wird, bedeutet das nicht, dass diese Version bereits installiert ist.

Nextcloud über die Kommandozeile aktualisieren

Bei einer manuellen Installation kann der integrierte Kommandozeilen-Updater verwendet werden:

cd /var/www/html

Anschließend:

sudo -E -u www-data php -d apc.enable_cli=1 updater/updater.phar

Der Updater prüft die Installation und führt anschließend durch die benötigten Schritte.

Nach dem Austausch der Programmdateien kann er auch das eigentliche OCC-Upgrade starten.

Falls dieser Schritt noch nicht ausgeführt wurde, kann man ihn manuell aufrufen:

sudo -E -u www-data php -d apc.enable_cli=1 occ upgrade

Wenn die Meldung No upgrade required erscheint, sind für die aktuell installierten Nextcloud-Dateien keine weiteren Upgrade-Migrationen erforderlich.

Das bedeutet allerdings nicht automatisch, dass bereits die neueste verfügbare Version installiert ist.

Wartungsmodus nach einem Upgrade überprüfen

Nach einem erfolgreichen Upgrade sollte man überprüfen, ob Nextcloud den Wartungsmodus verlassen hat:

sudo -u www-data php occ status

Wenn maintenance: false angezeigt wird, ist der Wartungsmodus deaktiviert.

Sollte Nextcloud nach einem vollständig abgeschlossenen Upgrade weiterhin im Wartungsmodus bleiben, kann dieser bei Bedarf manuell deaktiviert werden:

sudo -u www-data php occ maintenance:mode --off

Diesen Befehl sollte man nicht während einer noch laufenden Aktualisierung oder Datenbankmigration ausführen.

Nach dem Update zusätzliche Wartungsbefehle ausführen

Nach einem erfolgreichen Update können folgende Befehle sinnvoll sein:

sudo -u www-data php occ maintenance:repair --include-expensive
sudo -u www-data php occ db:add-missing-indices

Damit werden weitere Reparaturen durchgeführt und gegebenenfalls fehlende Datenbankindizes ergänzt.

Größere Reparaturarbeiten sollten möglichst in einem geplanten Wartungszeitraum stattfinden.

PHP-Version und PHP-Konfiguration überprüfen

Nextcloud benötigt eine zur jeweiligen Version passende PHP-Installation.

Welche PHP-Versionen unterstützt werden, hängt von der eingesetzten Nextcloud-Version ab.

Nextcloud 35 unterstützt beispielsweise PHP 8.4.

Die installierte PHP-Version kann man über das Terminal anzeigen:

php -v

Zusätzlich kann man überprüfen, welche PHP-Module aktiv sind:

php -m

Zu den wichtigen beziehungsweise häufig verwendeten Modulen gehören unter anderem:

PHP-ModulVerwendung
curlHTTP-Anfragen
gdBildverarbeitung
imagickErweiterte Bildverarbeitung
intlSprach- und Zeichenverarbeitung
mbstringVerarbeitung von Text
mysqli / pdo_mysqlMariaDB- und MySQL-Anbindung
redisCache und Dateisperren
apcuLokaler Cache
zipZIP-Dateien
xmlXML-Verarbeitung
opcacheBeschleunigung von PHP

Nicht alle Module sind für jede Nextcloud-Installation zwingend erforderlich.

Welche tatsächlich benötigt werden, hängt unter anderem von der Datenbank und den installierten Apps ab.

Unterschied zwischen PHP-CLI und PHP im Webserver

Ein wichtiger Punkt ist, dass die PHP-Version im Terminal nicht zwangsläufig mit der im Webserver verwendeten PHP-Version übereinstimmt.

Unter Ubuntu können beispielsweise mehrere PHP-Versionen parallel installiert sein.

Während php -v die Version der Kommandozeile anzeigt, kann Apache2 über ein eigenes PHP-Modul oder PHP-FPM eine andere Version verwenden.

Zur Kontrolle kann man beispielsweise Folgendes ausführen:

apache2ctl -M | grep php

Wenn PHP-FPM verwendet wird, sollte zusätzlich der entsprechende PHP-FPM-Dienst überprüft werden.

Auch die Konfigurationsdateien unterscheiden sich.

Typische Pfade unter Ubuntu sind:

/etc/php/8.4/cli/php.ini
/etc/php/8.4/apache2/php.ini
/etc/php/8.4/fpm/php.ini

Dabei muss nicht jede dieser Dateien auf jedem Server vorhanden sein.

Nach einer Änderung an PHP-Einstellungen muss gegebenenfalls Apache2 beziehungsweise PHP-FPM neu gestartet oder neu geladen werden.

Nextcloud mit Redis und APCu beschleunigen

Neben der Behebung von Sicherheitswarnungen lohnt sich auch ein Blick auf die Leistung der eigenen Nextcloud-Installation.

Besonders bei Installationen mit vielen Dateien oder mehreren gleichzeitig angemeldeten Benutzern können Caching-Systeme die Geschwindigkeit verbessern.

Nextcloud unterstützt dafür unter anderem APCu und Redis.

APCu eignet sich als schneller lokaler Cache für PHP.

Redis kann zusätzlich für einen verteilten Cache und für Dateisperren verwendet werden.

APCu als lokalen Cache verwenden

Falls APCu noch nicht installiert ist, kann man das Modul unter Ubuntu beispielsweise mit folgendem Befehl installieren:

sudo apt install php-apcu

Anschließend lässt sich in der Nextcloud-Konfiguration folgender Eintrag hinterlegen:

'memcache.local' => '\OC\Memcache\APCu',

Redis für Dateisperren verwenden

Redis kann auf Ubuntu über die Paketverwaltung installiert werden:

sudo apt install redis-server php-redis

Danach überprüft man, ob der Redis-Dienst läuft:

systemctl status redis-server

In der Nextcloud-Konfiguration kann Redis beispielsweise folgendermaßen eingerichtet werden:

'memcache.local' => '\OC\Memcache\APCu',

'memcache.distributed' => '\OC\Memcache\Redis',

'memcache.locking' => '\OC\Memcache\Redis',

'redis' => [
    'host' => '127.0.0.1',
    'port' => 6379,
],

Das Beispiel setzt voraus, dass Redis auf demselben Server läuft und über die lokale Adresse erreichbar ist.

Bei einem externen Redis-Server oder einer Verbindung über einen Unix-Socket muss die Konfiguration angepasst werden.

Außerdem sollte sichergestellt werden, dass Redis nicht ungeschützt aus dem Internet erreichbar ist.

Die Verwendung von Redis für Dateisperren ist besonders interessant, wenn viele Dateien synchronisiert oder regelmäßig größere Datenmengen übertragen werden.

Nextcloud Papierkorb und Dateiversionen aufräumen

Mit der Zeit können sich in Nextcloud zahlreiche gelöschte Dateien und ältere Dateiversionen ansammeln.

Diese belegen zusätzlichen Speicherplatz und können bei größeren Installationen einige Gigabyte ausmachen.

Nextcloud bringt dafür eigene Wartungsbefehle mit.

Papierkorb eines Benutzers leeren

Um den Papierkorb eines bestimmten Benutzers zu leeren, verwendet man:

sudo -u www-data php occ trashbin:cleanup BENUTZERNAME

BENUTZERNAME muss durch die entsprechende Nextcloud-Benutzerkennung ersetzt werden.

Alte Dateiversionen entfernen

Auch gespeicherte Dateiversionen lassen sich über OCC bereinigen:

sudo -u www-data php occ versions:cleanup BENUTZERNAME

Achtung: Diese Befehle löschen vorhandene Papierkorbinhalte beziehungsweise gespeicherte Dateiversionen des angegebenen Benutzers. Diese Daten können anschließend nicht mehr auf dem normalen Weg über Nextcloud wiederhergestellt werden.

Sie sollten deshalb nicht einfach regelmäßig ohne vorherige Prüfung ausgeführt werden.

Insbesondere versions:cleanup entfernt nicht nur besonders alte Versionen, sondern die vom Befehl erfassten Dateiversionen.

Für eine automatische Begrenzung des Speicherverbrauchs sind die Aufbewahrungsregeln von Nextcloud normalerweise die bessere Lösung.

Weitere wichtige Nextcloud-Sicherheits- und Leistungseinstellungen

Neben den bereits beschriebenen Warnungen gibt es noch einige Einstellungen, die man bei einem selbst betriebenen Nextcloud-Server regelmäßig überprüfen sollte.

HTTPS und SSL-Zertifikate

Eine öffentlich erreichbare Nextcloud-Installation sollte grundsätzlich über HTTPS aufgerufen werden.

Wer Nginx Proxy Manager verwendet, kann dort beispielsweise ein Let’s-Encrypt-Zertifikat einrichten und die Weiterleitung von HTTP auf HTTPS aktivieren.

Wichtig ist, dass das Zertifikat gültig ist und automatisch erneuert wird.

Außerdem sollte kontrolliert werden, ob Nextcloud selbst die öffentliche HTTPS-Adresse korrekt erkennt.

HTTP-Sicherheitsheader

Ein weiterer wichtiger Punkt sind HTTP-Sicherheitsheader.

Dazu gehört beispielsweise Strict-Transport-Security, kurz HSTS.

Dieser Header teilt dem Browser mit, dass eine Webseite künftig ausschließlich über HTTPS aufgerufen werden soll.

Bei einer Installation mit Nginx Proxy Manager kann HSTS abhängig von der Konfiguration direkt am Reverse Proxy gesetzt werden.

Bevor man HSTS aktiviert, sollte allerdings sichergestellt sein, dass HTTPS dauerhaft korrekt funktioniert.

Dateiberechtigungen überprüfen

Probleme mit Dateiberechtigungen können dazu führen, dass Nextcloud keine Dateien mehr schreiben kann oder Updates fehlschlagen.

Bei einer manuellen Ubuntu-Installation sollte der Webserver-Benutzer Zugriff auf die benötigten Verzeichnisse besitzen.

Allerdings sollte man nicht pauschal sämtliche Dateien mit Schreibrechten für alle Benutzer versehen.

Insbesondere Berechtigungen wie 777 sind keine sinnvolle Lösung und können ein Sicherheitsrisiko darstellen.

Nextcloud-Datenverzeichnis schützen

Das Datenverzeichnis sollte möglichst außerhalb des öffentlich erreichbaren Webverzeichnisses liegen.

Dadurch reduziert man das Risiko, dass Dateien durch eine falsche Webserver-Konfiguration direkt über das Internet abgerufen werden können.

Falls das Datenverzeichnis innerhalb des Webroots liegt, müssen die von Nextcloud vorgesehenen Zugriffsschutzregeln korrekt funktionieren.

Eine Änderung des Datenverzeichnisses sollte nicht ohne vorherige Planung und vollständige Datensicherung erfolgen.

Datenbank regelmäßig warten

Auch die Datenbank sollte regelmäßig überprüft werden.

Wichtig sind dabei unter anderem:

  • Ausreichend freier Speicherplatz
  • Eine unterstützte Datenbankversion
  • Regelmäßige Backups
  • Funktionierende Datenbankverbindungen
  • Fehlende Indizes nach Updates
  • Angemessene Speicher- und Cache-Einstellungen

Gerade bei stark genutzten Nextcloud-Installationen kann die Datenbank mit der Zeit sehr groß werden.

In solchen Fällen kann es sinnvoll sein, die Datenbanktabellen und die gespeicherten Informationen genauer zu analysieren, anstatt ausschließlich zusätzliche CPU-Kerne oder Arbeitsspeicher bereitzustellen.

Häufige Fragen zur Behebung von Nextcloud-Warnungen

Sind alle Nextcloud-Sicherheitswarnungen kritisch?

Nein. Manche Warnungen weisen auf konkrete Sicherheitsprobleme hin, während andere lediglich zusätzliche Konfigurationen oder empfohlene Optimierungen betreffen.

Trotzdem sollte man jede Meldung zumindest einmal überprüfen und ihre Ursache verstehen.

Können Nextcloud-Warnungen nach einem Update verschwinden?

Ja. Manche Meldungen entstehen durch unvollständig abgeschlossene Migrationen oder veraltete Konfigurationen.

Andere Warnungen können allerdings erst durch manuelle Anpassungen von Apache2, PHP, der Datenbank oder dem Reverse Proxy behoben werden.

Was bedeutet No upgrade required bei Nextcloud?

Diese Meldung bedeutet, dass für die aktuell installierten Nextcloud-Programmdateien keine weiteren Datenbank-Upgrades notwendig sind.

Sie bedeutet nicht automatisch, dass bereits die neueste verfügbare Nextcloud-Version installiert wurde.

Die tatsächliche Version kann mit occ status überprüft werden.

Muss man Nextcloud nach jedem Update reparieren?

Nein. Normalerweise führt Nextcloud die benötigten Standardmigrationen selbst aus.

Bestimmte aufwendige Arbeiten werden allerdings bewusst nicht immer automatisch durchgeführt.

Wenn entsprechende Warnungen angezeigt werden, können zusätzliche OCC-Befehle erforderlich sein.

Braucht Nextcloud unbedingt Redis?

Nein. Kleinere Nextcloud-Installationen können auch ohne Redis betrieben werden.

Insbesondere bei häufigen Dateizugriffen und mehreren Benutzern kann Redis aber die Zuverlässigkeit und Leistung verbessern.

Kann man Nextcloud auch ohne Docker betreiben?

Ja. Nextcloud kann vollständig auf einem Linux-Server installiert werden, ohne dass Docker benötigt wird.

Dafür werden unter anderem ein kompatibler Webserver, PHP und eine unterstützte Datenbank benötigt.

Die Installation kann auf einem normalen Ubuntu-Server, einer virtuellen Maschine oder innerhalb eines LXC-Containers erfolgen.

Muss man nach Änderungen an der config.php Apache2 neu starten?

Nicht grundsätzlich. Die Nextcloud-Konfigurationsdatei wird von PHP verarbeitet, sodass viele Änderungen ohne Neustart des Webservers wirksam werden.

Wenn dagegen Apache-Module, VirtualHosts oder PHP-Einstellungen geändert werden, kann ein Reload beziehungsweise Neustart erforderlich sein.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen