Über 10 Jahre RasPiFun.de
Über 1.000.000 Aufrufe der Hauptanleitung Raspberry Pi installieren: Raspberry Pi OS

Vielen Dank für Euer Interesse und weiterhin viel Spaß im Forum
Outi
Liebe Besucherin, lieber Besucher,

auf Grund extremer Spamregistrierungen wurden sehr viele Mailadressen gesperrt und die Freischaltung registrierter Accounts auf manuelle Überprüfung umgestellt.
Am häufigsten registrieren sich Spammer über die Server von WEB.de und GMail.com aber auch viele andere (teilweise nicht existierender) Mailadressen landen in der Registrierung.
Daher wurden Registrierungen für diese beiden Mailer (und weitere) generell gesperrt.
Selbst der Einsatz diverser Spamlisten-/Adressen-Checker reicht nicht aus, um ominösen Seelenverkäufern den Zutritt zu verwehren, daher diese strengen Maßnahmen.
Wenn Du eine der beiden (oder einen der anderen gesperrten Mailanbieter) nutzt und trotzdem Mitglied werden möchtest, oder aus anderen Gründen abgelehnt wurdest, sende bitte eine kurze Nachricht mit gewünschtem Nutzernamen und Mailadresse über das Kontaktformular oder eine Mail an mail@raspifun.de.

Ich bitte um Verständnis und wünsche trotzdem viel Spaß hier im Forum.

Nextcloud: Sicherheits- & Einrichtungswarnungen

Hier sammeln sich Fehlermeldungen und im Idealfall auch die dazu passenden Lösungen.
Antworten
Benutzeravatar

Themenstarter
Outi
Administrator
Administrator
Beiträge: 545
Registriert: 13.02.2015, 22:24
RasPis: 10+
Kontaktdaten:

Nextcloud: Sicherheits- & Einrichtungswarnungen

Beitrag von Outi »

In diesem Beitrag sollen bekannte Fehler von Nextcloud behandelt werden, die nach einem Update/Upgrade/Neuinstallation auftreten können.

Generell sei auf die offizielle Webseite von Nextcloud hingewiesen, die auch in Nextcloud aufgerufen werden kann:

Externer Link Warnings on admin page

Dieser Link bezieht sich momentan auf Nextcloud 32, ab dem dieser Fehlerbeitrag startet.
Vorversionen können aber ähnliche/gleiche Fehler anzeigen oder auch zukünftige, je nach Fehlerbereich.

Hier starte ich die Fehler, die mir nach der Installation von Nextcloud 32 über den Webinstaller untergekommen und ich versuche auch gleich die bei mir erfolgreichen Lösungen hinzuzufügen.

Wenn Ihr also andere Fehler beobachtet, schreibt sie gerne unter diesen Beitrag und/oder wenn Ihr dazu eine Lösung habt, immer her damit.

Hinweis:
Alle Lösungen, Befehle, Infos, .... auf eigene Gefahr und eigenes Risiko !!
Keine Haftung meinerseits auf irgendwas !!
BITTE vor jeglichen Aktionen ein Backup erstellen !!
Kein Backup, kein Mitleid !!

Bekannte Fehler und/oder fehlende Konfigurationen:

AppAPI-Bereitstellungs-Daemon
HTTPS-Zugriff und URLs
PHP OPcache
Fehler im Protokoll
Beginn des Wartungsfensters
MIME-Type-Migrationen verfügbar
In der Datenbank fehlen Indizes
E-Mail-Test
PHP Imagick-Modul


AppAPI-Bereitstellungs-Daemon
Der Standard-Deploy-Daemon von AppAPI ist nicht eingerichtet. Bitte in den Einstellungen einen Standard-Deploy-Daemon registrieren, um externe Apps (Ex-Apps) zu installieren.
Lösung:
Entweder die App AppAPI deaktivieren und/oder deinstallieren
oder fertig installieren/konfigurieren.

Bei diesem Daemon handelt es sich um eine seit Kurzem eingeführte neue Möglichkeit, neben der normalen Installation von Erweiterungen per App auch externe Erweiterungen über Docker Container hinzuzufügen.
Was Docker und dessen Container sind, möchte ich hier nicht beschreiben, das würde zu weit führen.
Weitere Infos zu diesem Daemon findet man hier: Externer Link AppAPI and External Apps

Ich weiß nicht, inwieweit dieser Zusatz auf einem Raspberry Pi Sinn macht, da hier doch einige Ressourcen zusätzlich verbraucht werden.
Wer hier Nachteile in Sachen Performance feststellt, befürchtet oder diese Erweiterung nicht benötigt, kann diese "Fehlermeldung" ignorieren.

Da ich diese Möglichkeit aber nicht vorenthalten möchte und befürchte, dass man sich hier evtl. einige interessante Erweiterungen verbaut, habe ich meinen Konfigurationsweg hier beschrieben.
Ich nutze hier einen Pi 5 mit 8GB und einer 240GB SSD (per USB/SATA Adapter), kann daher nicht über z.B. einen Pi 4B mit 4GB berichten und habe dazu mangels freien Pi 4B auch keine Erfahrung.

Aber um das Ganze nun zu integrieren, bin ich wie folgt vorgegangen:

Docker installieren:

Wie immer führen wir zur Sicherheit ein komplettes Update vom Raspberry Pi OS aus:

Code: Alles auswählen

sudo apt update && sudo apt full-upgrade -y
Der folgende Befehl ist ggf. überflüssig, vor allem wenn wir schon Zertifikate über LetsEncrypt oder generell SSL installiert haben.
ABER es schadet auch nicht, diesen zur Sicherheit nochmal laufen zu lassen.
Hierbei sollen die Pakete ca-certificates und curl nachinstalliert werden.

Code: Alles auswählen

sudo apt install ca-certificates curl -y
Bei mir waren beide Pakete bereits vorhanden und aktuell.
Im Normalfall muss dann auch folgendes Verzeichnis nicht angelegt werden, andernfalls erfolgt das durch:

Code: Alles auswählen

sudo install -m 0755 -d /etc/apt/keyrings
Jetzt holen wir uns den offiziellen GPG Schlüssel von/für Docker und speichern ihn im oben genannten Verzeichnis:

Code: Alles auswählen

sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
Jetzt noch die Rechte anpassen:

Code: Alles auswählen

sudo chmod a+r /etc/apt/keyrings/docker.asc
Nun fügen wir noch das Repository zu den APT Quellen hinzu, damit die Pakete für Docker auch gefunden werden:

Code: Alles auswählen

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Jetzt fehlt noch die Aktualisierung der Paketquellen, damit Docker auch berücksichtigt wird:

Code: Alles auswählen

sudo apt update
Wenn hier nichts aktualisiert wird, ist das auch ok, auf jeden Fall tauchen jetzt beim Update eine weitere Zeile auf, an denen man sieht, dass das Hinzufügen der Docker Paketquellen funktioniert hat.

Nun folgt die Installation von Docker selbst:

Code: Alles auswählen

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
Docker sollte auch gleich nach der Installation automatisch gestartet werden, was wir nachprüfen:

Code: Alles auswählen

sudo systemctl status docker
Hier ein Auszug der Anzeige:

Code: Alles auswählen

● docker.service - Docker Application Container Engine
     Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; preset: enabled)
     Active: active (running) since Fri 2025-10-10 18:13:25 CEST; 2min 28s ago
 Invocation: hier stehen kryptische Zeichen
TriggeredBy: ● docker.socket
       Docs: https://docs.docker.com
   Main PID: 2918 (dockerd)
      Tasks: 10
        CPU: 235ms
     CGroup: /system.slice/docker.service
             └─2918 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/conttainerd.sock

Okt 10 18:13:25 nextcloud dockerd[2918]: time="2025-10-10T18:13:25.036167608+02.... usw.
Okt 10 18:13:25 nextcloud dockerd[2918]: time="2025-10-10T18:13:25.304049734+02.... usw.
.... und weitere Zeilen
Wir sehen also in der zweiten Zeile ....docker.service; enabled; preset: enabled, das Ding läuft also.
Die weiteren Meldungen geben zwar Hinweise/Warnungen (z.B. fehlende Limits), jedoch soll es an dieser Stelle nicht um Feintuning gehen.

Zum Test starten wir das hello-world Image, welches zeigt, ob Docker korrekt installiert wurde:

Code: Alles auswählen

sudo docker run hello-world
Hier der Auszug der Ausgabe:

Code: Alles auswählen

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
xxxxxxxxxxxx: Pull complete
Digest: sha256:hier stehen kryptische Zeichen
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (arm64v8)
.... und weitere Zeilen
In der ersten Zeile wird zwar gemeckert, dass das Image lokal nicht gefunden wird, jedoch wird es umgehend in der aktuellsten Version heruntergeladen.

Wenn alles glatt gegangen ist, kann man die oben gezeigten beiden Zeilen sehen:

Code: Alles auswählen

Hello from Docker!
This message shows that your installation appears to be working correctly.
Den Rest der Erklärungen in der Ausgabe habe ich dann abgekürzt.

HaRP Docker Container installieren:

Oben hatten wir nun Docker an sich installiert, welches nun parallel neben Nextcloud läuft.
Nun installieren wir das System, welches sich um das Management mit den Containern kümmert (HaRP).
Was HaRP genau treibt, könnt Ihr auf Github nachlesen: Externer Link Nextcloud AppAPI HaProxy Reversed Proxy (HaRP)

Die Installation erfolgt nun mit folgendem Befehlsblock (bitte kompletten Block kopieren und im Terminal einfügen):

Code: Alles auswählen

sudo docker run \
  -e HP_SHARED_KEY="some_very_secure_password" \
  -e NC_INSTANCE_URL="https://127.0.0.1:8080" \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v `pwd`/certs:/certs \
  --name appapi-harp -h appapi-harp \
  --restart unless-stopped \
  -p 8780:8780 \
  -p 8782:8782 \
  -d ghcr.io/nextcloud/nextcloud-appapi-harp:release
Bitte some_very_secure_password durch ein eigenes und sicheres Passwort ersetzen !!

Nun dauert es einen Moment, bis alles heruntergeladen und konfiguriert wird.
Das kann dann am Ende etwa so aussehen:

Code: Alles auswählen

Unable to find image 'ghcr.io/nextcloud/nextcloud-appapi-harp:release' locally
release: Pulling from nextcloud/nextcloud-appapi-harp
52f827f72350: Pull complete
28da4c4f13d4: Pull complete
9194795cd5c0: Pull complete
55546cf6c866: Pull complete
e63a89e80553: Pull complete
4f4fb700ef54: Pull complete
7d6ad5202130: Pull complete
ee224d243505: Pull complete
602a08d33f5e: Pull complete
3748f080aa5d: Pull complete
0a809c99037b: Pull complete
efd653d6baad: Pull complete
46485813fc3c: Pull complete
Digest: sha256:hier steht ein langer kryptischer Key
Status: Downloaded newer image for ghcr.io/nextcloud/nextcloud-appapi-harp:release
Hier steht eine lange kryptische Zeichenfolge
Alle Infos dazu findet man hier: Externer Link Deployment configurations

AppAPI konfigurieren:

Nachdem wir nun Docker und dessen Konfiguration auf dem Pi abgeschlossen haben, müssen wir Nextcloud natürlich sagen, wo es diese findet, um darauf zugreifen zu können.

Dazu rufen wir im Adminitrationsmenü weiter unten den Punkt AppAPI auf:

Bild

Im neuen Fenster klicken wir auf den Button + Daemon registrieren:

Bild

Es erscheint folgende Voreinstellung:

Bild

Auf dem Bild ist beim oberen Pfeil normalerweise die Nextcloud URL im Feld eingetragen.
Je nachdem, wie man Nextcloud aufgerufen hat, erscheinen unterschiedliche URLs voreingetragen.
Ein Netzinterner Aufruf zeigt dort die interne URL, die auch nur intern funktioniert.
Ein Externer Aufruf zeigt die externe URL.
Ich habe testweise das Feld gelöscht (wie auf dem Bild zu sehen) und dann aufVerbindung prüfen geklickt, siehe unteren Pfeil.
Es hat trotzdem funktioniert und es erschien bei mir Verbindung zum Daemon erfolgreich.

Nun erfolgt ein Klick auf den Button Registrieren links neben dem Button zur Prüfung.

Es erfolgt eine kurze Abfrage nach dem Adminpasswort und danach ist die Registrierung des Daemons abgeschlossen:

Bild






Diese Beschreibung wird bald fortgesetzt ....


HTTPS-Zugriff und URLs
Unsicherer Zugriff auf die Website über HTTP. Es wird dringend empfohlen, deinen Server so einzurichten, dass HTTPS erforderlich ist. Ohne HTTPS funktionieren einige wichtige Webfunktionen wie "Kopieren in die Zwischenablage" oder "Service Worker" nicht!
Lösung:
Hier entweder die Verschlüsselung einrichten, nachdem der Zugriff statt http per https aufgerufen wird.
Dies wird normalerweise in der Anleitung zu Nextcloud beschrieben.
Wer Nextcloud nur intern ohne Verschlüsselung betreiben will, kann diese Meldung ignorieren.
Wer Nextcloud nur intern aber trotzdem verschlüsselt nutzen möchte, kann ein eigenes selbstzertifiziertes Zertifikat verwenden.
Normalerweise müsste eins mit dem Namen ssl-cert-snakeoil.key im Verzeichnis /etc/ssl/private liegen, welches bei der Aktivierung von SSL im Apachen eingebunden werden sollte.
Beim Aufruf von Nextcloud muss dieses Zertifikat im Browser zugelassen/installiert werden.
Fehler im Protokoll
XX Fehler in den Protokollen seit XX. Monat Jahr, Uhrzeit
Lösung:
Hier muss man ins Protokoll schauen, um zu sehen, was wirkliche Fehler sind oder nur Hinweise.
Z.B. werden Loginfehlversuche ebenfalls im Protokoll vermerkt, wo man normalerweise nichts ändern muss.
Das Protokoll findet man im Administrationsbereich unter Protokollierung.

Wenn alle Fehler im Protokoll beseitigt sind und/oder man es heruntergeladen hat, kann man es mit folgendem Befehl zurücksetzen:

Code: Alles auswählen

sudo -u www-data truncate /var/www/data/nextcloud.log --size 0
Hier bin ich noch am überlegen, ob für das Protokoll ein eigener Beitrag Sinn macht.
PHP OPcache
Das PHP OPcache-Modul ist nicht ordnungsgemäß konfiguriert. Der "OPcache interned strings"-Puffer ist fast voll. Um sicherzustellen, dass sich wiederholende Strings effektiv zwischengespeichert werden können, wird empfohlen, "opcache.interned_strings_buffer" mit einem Wert größer als "8" in der PHP-Konfiguration zu setzen.
Lösung:
Den oben genannten Wert ändern wir in der genannten Datei php.ini, indem wir diese aufrufen:

Code: Alles auswählen

sudo nano /etc/php/8.X/fpm/php.ini
Das 8.X durch die aktuell installierte Version ersetzen !!

Im Editor suchen wir per Tastenkombination <strg><w> nach opcache.interned_strings_buffer.
In der gefundenen Zeile wird ganz am Anfang das # entfernt, um die Zeile zu aktivieren.
Am Ende der Zeile steht ein Wert in MB (MegaByte), vordefiniert ist 8 (identisch mit dem Standardwert bei deaktivierter Zeile).
Bei einigen Fundstellen im Internet habe ich 64 als Wert gefunden.
Größere Werte funktionieren auch nicht ohne Weiteres, bei mir folgten bei größeren Werten Fehlermeldungen und der Webserver startete nicht mehr.

Code: Alles auswählen

; The amount of memory for interned strings in Mbytes.
opcache.interned_strings_buffer=64
Danach die Datei speichern und beenden und einen generellen Restart durchführen:

Code: Alles auswählen

sudo service apache2 reload && sudo service php8.X-fpm reload && sudo service mysql restart
Bei php8.X-fpm wieder das 8.X durch die eigene Version ersetzen.
Beginn des Wartungsfensters
Der Server hat keine konfigurierte Startzeit für das Wartungsfenster. Das bedeutet, dass ressourcenintensive tägliche Hintergrundaufgaben auch während deiner Hauptnutzungszeit ausgeführt werden. Wir empfehlen, das Wartungsfenster auf eine Zeit mit geringer Nutzung festzulegen, damit Benutzer weniger von der Belastung durch diese umfangreichen Aufgaben beeinträchtigt werden.
Lösung:
Hier muss in der Konfiguration die Startzeit des Wartungsfensters eingetragen werden:

Code: Alles auswählen

sudo nano /var/www/html/config/config.php
In dieser Datei die Zeile

Code: Alles auswählen

  'maintenance_window_start' => 1,
kurz vor dem Ende hinzufügen.
Das Beispiel mit der 1 stellt die Uhrzeit des Zeitfensters auf den Zeitraum 01:00 UTC and 05:00 UTC (Nachts).

UTC = Universal Time Coordinated

Alle Infos dazu für Nextcloud findet man hier: Externer Link maintenance_window_start

Da wir hier in DE von der UTC geografisch abweichen, ist zur normalen Uhrzeit +1h zu berücksichtigen, in der Sommerzeit +2h.

Ich habe bei mir im Moment also als Startzeit für das Fenster 2 eingetragen, damit sollte die Wartung irgendwann zwischen 03:00 Uhr und 07:00 Uhr Normalzeit starten und zur Sommerzeit zwischen 04:00 und 08.00 Uhr.

Man kann diese Konfiguration auch per occ Befehl absetzen aber ich schaue gerne in die Konfig, was ich irgendwann mal eingestellt habe.

Wer dieses Zeitfenster ganz deaktivieren will, gibt laut Doku den Wert 100 ein, muss aber damit rechnen, dass die Wartung irgendwann erfolgt, im ungünstigen Fall, wenn der Server zu gut besucht wird.
MIME-Type-Migrationen verfügbar
Eine oder mehrere MIME-Type-Migrationen sind verfügbar. Gelegentlich werden neue MIME-Typen hinzugefügt, um bestimmte Dateitypen besser handhaben zu können. Die Migration der MIME-Typen dauert bei größeren Instanzen lange, daher erfolgt sie bei Upgrades nicht automatisch. Verwende den Befehl `occ maintenance:repair --include-expensive`, um die Migrationen durchzuführen.
Lösung:

Code: Alles auswählen

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

In der Datenbank fehlen Indizes
Einige fehlende optionale Indizes wurden erkannt. Gelegentlich werden neue Indizes hinzugefügt (von Nextcloud oder installierten Anwendungen), um die Datenbankleistung zu verbessern. Das Hinzufügen von Indizes kann manchmal eine Weile dauern und die Leistung vorübergehend beeinträchtigen, daher wird dies bei Upgrades nicht automatisch durchgeführt. Sobald die Indizes hinzugefügt wurden, sollten Abfragen an diese Tabellen schneller sein. Bitte den Befehl `occ db:add-missing-indices` verwenden, um sie hinzuzufügen. Fehlende Indizes: "properties_name_path_user" in Tabelle "properties"
Lösung:

Code: Alles auswählen

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

E-Mail-Test
Die E-Mail-Serverkonfiguration wurde noch nicht festgelegt oder überprüft. Bitte zu den Grundeinstellungen gehen, um die Einstellungen vorzunehmen. Anschließend die Schaltfläche "E-Mail senden" unterhalb des Formulars verwenden, um die Einstellungen zu überprüfen.
Lösung:
Hier weißt das System darauf hin, dass noch keine Mailkonfiguration eingerichtet wurde.
Wer Nextcloud ohne Mailing nutzen möchte, kann diesen Punkt selbstverständlich ignorieren.
Da Mailing aber u.U. doch sehr hilfreich sein kann, habe ich das bei mir eingerichtet.

Für diese Mailkonfiguration rufen wir wieder die Grundeinstellungen auf:

Bild

Auf der folgenden Seite scrollen wir weiter runter bis zu den Mailservereinstellungen:

Bild

Dort geben wir die Daten ein, die unser Mailprovider (oder wer einen eigenen Server betreibt, die Daten des eigenen Servers) ein und klicken anschließend auf E-Mail senden.

Für die Änderung der Einstellungen werden wir nach unserem Adminpasswort gefragt, welches wir dann eingeben und Bestätigen.

Bevor wir aber eine Testmail absenden können, erscheint nach dem Sendeversuch folgende Fehlermeldung neben dem Sendebutton:

Code: Alles auswählen

AxiosError: Request failed with status code 400
Früher kam eine aussagekräftigere Meldung, die darauf hinwies, dass für das Senden einer Mail eine persönliche Mailadresse konfiguriert sein muss.

Dafür gehen wir im linken Menü auf Persönliche Informationen:

Bild

Dort sehen wir in der rechten Hälfte das Maileingabefeld, in das wir unsere Mailadresse eintragen.
Natürlich können hier auch gleich alle anderen Profilfelder ausgefüllt werden.

Bild

Jetzt gehen wir wieder zurück zu den Grundeinstellungen zur Mailserverkonfiguration und klicken erneut auf den Button E-Mail senden.
Hat alles geklappt, sollten wir in unserem Postfach unseres Mail-Clients eine Testmail vorfinden und hinter dem Button erscheint E-Mail gesendet.
PHP Imagick-Modul
Das PHP-Modul "imagick" in dieser Instanz hat keine SVG-Unterstützung. Für eine bessere Kompatibilität empfiehlt es sich, es zu installieren.
Lösung:

Code: Alles auswählen

sudo apt install libmagickcore-dev -y
Das installiert neben der fehlenden SVG Unterstützung noch ein paar weitere gebräuchliche Formate nach.

Der alte Befehl aus den Vorversionen

Code: Alles auswählen

sudo apt install libmagickcore-6.q16-6-extra -y
funktioniert nicht mehr, verm. weil sich auch die ImageMagick Version inzw. weiter entwickelt hat.
Das Paket wird nicht mehr gefunden.

Mit dem Paket darüber wird eine DEV Version installiert, die das fehlende Format beinhaltet, installiert aber auch eine ganze Menge anderes Zeug.
Aber mir ist im Moment keine andere Lösung zum momentanen Zeitpunkt bekannt und ich möchte eben SVG benutzen.
;) Gruß Outi :D
Antworten