Nextcloud im Container – Flexible Installation mit Docker

Nextcloud ist ein sehr populärer freier, selbst-hostbarer Cloudservice, für das Speichern von Daten (z. B. Dateien, Kalender, Kontakte etc.) auf einem Server.
Der Server benötigt dafür den Dienst keine großen Ressourcen und kann deshalb ein kleiner Einplatinenrechner, wie der Raspberry Pi, sein. Die Installation von Nextcloud mit Hilfe von Docker Images ist relativ einfach umzusetzen, was die Einsatzmöglichkeiten und die Flexibilität noch erhöhen.

In diesem Beitrag wird Nextcloud und die notwendigen Tools ausschließlich mit Docker Containern installiert und konfiguriert.

Nextcloud mit Ansible installieren und konfigurieren

In einem Versuchsaufbau habe ich getestet mit Ansible einen Raspberry Pi zu konfigurieren, die aktuellste Nextcloud-Version zu installieren und einzurichten.

Es ging mir in diesem Vorhaben darum die einzelnen Schritte in Ansible vollständig selbst zu konfigurieren und zu erstellen, um die Funktionsweise besser zu verstehen.

Imagebackup-Skript – Optimiert

Photo by Markus Winkler on Unsplash

Das Skript imagebackup.sh ermöglicht es dir automatisiert und in regelmäßigen Abständen ein komplettes Image der SD-Karte deines Raspberry Pis als Backup auf ein externes Speichermedium zu schreiben. Ich nutze das für meine beiden Pis auf denen eine Nextcloud und Pi-hole läuft.

Raspberry Pi startet nicht mehr – A start job is run-in for /dev/disk/by-uuid/xxxxxxx

Photo by Karla Hernandez on Unsplash

Ich hatte seit einigen Wochen ein Problem mit meinem Raspberry Pi. Der kleine PC ist in fast regelmäßigen Abständen einfach stehen geblieben. So hat es für mich jedenfalls ausgeschaut. Es gab keinen Hinweis in den Log Files auf ein Fehlverhalten eines Dienstes oder eines Programms.

Auf dem Raspberry Pi läuft seit ein paar Jahren eine Nextcloud, also sind Ausfälle der kleinen Server nicht erwünscht, weshalb ich automatische Backups erstelle und auch die SD-Karte tausche ich in regelmäßigen Abständen, so alle zwei Jahre, austausche.

Das Problem

In regelmäßigen Abständen, also eigentlich immer an den gleichen Wochentagen blieb mein Raspberry Pi einfach stehen. Es war kein Zugriff per SSH mehr möglich und die Nextcloud nicht mehr erreichbar. Da der kleine PC Headless läuft war eine genauere Fehleranalyse auf einem Monitor nicht möglich.

Ich habe deshalb den Pi an einen Monitor angeschlossen und neugestartet. Zuvor habe ich alle Peripheriegeräte angeschlossen und wieder neu angesteckt.

Das komische, der Pi bootete. Bei ein paar Versuchen gab es keine Probleme, der kleine PC startete ohne Vorkommnisse und war dann schließend per SSH erreichbar. Die Nextcloud funktionierte.

Also habe ich fleißig weiter neugestartet und siehe da, nach einige mehr Versuchen startete der Pi in den Recovery Mode.

Die Fehlermeldung auf dem Monitor zeigte:

A start job is run-in for /dev/disk/by-uuid/xxxxxxx

Danach bootete der Pi in den Recovery Mode.

Jetzt war auch klar, weshalb nichts in den Log Files aufgetaucht ist. Es wurde der Recovery Mode gestartet. Nach einem Neustart des Pis waren diese Protokolle dann wieder weg und eine Fehlersuche ohne einen angeschlossenen Monitor aussichtslos. Headless war das Problem gar nicht zu entdecken!

Die Lösung

Zusätzlich neben einer normalen Festplatten, auf der die Daten und das temporäre Upload-Verzeichnis für die Nextcloud liegen, habe ich noch zwei USB-Sticks an den Pi angeschlossen.

Auf einem speichere ich automatisch eine komplette Kopie der SD-Karte, um eben schnell und einfach die Karte tauschen zu können. Wie das funktioniert, habe ich hier beschrieben: Nextcloud – SD-Karte schnell und einfach ersetzen

Zum Codeberg-Repo https://codeberg.org/strobelstefan.org/imagebackup

Der zweite USB-Stick ist für das Speichern der Nextcloud-Konfiguration und für den Dump der MariaDB vorgesehen. Auf dem gleiche USB-Stick lasse ich auch jeden Tag einen Export der Kalender erstellen. Nextcloud – Datensicherung von Kalendern und Adressbüchern automatisch erstellen

Zum Codeberg-Repo: https://codeberg.org/strobelstefan.org/kalenderbackup

Nachdem also der Monitor angeschlossen war, konnte ich die Fehlermeldung sehen

A start job is run-in for /dev/disk/by-uuid/xxxxxxx

Quick Fix

Das Problem war der USB-Stick für die MariaDB-Dumps. Er wurde nicht gefunden und das System bootete in den Recovery Mode. Anscheinend hat der Stick nach Jahren im Dienst den Geist aufgegeben, aber eben auch nicht immer.

Also Stick ersetzen und Problem behoben.

So leicht war es dann aber doch nicht. Es musste eine nachhaltige Lösung her, damit so was nicht mehr auftaucht.

Nachhaltige Lösung

Das eigentliche Problem an der ganzen Geschichte war, dass ich den USB-Stick über die /etc/fstab bereits beim Booten des Pis habe einbinden lassen.

UUID=xxxxxxxx /mnt/nextcloud ntfs defaults,auto,umask=000,users,rw 0 0

Damit der Pi auch bei einem Fehler mit dem externen Speicher ohne Probleme startet, habe ich die Zeile minimal abgeändert:

UUID=xxxxxxxx /mnt/nextcloud ntfs defaults,noauto,umask=000,users,rw 0 0

Der Unterschied ist das kleine no. Dadurch wird der USB-Stick nicht automatisch beim Start des Pis eingebunden. In meinen Skripten für die Sicherung habe ich eine kleine Änderung vorgenommen, damit es weiterhin funktioniert. (Die Änderung habe ich bereit in den Dateien in den Codeberg-Repos vorgenommen.)

Also es ist nicht immer die SD-Karte schuld, wenn es Problem beim Booten eines Raspberry Pi gibt, sondern es kann auch ein USB-Stick sein.

Eine Schritt für Schritt Anleitung zur eigenen Nextcloud findest du in meinem Git-Repository auf Codeberg https://codeberg.org/strobelstefan.org/nextcloud-installation-configuration/src/branch/main/nextcloud-installation.md

Photo by Karla Hernandez on Unsplash


Gib mir gerne einen Kaffee ☕ aus!

Wenn dir meine Beiträge gefallen und geholfen haben, dann kannst du mir gerne einen Kaffee ☕ ausgeben.

PayPal Logo


liberapay.com/strobelstefan.org


Kaffee via Bitcoin

bc1qfuz93hw2fhdvfuxf6mlxlk8zdadvnktppkzqzj