Im Folgenden zeige ich euch, wie man den ownCloud-Client auf dem Raspberry Pi installiert.

Durch den ownCloud-Client kann der RasPi beispielsweise im lokalen Netzwerk alle Daten aus eurer Cloud bereitstellen und sich zentral um die Synchronisierung mit dem Server kümmern und ihr spart euch den Client auf jedem einzelnen Rechner zu installieren.

Der ownCloud-Client auf dem RasPi kann dann “live” synchronisieren (wie der normale Desktop-Client), oder in einem festen Zeittakt über cron die Synchronisierung mit den Server vornehmen.

Hinweis: Diese Anleitung installiert die Version 2.3.4 des ownCloud-Clients. Für neuere Versionen wird eine aktuellere Version von QT benötigt, als in den Paketquellen von Raspbian enthalten ist.

 

Installation

Zuerst müssen wir die benötigten Quellen und Pakete herunterladen beziehungsweise installieren.

sudo apt-get install libsqlite3-dev qtbase5-dev libqt5webkit5-dev libssl-dev qttools5-dev-tools qt5keychain-dev cmake git
mkdir -p ~/dev
cd ~/dev
git clone --branch 2.3.4 --depth 1 http://github.com/owncloud/client.git oc-client
cd oc-client
git submodule init
git submodule update

Anschließend geht es an das Kompilieren des ownCloud-Clients, was einige Zeit dauern kann (ca. 25 Minuten beim RasPi 3B).

mkdir client-build
cd client-build
cmake -DCMAKE_BUILD_TYPE="Release" ../
make
sudo make install
sudo ldconfig

Nun ist der ownCloud-Client installiert und kann verwendet werden. Die korrekte Installation können wir mit owncloudcmd -v prüfen.

Sollte dies die Fehlermeldung owncloudcmd: error while loading shared libraries: libowncloudsync.so.0: cannot open shared object file: No such file or directory erzeugen, so hilft der folgende Aufruf:

LD_LIBRARY_PATH=/usr/local/lib/arm-linux-gnueabihf owncloudcmd -v

Alternativ kann man auch den Eintrag export LD_LIBRARY_PATH=/usr/local/lib/arm-linux-gnueabihf in der Datei .bashrc im Home-Verzeichnis hinzufügen.

 

GUI-Client

Der normale grafische Client kann über ein Terminal mittels owncloud gestartet werden.

Möchtet ihr den ownCloud-Client automatisch beim Start des Raspberry Pi mit starten lassen (Autostart), dann fügt ihr einfach in der Datei /etc/xdg/lxsession/LXDE/autostart eine Zeile mit @owncloud hinzu.

 

CMD-Client

Zusätzlich zu dem GUI-Client gibt es noch den CMD-Client owncloudcmd. Ü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:

owncloudcmd [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:

pi@raspi ~ $ nano ~/.netrc
pi@raspi ~ $ cat ~/.netrc
machine mein.server.de
        login benutzername
        password passwort
pi@raspi ~ $ chmod 0600 ~/.netrc

Hier noch ein Beispiel zur Nutzung des CMD-Clients mit netrc. Das lokale Verzeichnis ist hierbei /var/daten/owncloud. Vom Server wird die WebDAV-URL benötigt.

owncloudcmd --non-interactive -n /var/daten/owncloud/ https://mein.server.de/remote.php/webdav/

Mögliche Parameter für den CMD-Client

  • --user [benutzername], -u [benutzername] – Benutzername für den Login beim Server
  • --password [passwort], -p [passwort] – Passwort für den Login beim Server
  • -n – Netrc für den Login beim Server verwenden
  • --non-interactive – Nicht nachfragen, sondern eine nicht interaktive Ausführung erlauben
  • --silent, -s – Unterdrückt gesprächige Logmeldungen
  • --trust – Jedem SSL-Zertifikat vertrauen, auch ungültigen (Sinnvoll bei Verwendung von selbst signierten Zertifikaten)
  • --httpproxy http://[benutzer@passwort:]<server>:<port> – Den angegebenen HTTP-Proxy-Server verwenden
  • --unsyncedfolders [datei] – Eine Datei mit einer Liste von Dateien und Verzeichnissen angeben, die nicht vom Server zum Client synchronisiert werden sollen
  • --exclude [datei] – Eine Datei mit einer Liste von Dateien und Verzeichnissen angeben, die nicht vom Client zum Server synchronisiert werden sollen

Automatische Synchronisation mit dem CMD-Client

Für eine automatische Synchronisation mittels CRON-Job erstellen wir uns zuerst ein kleines Bash-Script unter /home/pi/owncloud-sync.sh mit folgendem Inhalt, wobei das Lokale Verzeichnis und die Serveradresse noch angepasst werden müssen:

#!/bin/bash
LOCAL=/var/daten/owncloud/
SERVER=https://mein.server.de

LOG=/var/log/owncloud-sync.log

export LD_LIBRARY_PATH=/usr/local/lib/arm-linux-gnueabihf

OC=$(ps ax | grep [o]wncloudcmd)
if [ "$OC" != "" ]; then
        echo "ownCloud-Sync läuft schon!"
        exit 1
fi

echo "====================" > $LOG
date >> $LOG
echo "ownCloud-Sync gestartet" >> $LOG
echo "====================" >> $LOG

/usr/local/bin/owncloudcmd --non-interactive -n $LOCAL $SERVER/remote.php/webdav/ >> $LOG 2>&1

echo "====================" >> $LOG
date >> $LOG
echo "ownCloud-Sync beendet" >> $LOG
echo "====================" >> $LOG

Diese Datei machen wir dann ausführbar und fügen einen Eintrag in der crontab hinzu.

pi@raspi ~ $ chmod +x /home/pi/owncloud-sync.sh
pi@raspi ~ $ crontab -e
no crontab for pi - using an empty one
crontab: installing new crontab
pi@raspi ~ $ crontab -l
# m h  dom mon dow   command
0 4 * * * /home/pi/owncloud-sync.sh &

Hier als Beispiel wird die Synchronisation jeden Tag nachts um 4 Uhr gestartet.

Das Ergebnis der Synchronisation kann jederzeit in der Log-Datei /var/log/owncloud-sync.log eingesehen werden.