Nextcloud ist inzwischen eine sehr verbreitete Software zur Speicherung von Dateien, Kontakten, Kalendereinträgen und vielem mehr auf einem eigenen Server.
Dieser Beitrag soll die Einrichtung und Verwendung des Nextcloud Clients auf einem Raspberry Pi zur Synchronisierung von Dateien beschreiben.
Inhalt
- Installation
- Installation auf Raspberry Pi OS Bookworm
- Installation auf RaspOS/Raspbian Bullseye
- Alternative: Selbst kompilieren
- GUI-Client
- CMD-Client
- Mögliche Parameter für den CMD-Client
- Automatische Synchronisation mit dem CMD-Client
Installation
Wie der Nextcloud Client installiert wird, hängt etwas von dem verwendeten System ab.
Installation auf Raspberry Pi OS Bookworm
Unter dem aktuellen (Stand April 2024) Raspberry Pi OS “Bookworm” ist der Nextcloud Client als nextcloud-desktop
in den Standard-Paketquellen vollständig enthalten und kann darüber installiert werden.
1 | sudo apt update |
Installation auf RaspOS/Raspbian Bullseye
Bei älteren Systemen gestaltet sich die Installation etwas aufwändiger, da hier nicht alle erforderlichen Teile in den Paketquellen enthalten sind.
Zum Glück können jedoch die originalen Debian-Pakete genutzt werden, was im folgenden Abschnitt beschrieben ist.
Alte Anleitung einblenden
Je nachdem ob wir lediglich den CMD-Client oder den grafischen GUI-Client haben wollen, brauchen wir zunächst unterschiedliche Pakete aus den Debian-Quellen:
- CMD:
libnextcloudsync0
,nextcloud-desktop-cmd
- GUI:
libnextcloudsync0
,libqt5webenginecore5
,libqt5webenginewidgets5
,nextcloud-desktop
Natürlich können auch beide Varianten zusammen, wie im folgenden beschrieben, installiert werden.
Da die einzelnen Pakete jeweils eigene Abhängigkeiten haben, die zum Glück aber aus den normalen Paketquellen des Systems bedient werden können, werden bei den folgenden dpkg -i ...
Befehlen einige Abhängigkeitsfehler gemeldet werden. Diese können wir aber ganz einfach mittels apt install --fix-broken
reparieren.
libnextcloudsync0 (CMD und GUI)
Original Debian-Paket: https://packages.debian.org/bullseye/libnextcloudsync0
1 | wget http://ftp.de.debian.org/debian/pool/main/n/nextcloud-desktop/libnextcloudsync0_3.1.1-2+deb11u1_armhf.deb |
nextcloud-desktop-cmd (CMD)
Original Debian-Paket: https://packages.debian.org/bullseye/nextcloud-desktop-cmd
1 | wget http://ftp.de.debian.org/debian/pool/main/n/nextcloud-desktop/nextcloud-desktop-cmd_3.1.1-2+deb11u1_armhf.deb |
libqt5webenginecore5 (GUI)
Original Debian-Paket: https://packages.debian.org/bullseye/libqt5webenginecore5
1 | wget http://ftp.de.debian.org/debian/pool/main/q/qtwebengine-opensource-src/libqt5webenginecore5_5.15.2+dfsg-3_armhf.deb |
libqt5webenginewidgets5 (GUI)
Original Debian-Paket: https://packages.debian.org/bullseye/libqt5webenginewidgets5
1 | wget http://ftp.de.debian.org/debian/pool/main/q/qtwebengine-opensource-src/libqt5webenginewidgets5_5.15.2+dfsg-3_armhf.deb |
nextcloud-desktop (GUI)
Original Debian-Paket: https://packages.debian.org/bullseye/nextcloud-desktop
1 | wget http://ftp.de.debian.org/debian/pool/main/n/nextcloud-desktop/nextcloud-desktop_3.1.1-2+deb11u1_armhf.deb |
Test der Installation
Damit ist die Installation auf RaspOS bzw. Raspbian Bullseye auch schon abgeschlossen und wir können den Client verwenden:
1 | nextcloudcmd -v |
Weiter unten findet ihr noch ein paar Informationen zur Verwendung.
Alternative: Selbst kompilieren
Als Alternative zu den bereitgestellten Paketen kann man den Nextcloud Client auch selbst kompilieren. Dabei können wir auch wählen, welche genau Version wir installieren möchten.
Diese Variante kann zudem verwendet werden, wenn für die genutzte Architektur keine Pakete verfügbar sind.
Hinweis
Das Kompilieren kann auf einem Raspberry Pi je nach Modell durchaus sehr lange dauern.
Vorbereitungen
Wir gehen hier von einem aktuellen Raspberry Pi OS Bookworm aus. Bei älteren Versionen können die benötigten Pakete unter Umständen anders heißen oder nicht verfügbar sein.
Zunächst installieren wir die für den Build benötigten Pakete:
1 | sudo apt update |
Quellen herunterladen und kompilieren
Jetzt können wir den aktuellen Quellcode von GitHub herunterladen (klonen), die Version auswählen und den Client kompilieren.
Bei der letzten Aktualisierung dieser Anleitung war die Version 3.12.3 die aktuellste stabile Version, welche wir hier auch verwenden.
Durch Angabe von -DCMAKE_INSTALL_PREFIX=/usr/local/
wird der Nextcloud Client später global im System unter /usr/local/
installiert. Dieser Pfad kann auch geändert werden, wenn man wo anders hin installieren möchte.
1 | git clone https://github.com/nextcloud/desktop.git nextcloud-desktop-src |
Tipp
Zeit für den ersten Kaffee! ☕️
Da hier u.a. schon einige Grafiken erstellt werden, dauert dieser Schritt etwas.
Wenn dies erfolgreich durchgelaufen ist, dann sind wir bereit für das eigentliche Kompilieren, wobei wir -j4
mit angeben, damit bis zu 4 CPU-Kerne gleichzeitig genutzt werden.
1 | make -j4 |
Tipp
Zeit für den zweiten Kaffee! ☕️
Das Kompilieren auf dem Raspberry Pi kann je nach Modell bis zu einer Stunde (oder sogar noch länger) dauern.
Um den Nextcloud Client nun im System zu installieren rufen wir folgendes auf:
1 | sudo make install |
Wenn wir nun versuchen den Nextcloud Client zu starten erhalten wir diese Fehlermeldung:
1 | nextcloudcmd -v |
Diesen Fehler beheben wir wie folgt, wobei nur die Einträge hinzugefügt werden, die noch fehlen:
1 | echo 'LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib' | sudo tee -a /etc/environment |
Anschließend können wir den Nextcloud Client aufrufen.
1 | nextcloudcmd -v |
Aufräumen nach der manuellen Installation
Haben wir alles fertig installiert, dann können wir optional auch einige Pakete wieder entfernen und das Verzeichnis mit dem Quellcode löschen:
1 | sudo apt remove cmake extra-cmake-modules libkf5archive-dev libkf5kio-dev \ |
Dies gibt knapp 1,5 Gb an Speicherplatz wieder frei.
GUI-Client
Der normale grafische Client kann über das Anwendungsmenü oder über ein Terminal mittels nextcloud gestartet werden.
Möchtet ihr den Nextcloud Client automatisch beim Start des Raspberry Pi mit starten lassen (Autostart), dann erstellen wir einen symbolischen Link aus dem autostart-Verzeichnis des aktuellen Nutzers auf den Nextcloud desktop-Starter.
1 | mkdir -p .config/autostart |
Damit wird dann der Client automatisch nach dem Login des Benutzers gestartet.
CMD-Client
Zusätzlich zu dem GUI-Client gibt es noch den CMD-Client nextcloudcmd
. Über diesen kann die Synchronisation über ein Terminal durchgeführt werden und es wird keine grafische Oberfläche benötigt.
Anders als der GUI-Client führt der CMD-Client nur ein mal die Synchronisation durch und beendet sich anschließend wieder. Für eine regelmäßige Synchronisation müssen wir also zum Beispiel einen CRON-Job verwenden.
Der Aufruf des CMD-Clients ist eigentlich ganz einfach:
1 | nextcloudcmd [Optionen] <lokales_Verzeichnis> <Server_URL> |
Als Optionen können Benutzername und Passwort mit angegeben werden, was jedoch nicht besonders sicher ist. Besser ist es hier die Option -n
zu verwenden, wodurch netrc
für den Login beim Server verwendet wird. Netrc ist denkbar einfach. Wir erstellen einfach im Home-Verzeichnis eine Datei namens .netrc
, welche den Server, Benutzername und Passwort nach folgendem Muster enthält und passen die Dateirechte an:
1 | nano ~/.netrc |
1 | machine mein.server.de |
1 | chmod 0600 ~/.netrc |
Hier noch ein Beispiel zur Nutzung des CMD-Clients mit netrc
. Das lokale Verzeichnis ist hierbei /var/data/cloud
. Vom Server wird die WebDAV-URL benötigt.
1 | nextcloudcmd --non-interactive -n /var/data/cloud/ https://mein.server.de/ |
Mögliche Parameter für den CMD-Client
Parameter | Beschreibung |
---|---|
--user [Name] , -u [Name] | [Name] als Benutzernamen für den Login verwenden. |
--password [Passwort] , -p [Passwort] | [Passwort] für den Login verwenden. |
-n | Netrc (Datei ~/.netrc ) für den Login verwenden. |
--non-interactive | Nicht nachfragen, sondern eine nicht interaktive Ausführung erlauben. |
--slient , -s | Unterdrückt gesprächige Logmeldungen. |
--logdebug | Zeigt zusätzliche Logmeldungen. |
--httpproxy [Proxy] | Einen HTTP-Proxyserver nach dem Muster http://server:port verwenden. |
--trust | Auch ungültigen oder selbst signierten SSL-Zertifikaten vertrauen. |
--exclude [Datei] | Eine Datei mit einer Liste von Dateien und Verzeichnissen angeben, die nicht vom Client zum Server synchronisiert werden sollen. |
--unsyncedfolders [Datei] | Eine Datei mit einer Liste von Dateien und Verzeichnissen angeben, die nicht vom Server zum Client synchronisiert werden sollen. |
--path | Pfad zu einem Verzeichnis auf dem Server. |
--max-sync-retries [n] | Maximale Anzahl an wiederholten Synchronisationsversuchen. Standard ist 3. |
-h | Auch versteckte Dateien (die mit einem . beginnen) mit Synchronisieren. |
--uplimit [n] | Bandbreite beim Upload begrenzen in KB/s. |
--downlimit [n] | Bandbreite beim Download begrenzen in KB/s. |
--version , -v | Die Version des Nextcloud Clients anzeigen und dann beenden. |
Automatische Synchronisation mit dem CMD-Client
Für eine automatische Synchronisation mittels CRON-Job erstellen wir uns zuerst ein kleines Bash-Skript unter /home/pi/nextcloudcmd-sync.sh
mit folgendem Inhalt, wobei das lokale Verzeichnis und die Serveradresse, sowie gegebenenfalls die Parameter noch angepasst werden müssen:
1 |
|
Diese Datei machen wir dann ausführbar und fügen einen Eintrag in der crontab
hinzu.
1 | chmod +x /home/pi/nextcloudcmd-sync.sh |
1 | # [...] |
Hier in dem Beispiel wird die Synchronisation jeden Tag nachts um 4 Uhr gestartet.
Das Ergebnis der Synchronisation kann jederzeit in der Log-Datei /var/log/nextcloudcmd-sync.log
eingesehen werden.
Damit die Log-Datei auch vom Nutzer pi geschrieben werden kann, müssen wir diese noch einmalig anlegen und die Rechte entsprechend anpassen:
1 | sudo touch /var/log/nextcloudcmd-sync.log |
Logrotate einrichten
Damit die Log-Datei /var/log/nextcloudcmd-sync.log
mit der Zeit nicht endlos groß wird und unnötig Speicherplatz belegt, legen wir noch eine Konfiguration für Logrotate für diese Datei an.
1 | sudo nano /etc/logrotate.d/nextcloudcmd-sync |
1 | /var/log/nextcloudcmd-sync.log { |
Mit dieser Konfiguration führt der Logrotate vom System dann wöchentlich eine Rotation der Log-Datei durch, wobei immer die letzten vier Kopien gespeichert werden. Die ältesten drei Kopien werde zudem gepackt um Speicherplatz zu sparen.