Private Cloud mit Seafile und Radicale auf einem Raspberry Pi (Teil 3)

In den ersten beiden Teilen der Artikelserie „Private Cloud mit Seafile und Radicale auf einem Raspberry Pi“ hatte ich mich mit der Einrichtung des Raspberry Pi und dem Aufsetzen des Caldav- und Carddav-Servers Radicale befasst. In diesem Teil soll es nun um die Einrichtung von Seafile als Cloud-Laufwerk gehen. Grundvoraussetzung ist ein Webserver, dessen Einrichtung ich bereits in Teil 2 beschrieben habe. Zur Absicherung der Kommunikation mit Seafile ist die Benutzung eines SSL-Zertifikats empfehlenswert. Auch dies wurde im zweiten Teil gezeigt. Zur weiteren Einrichtung von Seafile sind folgende größeren Schritte notwendig:

Schritt 1: Seafile installieren

Schritt 1a: Benutzer „seafile“ anlegen
Bevor man mit allem loslegt, müssen noch einige Pakete installiert werden:

Dann legt man einen neuen Benutzer „seafile“ an. Den Login für diesen kann man deaktivieren, da man sich nicht per SSH mit diesem Benutzernamen einloggen muss. Die darauffolgenden Fragen kann man mit Enter alle bestätigen. Mit dem Befehl su wechselt man in diesen Benutzer:

 

Schritt 1b: Seafile herunterladen und entpacken
Im nächsten Schritt wechselt man in das Home-Verzeichnis des Benutzers seafile und lädt Seafile von der Downloadseite herunter (auf die Raspberry-Pi-Variante achten!!!). Das Tar-Archiv kann dann an Ort und Stelle entpackt werden. Nachdem es entpackt wurde, kann dass Archiv gelöscht werden:

 

Schritt 1c: Seafile installieren
Nun wechselt man in das entpackte Verzeichnis und startet das Installations-Skript.

Es folgen einige Fragen, die man folgend beantwortet:

  • server name: hier kann ein beliebiger Name stehen
  • server’s ip or domain: hier nimmt man die DynDNS-Adresse bzw. die Domain, die auf den Server zeigen soll (in meinen bisherigen Beispielen war dies cloud.hotzpotz.de)
  • Speicherort seafile data: Alle Dateien, die in der Cloud landen werden, sollen auf dem PiDrive gespeichert werden. Daher nimmt man folgenden Pfad: /mnt/data/seafile-data
  • TCP-Port seafile fileserver: mit Enter kann man den vorgeschlagenen default-Port 8082 einfach übernehmen

Zum testen, ob alles ordnungsgemäß funktioniert kann man nun den Seafile-Dienst und das Webinterface (Seahub) starten. Beim Start von Seahub muss man ein Administrator-Konto anlegen, indem man eine E-Mail-Adresse und ein Passwort vergeben muss.

Nachdem beides gestartet wurde, kann man über die lokale IP-Adresse des RaspPi im Netzwerk mit dem Port 8000 das Webinterface in einem Browser starten (z.B. http://192.168.178.100:8000) und sich mit dem eben angelegten Administrator-Konto anmelden.

 

Schritt 2: Seahub mit Nginx und SSL konfigurieren

Um Seafile auch von außerhalb des Netzwerkes (sicher) erreichbar zu machen, muss Nginx eine neue Konfiguration hinzugefügt und Seafile nachkonfiguriert werden.

Schritt 2a: Seafile-Konfiguration anpassen
Da man noch als Benutzer „seafile“ angemeldet ist, macht es Sinn, gleich noch Änderungen für die spätere Benutzung mit Nginx und SSL vorzunehmen. Dafür stoppt man zunächst den Seafile-Server und Seahub:

Dann ändert man in der Datei ccnet.conf die Variable SERVICE_URL, welche ja nun ein https beinhalten muss:

Mit Strg+X, Y und Enter wird die Datei gespeichert. Weiterhin muss man in der Datei seahub_settings.py eine Zeile hinzufügen (dabei die eigene Domain mit https angeben):

Wieder wird die Datei mit Strg+X, Y und Enter gespeichert. Nun muss noch in der Konfiguration des Seafile Fileservers im Abschnitt [fileserver] eine Zeile hinzugefügt werden:

Mit Strg+X, Y und Enter wird die Datei gespeichert. Damit sind die Änderungen an der Seafile-Konfiguration abgeschlossen und man kann den Seafile-Server und Seahub wieder starten:

Nun kann man sich als Nutzer „seafile“ mit dem Befehl exit abmelden, denn alle folgenden Eingaben muss man wieder als Standard-Nutzer vornehmen.

Schritt 2b: Nginx neue Konfiguration hinzufügen
Zur besseren Absicherung der SSL-Verbindung kann man einen Schlüssel für das Diffie-Hellman-Protokoll erzeugen. Das dauert einige Zeit. Ist er erzeugt, verschiebt man diesen in das Nginx-Verzeichnis:

Danach erstellt man eine neue Konfigurationsdatei:

welche folgenden Inhalt hat:

Mit Strg+X, Y und Enter wird diese Konfigurationsdatei gespeichert. Sie muss noch aktiviert werden, sodass danach der Nginx-Server neu gestartet werden kann:

Seafile müsste nun über das Webinterface in einem Browser über eine SSL-geschützte Verbindung aufrufbar sein (in meinem Beispiel wäre dies dann https://cloud.hotzpotz.de)

 

Schritt 3: Seafile als Dienst einrichten

Damit bei einem Neustart des RasPi Seafile nicht immer manuell gestartet werden muss, kann man es als Dienst einrichten, sodass es automatisch mit gestartet wird. Dafür erstellt man einen systemd-Dienst für den Seafile-Server:

mit folgendem Inhalt:

Mit Strg+X, Y und Enter wird die Datei gespeichert. Dann erstellt man einen weiteren Dienst für Seahub:

mit folgendem Inhalt:

Auch hier wird die Datei mit Strg+X, Y und Enter gespeichert. Nun müssen die beiden Dienste noch aktiviert werden:

Und damit wäre die Einrichtung von Seafile abgeschlossen. Happy synchronizing!

Private Cloud mit Seafile und Radicale auf einem Raspberry Pi (Teil 3)

14 Gedanken zu „Private Cloud mit Seafile und Radicale auf einem Raspberry Pi (Teil 3)

  1. Markus schreibt:

    Hab dafür Syncthing auf dem Pi laufen, als always on Gerät.
    Ist nicht ganz das selbe Anwendungsgebiet, sondern eher P2P Abgleich zwischen gleichwertigen Geräten ohne zentralen Server.
    Dafür wär das imo um einiges Massentauglicher einzurichten.

  2. Stefan schreibt:

    Bei diesen Zeilen verzweifele ich (als ungeübter Linux-User):
    „openssl dhparam 2048“
    „sudo mv /home/hotzenplotz/dhparam.pem /etc/nginx/dhparam.pem“
    Beim zweiten Befehl kann die Datei „dhparam.pem“ nicht gefunden werden.
    Ich habe daher die Datei mit diesem Befehl angelegt: „openssl dhparam -out /etc/nginx/dhparam.pem 2048“ und mir den mv-Befehl erspart.

    1. Stefan schreibt:

      Nachtrag:
      Natürlich muss noch ein „sudo“ vor die Zeile „openssl dhparam -out /etc/nginx/dhparam.pem 2048“.

      In dieser Zeile steckt außerdem auch noch ein Fehler:
      ssl_ciphers ‚ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDS$
      Ist das Dollar-Zeichen durch copy-and-paste aus dem nano-Editor da rein gekommen? Die Zeile ist außerdem nicht mit einem Semikolon abgeschlossen.

      1. Da hast du vollkommen Recht. Da muss etwas beim Kopieren gründlich schief gegangen sein. Die Zeile ist abgeschnitten worden. Ich habe sie jetzt vollständig eingefügt. Danke für den Hinweis!

    2. Kann es sein, dass du dabei noch als Benutzer „seafile“ angemeldet warst (s. Schritt 1a). Am Ende von Schritt 2b müsstest du dich eigentlich wieder abmelden. Wenn du das nicht gemacht hast, legt er das Zertifikat natürlich im home-Verzeichnis vom Benutzer „seafile“ ab und kann es somit auch nicht im home-Verzeichnis von hotzenplotz finden.

      1. Stefan schreibt:

        Kann ich jetzt gerade nicht mehr nachvollziehen. Ich meine ich habe sowohl im Home-Ordner von ’seafile‘, als auch von ‚pi‘ nachgesehen.
        Ich denke wenn du die Befehlszeile einfach in „sudo openssl dhparam -out /etc/nginx/dhparam.pem 2048“ abänderst wäre gut. Ist ein Befehl weniger und funktioniert auf jeden Fall.

        Ansonsten möchte ich hier auch gerne noch mitteilen, dass ich deine Anleitung super finde. Für meine Bedürfnisse (Raspi, Seafile, SSL) und meine Kenntnisse (Linux-Newbie) genau richtig. Danke dafür!

  3. Frederic schreibt:

    Nach einem Update auf die aktuelle Seafile-Version (6.2.3 auf 6.3.2) erhalte ich folgende Fehlermeldung beim Login:

    Verboten (403)
    CSRF-Verifizierung fehlgeschlagen. Anfrage abgebrochen.

    Woran kann das liegen? Wie kann ich das beheben?
    Danke im Voraus!

  4. Dr.-Ing. Jörg Söhner schreibt:

    kann mir denn jemand sagen, wie ich mit dem MariaDB-Problem unter dem neuesten Stretch umgehe, wenn ich seafile mit Mysql installieren möchte. Er akzeptiert einfach das root-Passwort nicht 🙁

    DANKE und LG, Jörg

  5. Dr.-Ing. Jörg Söhner schreibt:

    uff, jetzt bin ich die komplette Installationsanleitung mit einigen Stolpersteinen durch und war voller Erwartung, dass es klappt (zwischendurch mal mysql installiert, dabei wure apache installiert – den wieder deinstalliert und und und) und nun kommt beim Aufruf meine Domain nachwievor die Begrüßungsseite von nginx.

    Hat jemand einen Tipp für mich, was ich da machen kann und wo ich nachschauen müsste? Ich weiss, es gibt viele Fehlerquellen 😉

    Danke und LG, Jörg

    1. Dr.-Ing. Jörg Söhner schreibt:

      wenn ich übrigens in den Browser den Port mit angebe:
      soehner-cloud.ddns.net:8000
      dann erscheit seafile, aber ohne und mit https:// kommt nginx, also muss es wohl irgendwo an der nginx Konfiguration liegen?

      LG, Jörg

        1. Dr.-Ing. Jörg Söhner schreibt:

          für alle die Kollegen, die mit einem ähnlichen Problem kämpfen, ich konnte den Fehler beheben.
          Es gab eine Kollision in der nginx-Konfiguration, dadurch, dass es noch die Datei default gab und diese in /etc/nginx/site-enabled verfügbar war.

          Man muss die location für radicale in die neue seahub Definition übertragen und dann nur noch die seahub Datei in /etc/nginx/site-enabled belassen.

          nach einem Restart des nginx kann man mit „sudo nginx -t“ die Konfiguration testen. Die zuvor erscheinenden Warnings sind dann mit samt dem Fehler verschwunden. Ab jetzt funzt alles wunderbar 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.