Website-Icon RandomBrick.de

Raspberry Pi: Seafile installieren und einrichten

Welche Clouddienste nutzt ihr? Dropbox? Oder setzt ihr auf ein privates NAS? Die Zahl der Nutzer von Clouddiensten steigt aber auch die Skepsis gegenüber den Anbietern und dem Umgang mit den Daten. Gerade Nutzer die größere Datenmengen speichern, lohnt sich die Überlegung einen kleinen Cloudspeicher selbst aufzubauen. Ein Raspberry Pi, eine externe Festplatte und das kostenlose Seafile genügen um eine Alternative zu Dropbox zu bauen.

Für das Installieren und Einrichten von Seafile auf einem Raspberry Pi muss man kein Computerprofi sein, sondern nur ein bisschen neugierig. Leser, die in Seafile nicht die richtige Lösung sehen, sollten einen Blick in den Vergleich zwischen BitTorrent Sync, Seafile und ownCloud werfen. Es sind zahlreiche Lösungen auf dem Markt vorhanden, die aus dem Raspberry Pi einen Cloudserver machen.

Raspberry Pi: Seafile installieren und einrichten (Bild: Raspberry Pi Online-Shop).

Raspberry Pi: Seafile installieren und einrichten

Durch die Entwicklung in C und Python läuft Seafile sehr flüssig auf dem Raspberry Pi. Zur Installation von Seafile auf dem Raspberry Pi müssen Nutzer einige Kommandos über den Terminal eingeben. Diese Anleitung erklärt dabei ausführlich alle notwendigen Schritte, so dass nach moderatem Aufwand ein eigener Server zur Verfügung steht.

Diese Anleitung zur Installation von Seafile auf dem Raspberry Pi setzt ein lauffähiges Raspbian oder eine ähnliche Distribution voraus. Die Artikel Raspberry Pi 3 unter OS X einrichten sowie Raspberry Pi 3 unter Windows einrichten helfen bei der Erstinstallation.

Schritt 1: Betriebssystem updaten

Vor der Installation von Seafile auf dem Raspberry Pi werden alle Pakete des Betriebssystems auf den aktuellen Stand gebracht. Das erfolgt mit folgendem Befehl über den Terminal:

sudo apt-get update && sudo apt-get upgrade

Schritt 2: Python installieren

Vor der Installation werden einige Pakete für Seafile auf dem Raspberry Pi über den Paketmanager APT installiert.

sudo apt-get install python2.7 python-setuptools python-simplejson python-imaging sqlite

Schritt 3: Seafile Benutzer

Anschließend wird ein extra seafile Benutzer angelegt und auf diesen gewechselt. Bei diesem Benutzer wird der Login deaktiviert, da die Arbeiten mit diesem nicht über SSH sondern nur via su erledigt werden.

sudo adduser seafile --disabled-login

Die Abfrage Enter the new value, or press ENTER for default kann einfach per Enter-Taste übersprungen werden. Der nachfolgende Befehl wechselt von eurem aktuellen RaspberryPi Nutzer auf den eben angelegten User seafile im Terminal:

sudo su - seafile

Schritt 4: Download Seafile

Jetzt wird die aktuelle Version des Seafile-Servers für den Raspberry Pi via wget heruntergeladen. Die neuste Version findet sich über die Downloadseite von Seafile. Zur Zeit ist das die Version 5.1.3. Vor dem Download schaut bitte hier nach der neusten Server-Version für den Raspberry Pi. Die nachfolgenden Kommandos laden Seafile herunter, entpacken das Archiv und löschen anschließend die Download-Datei.

wget https://github.com/haiwen/seafile-rpi/releases/download/v5.1.3/seafile-server_stable_5.1.3_pi.tar.gz
tar -xvf seafile-server_stable_5.1.3_pi.tar.gz
rm seafile-server_stable_5.1.3_pi.tar.gz

Schritt 5: Seafile Installation

Jetzt wird Seafile auf dem Raspberry Pi installiert. Dazu wird erst in das Verzeichnis von Seafile gewechselt:

cd seafile-server-5.1.3

Dort wird die Installation mit folgendem Kommando gestartet:

./setup-seafile.sh

Anschließend ist ein Check mittels Enter zu bestätigen. Wenn alles passt, fragt der Installationsvorgang nach dem Namen des Servers. Dieser kann beliebig gewählt werden. Beachtet dabei die angezeigten erlaubten Zeichen.

Danach erfragt die Installation von Seafile nach der Domain oder IP-Adresse des Raspberry Pis. Falls ihr eine DynDNS Domain verwenden möchtet, ist diese hier einzutragen. Wenn euch das nichts sagt, tragt hier die IP-Adresse der Raspberry Pis ein. Die Frage zum default port kann via Enter übersprungen werden. Eine ausführliche Benutzeranleitung zum Seafile-Server findet sich hier.

Wer Großes vor hat aber nur eine kleine mircoSD-Karte verwendet, muss die Daten auf eine externe USB-Festplatte oder USB-Stick speichern. Wie man auf dem Raspberry Pi USB-Sticks oder USB-Festplatten einbinden kann, beschreibt die Schritt für Schritt Anleitung. Dabei ist zu beachten, dass das USB-Speichermedium unter dem Benutzer seafile, den wir oben angelegt haben, eingebunden ist.

Die Installation fragt nach dem Speicherpfad für die Seafile-Dateien. Hier also darauf achten, wohin die Daten gespeichert werden sollen. Ihr müsst hier den Pfad beispielsweise zur USB-Festplatte angeben. Es empfiehlt sich am Ende des Ordnernamens ein /seafile-data anzuhängen. Alle weiteren Fragen können via Enter übergangen werden. Am Ende der Seafile-Installation sind alle Eingaben noch einmal per Enter zu bestätigen. Anschließend wird der Server eingerichtet, was einige Sekunden in Anspruch nimmt.

Schritt 6: Seafile Server starten

Nach erfolgreicher Installation sind Seafile (File-Synchronisation-Service) und Seahub (Webinterface) zu starten. Beim Start von Seahub sind eine E-Mail-Adresse sowie Passwort für den Administrator-Account zu vergeben.

./seafile.sh start
./seahub.sh start 8000

Das Weboberfläche von Seafile lässt sich jetzt wie folgt über einen beliebigen Browser im Netzwerk aufrufen:

http://IP:8000/

Der Wert IP ist durch die in Schritt 5 vergebene IP-Adresse oder DynDNS Domain des Raspberry Pis zu ersetzen. Beispielsweise http://192.168.0.12:8000/

Die Logindaten sind die Admin-Logindaten aus Schritt 5. Wer SSL verwendet, benötigt folgende Adresse. Zu SSL findet sich weiter unten mehr.

https://IP:8001/

Jetzt seid ihr als Administrator auf dem Seafile-Server angemeldet und könnt Benutzer, Gruppen und Bibliotheken (zu synchronisierende Ordner) anlegen.

Für die eigentliche Nutzung wird vom Anwender der Seafile-Client für Windows, Mac, iOS oder Android benötigt. Diese lassen sich über die Seafile Webseite herunterladen.

Sofern SSL verwendet wird, muss das im Client unter Einstellungen -> Erweitert eingetragen werden. Hier ist die Option Das Server-Zertifikat bei der HTTP-Synchronisation nicht überprüfen zu aktivieren, da das Zertifikat selbst signiert ist und sonst nicht akzeptiert wird.

Schritt 7: Seafile Autostart auf dem Raspberry Pi

Damit Seafile nicht jedesmal manuell auf dem Raspberry Pi gestartet werden muss, wird ein Autostart für Seafile auf dem Raspberry Pi eingerichtet. Dazu ist über den Terminal die Datei rc.local zu öffnen:

sudo nano /etc/rc.local

In rc.local wird eine Zeile am Ende der Datei, aber vor exit 0, eingefügt. Dadurch startet beim Booten des Raspberry Pis Seafile und Seahub gleich mit. Ersetzt das 5.1.3 durch eure Version im Ordner.

Ohne SSL:

su seafile -c '/home/seafile/seafile-server-5.1.3/seafile.sh start && /home/seafile/seafile-server-5.1.3/seahub.sh start 8000'

Mit SSL (siehe Schritt 10):

su seafile -c '/home/seafile/seafile-server-5.1.3/seafile.sh start && /home/seafile/seafile-server-5.1.3/seahub.sh start-fastcgi'

Mit Strg + X, Y und Enter speichern und schließen. Fertig. Die Dateien werden nun mittels Seafile mit dem Raspberry Pi als Server synchronisiert. Zusätzliche Client-Systeme kann jeder beliebige Computer, Tablet oder Smartphone sein.

Seafile auf verschlüsselte SSL-Verbindung umstellen

Nachfolgende Schritte sind optional und nicht zwingend notwendig. Wird Seafile beispielsweise nur in den eigenen vier Wänden im privaten Netzwerk eingesetzt, kann auf eine verschlüsselte Übertragung der Dateien verzichtet werden. Wer Seafile auch außerhalb der Wohnung einsetzt, sollte den Mehraufwand in Kauf nehmen und SSL für eine verschlüsselte Übertragung der Daten einrichten. Eine DynDNS Domain ist hierfür empfehlenswert.

Schritt 8: Seahub Service URL ändern

Dafür ist in Seahub die Konfigurationsdatei ccnet.conf abzuändern. Das Protokoll der Variable SERVICE_URL wird von http auf https und den Port von 8000 auf 8001 geändert

Beachtet: In den nachfolgende Kommandos ist IP durch die IP-Adresse oder DynDNS Domain eures Raspberry Pis zu ersetzen.

nano /home/seafile/ccnet/ccnet.conf

Die Zeile

SERVICE_URL = http://IP:8000

durch folgende Zeile ersetzen

SERVICE_URL = https://IP:8001

Gespeichert wird mittels STRG + X, Y und anschließend Enter.

Schritt 9: Seahub HTTP Server URL anpassen

Zusätzlich ist für Seahub die Konfigurationsdatei seahub_settings.py anzupassen. Diese wird um eine Zeile erweitert. Mit folgenden Kommando über den Terminal wird die Konfigurationsdatei geöffnet:

nano /home/seafile/seahub_settings.py

Dort ist folgende Zeile einzutragen. Das IP ist durch eure persönliche IP-Adresse oder DynDNS Domain zu ersetzen.

HTTP_SERVER_ROOT = 'https://IP:8001/seafhttp'

Schritt 10: Seahub im FastCGI Modus starten

Jetzt Seahub im FastCGI Modus starten. Das wird mit folgenden Kommandos erreicht:

/home/seafile/seafile-server-5.1.3/seahub.sh stop
/home/seafile/seafile-server-5.1.3/seahub.sh start-fastcgi

Zukünftig ist Seahub immer mit dem folgendem Kommando zu starten. Unter Schritt 7, für den Autostart für Seafile unter SSL, wurde das schon berücksichtigt.

/home/seafile/seafile–server–5.1.3/seahub.sh start–fastcgi

Schritt 11: Installation von Nginx Webserver

Zusätzlich wird der Webserver Nginx benötigt. Die Installation erfolgt wieder über den Paketmanager APT mit folgendem Kommando über den Terminal:

sudo apt-get install nginx

Danach sind einige Werte bezüglich der maximalen Prozesse anzupassen, damit Nginx den Raspberry Pi nicht überlastet.

sudo sed -i „s/worker_processes 4;/worker_processes 1;/g“ /etc/nginx/nginx.conf
sudo sed -i „s/worker_connections 768;/worker_connections 128;/g“ /etc/nginx/nginx.conf

Jetzt muss der Webserver gestartet werden:

sudo /etc/init.d/nginx start

Schritt 12: SSL-Zertifikat erstellen

Für die weitere Bearbeitung wird ein selbst signiertes SSL-Zertifikat erstellt. Bei der Ausführung der Befehle werden einige Fragen gestellt. Davon sind nur folgende wichtig:

  • Country Name: DE (oder eben das Land in dem ihr seid)
  • Common Name: Die verwendete IP-Adresse oder DynDNS Domain

Alle anderen Felder können mittels Enter übersprungen werden.

sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl genrsa -out seahub.key 4096
sudo openssl req -new -sha256 -key seahub.key -out seahub.csr
sudo openssl x509 -req -sha256 -days 3650 -in seahub.csr -signkey seahub.key -out seahub.crt

Hinweis: Beim Aufruf wird später der Browser als auch der Seafile Client feststellen, dass das SSL-Zertifikat nicht vertrauenswürdig ist. Das liegt daran, dass dieses von uns selbst signiert wurde. Diese Warnung ist einfach zu ignorieren.

Schritt 13: SSL-Zertifikat via Webserver bereitstellen

Dazu ist ein nginxSite config file mit folgendem Inhalt anzulegen. Lest euch die nachfolgenden Informationen genau durch. Die Zeile mit my-seahub-domain.tld ist durch die verwendete IP-Adresse oder DynDNS Domain zu ersetzen.

sudo nano /etc/nginx/sites-available/seahub

Anschließend sind folgende Zeilen in die Datei einzutragen und entsprechend eurer IP-Adresse oder DynDNS Domain abzuändern:

server {
listen 8001;
ssl on;
ssl_certificate /etc/nginx/ssl/seahub.crt;
ssl_certificate_key /etc/nginx/ssl/seahub.key;
server_name my-seahub-domain.tld;
error_page 497 https://$host:$server_port$request_uri;client_max_body_size 10G; # set max upload sizelocation / {
fastcgi_pass 127.0.0.1:8000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_param HTTPS on;
fastcgi_param HTTP_SCHEME https;
access_log /var/log/nginx/seahub.access.log;
error_log /var/log/nginx/seahub.error.log;
}
location /seafhttp {
rewrite ^/seafhttp(.*)$ $1 break;
proxy_pass http://127.0.0.1:8082;
client_max_body_size 0;
}
}

Gespeichert wird mittels STRG + X, Y und anschließend Enter.

Schritt 14: Konfigurationsdatei aktivieren

Für die Aktivierung der Konfigurationsdatei wird eine Verknüpfung mit folgendem Befehl über den Terminal erstellt:

sudo ln -s /etc/nginx/sites-available/seahub /etc/nginx/sites-enabled/seahub

Schritt 15: Nginx neustarten

Abschließend erfolgt ein Neustart von nginx, damit die Änderungen wirksam werden:

sudo /etc/init.d/nginx restart

Jetzt erfolgt die Kommunikation über Seafile verschlüsselt via selbst signiertem SSL-Zertifikat.

Tipps zu Seafile

Seafile ist zu Beginn nicht ganz intuitiv. Wer sich einige Minuten Zeit nimmt, arbeitet sich schnell in die Logik der kostenlosen Anwendung ein. Folgende Tipps zu Seafile helfen für einen reibungslosen Start.

Verschlüsselte Ordner unter Seafile anlegen

Mit einem Klick auf Neue Bibliothek wird ein neuer Ordner für die Synchronisation angelegt. Der Name ist beliebig wählbar, die Beschreibung ebenfalls. Soll der Ordner und die Dateien vor der Synchronisation mit dem Raspberry Pi verschlüsselt werden, ist ein Haken bei Verschlüsselung zu setzen sowie ein Passwort zu wählen. Das Passwort lässt sich nachträglich nicht ändern. Zur Sicherheit empfiehlt sich ein langes Passwort mit mehr als 10 Zeichen.

Seafile Ordner verwalten

Fährt der Administrator mit der Maus über eine angelegte Bibliothek, erscheinen zwei Symbole. Das rechte Symbol löscht die Bibliothek in Seafile, das linke Symbol ermöglicht ein Teilen mit Benutzern und Gruppen.

Mit den Zugangsdaten aus der Weboberfläche könnt ihr euch als über einen Seafile-Client anmelden. Dort sind die angelegten Bibliotheken ersichtlich und lassen sich synchronisieren.

Portfreigabe im Router

Anwender die Seafile wie ein richtigen Cloud-Dienst auch außerhalb des heimischen Netzwerkes nutzen möchten, müssen folgende Ports im Router freigeben. Je nach Router ist die Vorgehensweise etwas anders:

  • 8000 (nur ohne SSL)
  • 8001 (nur mit SSL)
  • 8082
  • 10001
  • 12001

Persönliche Meinung

Die Installation von Seafile auf dem Raspberry Pi ist nicht kompliziert. Aufwendig ist dafür die Einrichtung des verschlüsselten Verbindung via selbst signiertem SSL-Zertifikat. Die Mühe lohnt sich, dann jetzt läuft auf dem Raspberry Pi ein eigener Cloud-Server, der die Dateien verschlüsselt überall hin überträgt. Ganz unabhängig von Dropbox oder Google Drive.

Etwas einfacher ist die Installation von BitTorrent Sync auf dem Raspberry Pi. Dafür sind einige Funktionen nur in der kostenpflichtigen Pro-Version erhältlich. Es empfiehlt sich auf jeden Fall beide Anwendungen gegenüber zu stellen und genau zu vergleichen, welche Leistungen eigentlich benötigt werden.

Die mobile Version verlassen