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
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.

16 Gedanken zu „Raspberry Pi: Seafile installieren und einrichten

  • 17. Juni 2016 um 11:51
    Permalink

    Hi, ich kann mit deiner anleitung leider keine Datein vom CLient übertragen. Es kommt immer Fehler beim Hochladen der Datei: Connection closed

    Ordner kann ich ganz normal anlegen.
    Gruß
    Mark

    Antwort
  • 17. Juli 2016 um 18:37
    Permalink

    Hi gute Anleitung aber leider bekomme ich beim restart des nginx Webservers eine Fehlermeldung.
    In der nginx error.log datei steht:
    „fastcgi_pass“ directive is not allowed here in /etc/nginx/sites-enabled/seahub:8 //steht 15 mal drin
    „location“ directive is not allowed here in /etc/nginx/sites-enabled/seahub:24 //steht 1 mal drin

    Dachte erst das er keine Zugriffsrechte drauf hat aber die stehen auf rwx. Vielleicht hast du eine Idee.

    Gruß
    Oliver

    Antwort
    • 25. Juli 2016 um 21:50
      Permalink

      Hi Oliver,

      ich habe exakt die gleiche Fehlermeldung („fastcgi_pass“ directive is not allowed here in /etc/nginx/sites-enabled/seahub:8)… schon gegoogelt aber werde nicht schlau.
      Hast du mittlerweile eine Lösung?

      Danke & Gruß
      Marcus

      Antwort
        • 16. September 2016 um 14:46
          Permalink

          Hi Oliver,

          danke für die Antwort!! Na klar, manchmal kann die Lösung ganz einfach sein. Hört sich vielleicht blöd an – aber auf die Idee, einfach das offizielle Manual zu nehmen bin ich nicht gekommen.
          Jetzt läuft alles – sauber & danke!

          Antwort
        • 22. Januar 2017 um 10:32
          Permalink

          Hallo.
          Was war genau die Ursache und was hast Du gemacht?
          Ich bin auch das Manual durchgegangen. Ohne Erfolg.
          Gruß
          Uli

          Antwort
          • 4. Februar 2017 um 10:16
            Permalink

            Hallo Ulrich,

            die genaue Ursache weiß ich leider nicht mehr (ist ja schon sehr lange her).
            Hast du die Pakete komplett entfernt (apt-get purge), und danach frisch das offizielle Manual durchgearbeitet?

            Bei mir hat genau das geholfen; also komplett entfernen und frisch beginnen laut Manual.

            Viel Erfolg,
            Marcus

  • Pingback: Raspberry Pi 3: Von USB-Sticks und SSD-Festplatten booten – random brick [DE]

  • Pingback: Raspberry Pi: Owncloud Server installieren und einrichten – random brick [DE]

  • 2. März 2017 um 20:55
    Permalink

    Hallo Benjamin,

    danke für die ausführliche Anleitung! Ich hatte das gleiche Problem wie Oliver. Die Ursache dafür ist, dass in deiner Konfiguration in Schritt 13 zwei Zeilenumbrüche fehlen (vor „client_max_body_size“ und vor „location“):
    error_page 497 https://$host:$server_port$request_uri;client_max_body_size 10G; # set max upload sizelocation / {

    Grüße
    Max

    Antwort
  • 14. März 2017 um 8:46
    Permalink

    Hallo,

    erst einmal vielen Dank für die ausführlichen Anleitungen! Ich tendiere zurzeit zu einem Raspberry Pi3b mit Seafile.
    Eine Frage stellt sich mir jedoch noch: Können auf einen Rasp. mit Seafile 2 Nutzer gleichzeitig zugreifen? Ich möchte gerne einen Cloud-Server für mich und meinen Mitbewohner einrichten, so dass jeder von uns seine Daten in getrennten Verzeichnissen speichern kann und weiß aber nicht, ob das zu Problemen führen würde.

    Grüße
    (ein anderer) Max

    Antwort
    • 14. März 2017 um 10:43
      Permalink

      Hallo Max,

      das geht problemlos. Nur musst du dran denken, dass die maximale Datenübertragung durch die USB Datenübertragung des Raspberry Pi 3 limitiert ist.

      Viele Grüße
      Benjamin

      Antwort
  • 17. April 2017 um 15:27
    Permalink

    Die Ursache für diesen Fehler ist, dass in der /etc/nginx/sites-available/seahub datei ein paar Zeilen verrückt sind. Richtig muss sie lauten:

    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;
    location / {
    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;
    }
    }

    Dann geht es.

    Antwort

Kommentar verfassen