Die Artikelserie zum Raspberry Pi
Teil 1 (Link): Der Raspberry Pi 3 – der Alleskönner im Scheckkartenformat
Teil 2 (Link): Installation und Konfiguration von Raspbian Stretch auf Raspberry Pi 3
Teil 3 (Link): Fernzugriff per SSH und VNC auf den Raspberry Pi
Teil 4 (Link): Installation PiVPN – Den Raspberry Pi einfach zum VPN-Server ausbauen
Teil 5 (Link): OpenVPN/PiVPN Benutzerverwaltung auf dem Raspberry Pi
Teil 6 (Link): Installation und Konfiguration von Raspbian Stretch Lite auf Raspberry Pi 3 (ohne Desktop)
Teil 7 (Link): etherwake – Der Raspberry Pi als Wake On LAN-Server
Teil 8 (Link): Adblocker mit Pi-hole: Das schwarze Loch für Werbung im Internet
Teil 9: Dieser Artikel
Was ist Seafile?
Seafile (Link zum Wikipedia-Artikel) ist ein Dateiserver, mit dem sich Dateien zentral auf einem Server abspeichern (Filehosting), zwischen verschiedenen Geräten synchronisieren (File synchronisation) und mit anderen Personen teilen (File sharing) lassen. Der Zugriff erfolgt mittels Webinterface, Desktop-Clients (Windows, Mac, Linux) und Mobile Apps (Android und iOS).
Die kostenlose und als Open-Source verfügbare Community Edition (CE) erlaubt maximal drei User, was für die meisten von uns ausreichen sollte. Eine Preisübersicht findet ihr hier.
Die Funktionen der Software ähneln denen von Google Drive oder Dropbox.
Seafile statt Dropbox, Google-, Apple- oder Microsoft-Cloud – warum ist das sinnvoll?
Cloud-Anbieter gibt es wie Sand am Meer und die meisten bieten ihre Dienste mehr oder minder kostenlos an. Warum sollte man sich also die Mühe machen und sich eine eigene Cloud daheim auf seinem Raspberry Pi installieren?
Der Vorteil von Seafile gegenüber den oben genannten oder ähnlichen Diensten ist, dass die Software auf eurem eigenen Server, in eurem eigenen Netzwerk läuft. In unserem Fall ist das der Raspberry Pi daheim und kein öffentlich zugänglicher Webserver, im schlimmsten Fall noch einer, der in irgendeinem Rechenzentrum in den USA steht.
Das ist, wenn ihr mich fragt, einfach ein unschlagbarer Vorteil, der kleinere Komforteinbußen locker ausgleicht!
Wofür ich selbst Seafile nutze
Ich nutze den Fileserver, um bestimmte Verzeichnisse zwischen meinem Desktop-PC und meinem Notebook automatisch zu synchronisieren. So habe ich auf beiden Geräten immer den aktuellen Stand und muss nichts mehr manuell von A nach B kopieren.
Sollte ich z. B. auf dem Desktop-PC eine Datei in einem der synchronisierten Verzeichnisse bearbeitet haben und vergessen, diese auf’s Notebook zu übertragen, kann ich das später von unterwegs auch noch über’s Internet machen. Hierfür nutze ich eine sichere VPN-Verbindung mittels PiVPN (Blogartikel zur Installation von PiVPN) und den Webbrowser oder Desktop-Client auf dem Notebook.
Da ich auch über meine Smartphones (Android und iOS) Zugriff auf mein Heimnetz habe, kann ich mir einzelne Dateien sogar direkt auf’s Smartphone ziehen! Hierfür nutze ich dann ebenfalls die OpenVPN-App und die jeweilige Mobile App für Android oder iOS.
Installation von Seafile Server auf dem Raspberry Pi und Raspbian Stretch Lite
Nutzt zur Installation am besten eine SSH-Verbindung von eurem PC aus, z. B. mit Putty. Wie das klappt, könnt ihr hier lesen (Zugriff per SSH auf den Raspberry Pi). Der Vorteil ist, dass ihr so die ganzen Kommandos per Copy & Paste einfach nach Putty übertragen könnt und euch so das Getippe spart!
Tipp: Ein Rechtsklick fügt Text aus der Zwischenablage ins SSH-Fenster von Putty ein!
Wir beginnen, wie eigentlich immer, mit einer Aktualiserung unseres Systems. Danach installieren wir MariaDB (Artikel auf Wikipedia). Das ist ein Datenbankverwaltungssystem, das wir für Seafile und dessen Datenbank benötigen.
1 2 3 |
sudo apt-get update sudo apt-get upgrade sudo apt-get install mariadb-client mariadb-server |
Nach der Installation wechseln wir auf die Root-Console und konfigurieren MariaDB, um die Installation abzusichern.
1 2 |
sudo -i mysql_secure_installation |
Während der Konfiguration von MariaDB vergebt ihr ein Root-Kennwort. Notiert euch das auf jeden Fall für später!
Um ein paar weitere Pakete für Seafile zu installieren, verlassen wir nochmals die Root-Console.
1 2 |
exit sudo apt-get install python-setuptools python-imaging python-mysqldb python-requests |
Für die Installation von Seafile selbst wechseln wir wieder auf die Root-Console und geben nacheinander die folgenden Befehle ein:
1 2 3 4 5 6 7 |
sudo -i adduser seafile cd /home/seafile wget https://github.com/haiwen/seafile-rpi/releases/download/v6.3.2/seafile-server_6.3.2_stable_pi.tar.gz tar -xzf seafile-server_6.3.2_stable_pi.tar.gz seafile-server-6.3.2/ cd /home/seafile/seafile-server-6.3.2/ ./setup-seafile-mysql.sh |
Im Prinzip könnt ihr während der Installation fast immer die Standardwerte beibehalten. An den folgenden Stellen müsst ihr aktiv werden:
- server name: Wie soll euer Seafile-Server später heißen?
- Server IP / Domain: Unter welcher IP-Adresse oder DNS-Namen wird der Server später erreichbar sein?
- ccnet database: Mit [1] erstellt ihr eine neue Datenbank, da wir noch keine haben.
- root password: Hier gebt ihr das Root-Kennwort eures MariaDB-Servers ein, das wir vorhin vergeben haben.
- password for seafile: Vergebt ein neues Kennwort für den Benutzer ’seafile‘.
Da Seafile unter unserem eben erstellten User seafile laufen soll, verlassen wir die Root-Console wieder und wechseln zum User seafile, um den Server zu starten. Vorher setzen wir noch die Verzeichnisrechte.
1 2 3 4 5 6 |
exit sudo chown -R seafile:seafile /home/seafile/* cd /home/seafile/seafile-server-latest su seafile ./seafile.sh start ./seahub.sh start |
Während dem Start von Seafile erscheint eine Fehlermeldung bezüglich der Locales. Dieser Fehler lässt sich folgendermaßen beheben:
1 2 3 4 5 |
# Wir verlassen die Shell des Users seafile und wechseln zurück zum User pi exit # Dann generieren wir die entsprechenden Locales sudo sed -i -E 's/^# (en_US\.UTF-8.*)$/\1/' /etc/locale.gen sudo locale-gen |
Seafile als Dienst einrichten und beim Systemstart automatisch starten lassen
Um unseren Server als Dienst in Raspbian zu registrieren, wechseln wir wieder auf die Root-Console
1 |
sudo -i |
Danach kopieren wir den folgenden Text in die Shell und bestätigen mit Enter:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
echo '[Unit] Description=Seafile hub After=network.target seafile.service [Service] # change start to start-fastcgi if you want to run fastcgi ExecStart=/home/seafile/seafile-server-latest/seahub.sh start ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop User=seafile Group=seafile Type=oneshot RemainAfterExit=yes [Install] WantedBy=multi-user.target' >> /etc/systemd/system/seahub.service |
Und diesen Text hier ebenfalls auf die Shell übertragen und bestätigen:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
echo '[Unit] Description=Seafile # add mysql.service or postgresql.service depending on your database to the line below After=network.target mysql.service [Service] Type=oneshot ExecStart=/home/seafile/seafile-server-latest/seafile.sh start ExecStop=/home/seafile/seafile-server-latest/seafile.sh stop RemainAfterExit=yes User=seafile Group=seafile [Install] WantedBy=multi-user.target' >> /etc/systemd/system/seafile.service |
Im Anschluss starten wir die Dienste.
1 2 |
systemctl enable seafile.service systemctl enable seahub.service |
Fertig! Mit zwei Mal ‚exit‘ verlassen wir erst die Root-Console und danach Putty selbst.
1 2 |
exit exit |
Was ihr noch beachten solltet!
Genug Speicherplatz
Stellt bitte sicher, dass die SD-Karte eures Raspis groß genug für all die Daten ist, die ihr synchroniseren wollt! Bei meinem ersten Test war leider nur eine 8GB-Karte im Pi, die nach etwas Rumspielen relativ schnell vollgelaufen war.
Neuerdings habe ich dem Pi deshalb eine 32GB-Karte spendiert. Solltet ihr mehr Platz brauchen, sucht doch mal nach SD-Karten auf Amazon (*).
* Solltet ihr über den Link bestellen, bekomme ich ein paar Prozent Provision, ohne dass es euch etwas extra kostet.
Im einem meiner nächsten Artikel ekläre ich euch die Konfiguration von Seafile. So könnt ihr beispielsweise euren Desktop (unter Windows) zwischen mehreren Rechnern synchron halten.
SSL-Verschlüsselung
Ich habe bei meiner aktuellen Installation übrigens auf die Nutzung von SSL verzichtet! Der Raspberry Pi und damit auch Seafile ist nur in meinem eigenen, lokalen Netzwerk erreichbar, weshalb Verschlüsselung für mich derzeit keine so große Rolle spielt. Das Thema werde ich zu einem anderen Zeitpunkt angehen.
Info zu Versionsnummern
Dieser Artikel stammt vom 05.10.2018
Installiert wurde Seafile Community Edition Version 6.3.2 auf einem Raspberry Pi mit Raspbian Stretch Lite.
Hallo Dennis.
Ich habe Probleme bei dem Login auf dem Raspberry!
Seafile meldet mir dass es mein/en Password/Usernamen nicht akzeptiert.
Beim Passwort-Zurücksetzen meldet mir das System :
Die E-Mail konnte nicht verschickt werden.
Der E-Mail-Dienst ist nicht korrekt konfiguriert.
Bitte kontaktieren Sie die Administration.
Vor der Installation wurde mein Raspbian-Stretch-Light System upgedatet u. upgegradet (kurz eingedeutscht 🙂 , der mariadb-client/server installiert und mit wget das aktuelle seafile-server-file heruntergeladen
Die Installation des Seafile Servers verlief bis auf dem Abschnitt wo dass aktuell gezipte seafile-server-file entpackt werden muss.
Bei Eingabe „tar -xzf seafile-server_6.3.4_stable_pi.tar.gz seafile-server-6.3.4/“ kam es zu einer Fehlermeldung
Erst das Entfernen des Zielverzeichnisses, also das Ausführen von „tar -xzf seafile-server_6.3.4_stable_pi.tar.gz“ führte zum Erfolg.
Die entpackten Daten stehen im Verzeichnis /home/seafile/seafile-server_6.3.4
Bei dem Starten de Skipts „./setup-seafile-mysql.sh“ ist mir beim Einhalten der Standartwerte aufgefallen dass nur die Vorgabe /home/seafile/seafile-data akzeptiert wird. Das Zulassen des Verzeichnis-Namen einer selbst eingehängten USB-Daten-Device wäre wünschenswert.
Vielleicht erlaubt dies aber der nur seafile-Administrator auf der http-Ebene auf den ich aber wegen der oben genannten Login-Problems noch nicht zugreifen kann?
Bei dem Einrichten der automatisch gestarteten seafile-Dienste habe auch die ExecStart/Stop=verzeichnis!….. Zeilen in den /etc/systemd/system/seahub.service sowie /etc/systemd/system/seafile.service entsprechend korrigiert.
Das Ausführen von systemctl enable seafile.service als auch seahub.service als sudo -i erfolgt problemlos.
Nach dem reboot bestätigt ein ps -A | grep serv dass der ccnet-server und der seafile-server laufen.
Vielleicht ist mir damit geholfen den Email-Dienst neu einzurichten oder zustarten?
Danke und mit freundlichen Grüßen
Wolf