Eine neue Version von Seafile ist veröffentlicht worden. Grund für mich die Anleitung einmal zu überarbeiten. Hier zeige ich dir von A – Z, wie du Seafile auf deinem Raspberry Pi zum laufen bekommst.
Vorraussetzung ist, dass du einen RaspberryPi mit SD Karte und Stromversorgung hast. Außerdem weißt du, wie du die IP-Adresse des Raspberry herausbekommst, wenn du diesen an dein Netzwerk anschließt.
Ich nutze hier einen RaspberryPi 3B*, ein GeekPi Gehäuse*, ein Netzteil mit An-/Ausschalter* und eine 32 GB SanDisk Ultra.*
Als erstes das Tool Imager herunterladen: Raspberry Imager
Installieren, starten, OS und SD Karte wählen, write, SD Karte entfernen, neu einstecken, leere Datei ohne Dateiendung mit Namen „ssh“ hinzufügen. SD Karte entfernen, in Raspberry stecken, Lan und Strom dran und los gehts 🙂
Ich starte immer mit einer kurzen Konfiguaration (raspi-config, Hostname, Local, Timezone), welche aber nicht zwingend nötig ist. Außerdem erstelle ich einen neuen Benutzer und deaktivere den Benutzer „pi“:
sudo su
adduser admin
usermod -g users admin
gpasswd -a admin ssh
gpasswd -a admin sudo
usermod -L pi
passwd -l pi
reboot now
In meinem Fall heißt der neue Benutzer „admin“ und „pi“ kann sich nicht mehr anmelden.
Nach einem sudo apt update && sudo apt upgrade -y können die Pakete installiert werden:
sudo apt install python3 python3-setuptools python3-pip fail2ban nginx mariadb-server-10.0 -y
Nun muss ein Root-Passwort für Mysql vergeben werden:
sudo mysql -u root
update mysql.user set password=password('geheim') where user='root';
update mysql.user set plugin='' where user='root';
flush privileges;
quit
geheim ersetzt du durch dein Passwort.
Neuen Benutzer Seafile anlegen und in den Benutzer wechseln:
sudo adduser seafile
sudo su seafile
cd
Archiv herunterladen, entpacken und in Ordner „installed“ verschieben (sieht einfach schöner aus):
wget https://github.com/haiwen/seafile-rpi/releases/download/v7.1.5/seafile-server-7.1.5-buster-armv7.tar.gz
tar xfvz seafile-server-7.1.5-buster-armv7.tar.gz
mkdir installed
mv seafile-server-7.1.5-buster-armv7.tar.gz installed/
In den entpackten Ordner wechsel und Installation starten:
cd seafile-server-7.1.5
./setup-seafile-mysql.sh
Servernamen vergeben, IP Adresse des Pi eingeben, „1“ wählen für neue Datenbank erstellen, mysql root Passwort eingeben, mysql Passwort für Benutzer seafile vergeben, der Rest kann mit Enter übersprungen werden.
Bevor Seafile/Seahub gestartet werden kann, muss ggf. eine Verknüpfung angelegt werden:
cd
cd seafile-server-latest/seafile/lib
ls -l #wenn hier schon python3.6 steht, keine Verküpfung nötig!
ln -s python3.7 python3.6
Nun kann Seafile und Seahub erstmal gestartet werden:
cd
cd seafile-server-latest
./seafile.sh start
./seahub.sh start
E-Mail und Passwort für den Admin-User festlegen und im Anschluss Seafile und Seahub erstmal wieder stoppen:
./seahub.sh stop
./seafile.sh stop
exit
Jetzt wird die Autostart angelegt und nginx konfiguriert:
sudo nano /etc/systemd/system/seafile.service
Folgendes einfügen und speichern mit Strg + O und schließen mit Strg + X:
[Unit]
Description=Seafile
After=network.target mysql.service
[Service]
Type=forking
ExecStart=/home/seafile/seafile-server-latest/seafile.sh start
ExecStop=/home/seafile/seafile-server-latest/seafile.sh stop
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target
Speichern und Schließen.
sudo nano /etc/systemd/system/seahub.service
[Unit]
Description=Seafile hub
After=network.target seafile.service
[Service]
Environment="LC_ALL=C"
Type=forking
ExecStart=/home/seafile/seafile-server-latest/seahub.sh start
ExecStop=/home/seafile/seafile-server-latest/seahub.sh stop
User=seafile
Group=seafile
[Install]
WantedBy=multi-user.target
Speichern und Schließen und aktiveren:
sudo systemctl enable seafile seahub
sudo nano /etc/nginx/sites-available/seafile.conf
Folgende config einfügen, speichern und schließen:
server {
listen 80;
server_name _;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $server_name;
proxy_read_timeout 1200s;
client_max_body_size 0;
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;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 36000s;
proxy_read_timeout 36000s;
proxy_send_timeout 36000s;
send_timeout 36000s;
access_log /var/log/nginx/seafhttp.access.log;
error_log /var/log/nginx/seafhttp.error.log;
}
location /media {
root /home/seafile/seafile-server-latest/seahub;
}
}
Standardconfig löschen und neue Verknüpfung erstellen:
sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/seafile.conf /etc/nginx/sites-enabled/seafile.conf
Wir testen die Konfiguration (sollte successful wiedergeben), reloaden nginx und passen die Seafile-Konfiguration an:
sudo nginx -t #Ergebnis sollte "Syntax ok" lauten
sudo nginx -s reload
sudo su seafile
cd
cd conf
nano ccnet.conf
SERVICE_URL = http://hostname #oder IP-Adresse
Speichern und schließen.
nano seahub_settings.py
FILE_SERVER_ROOT = 'http://hostname/seafhttp'
Speichern, schließen und Benutzer Seafile verlassen, dann kann Seafile gestartet werden 🙂
sudo systemctl start seafile seahub
Ich hoffe die Anleitung hat dir geholfen. Unten habe ich noch ein Video eingebettet zum mitmachen. Ich freue mich auf Unterstüzung: PayPalMe
Wenn Seafile online erreichbar sein soll, verweise ich auf meinen Beitrag:
Hallo Stephan, Alle,
wirklich eine super Anleitung.
Nun sitze ich hier mit meinem perfect installierten und funktionierenden Pi4 mit Seafile 7.1.5.
Eigentlich wollte ich nun eine externe usb HDD als zusätzlichen Speicher anschliessen.
Mein Verständnis von Seafile war, dass ich so Dateien zwischen meinen Computern syncron halten kann, ohne dass dafür alle gleichzeitig online sein müssen.
Ich habe daher auch noch Nachdem ich also https://manual.seafile.com/deploy_pro/multiple_storage_backends/ umgesetzt.
Doch beim Anlegen neuer Bibliotheken habe ich keine Möglichkeit verschiedene Storages zu wählen.
Es scheint als wäre dies eine Limitation der Community Edition und die Nutzung einer usb HDD somit gar nicht möglich?
Die Pro scheint zwar auch free, läuft dann aber nur auf einem richtigen Linux System?
Wenn das wie von mir gedacht also gar nicht geht, wie nutzt ihr dann alle Seafile sinnvoll mit einem Pi, mit einer für Datenmengen recht limitierten SD Karte?
Gruß Ronald
Hallo Roland,
verschiedene Medien am Raspi mit Seafile ist meiner Meinung nach im Privatbereich zu vernachlässigen. Hier geht es (sofern ich das eben richtig überflogen habe) um Backups auf zum Beispiel Datensicherungsbändern oder weiterer HDDs etc. Was du gesucht hast (und wie ich sehe auch gefunden hast) ist die Anbindung einer externen Festplatte und die Speicherung der Seafile-Daten darauf. Die Anleitung dazu ist hier: https://www.stephansnet.de/seafile-daten-auf-externe-festplatte-speichern/. Viele Grüße Stephan
Hallo Stephan,
zunächst danke für Deine Antwort. Das System ist bereits überschrieben.
Ich habe in den letzten Tagen mindestens sechsmal den Raspi neu installiert und alles Mögliche ausprobiert.
Ich habe Seafile 7.1.5 jetzt auf einem Raspi 3 B+ mit Dietpi als Betriebssystem und Sqlite3 als Datenbank laufen. Die Daten liegen auf einer 64 GB Micro-SD-Karte.
Den LC_All- bzw. Seahub-Fehler habe ich nicht mehr gehabt, da hatte ich wohl irgendetwas falsch gemacht.
Aber ich habe bei allen folgenden Installationen den Effekt gehabt, daß alles lief, Nginx „ok“ lieferte, aber trotzdem keine Client-Anmeldung oder ein Zugriff auf die Seafile-Homepage möglich war. Durch Internet-Suche bin ich auf den Hinweis gestoßen, daß in der Datei /home/seafile/conf/gunicorn.conf.py der Eintrag Bind = „127.0.0.1:8000“ in „0.0.0.0:8000“ geändert werden muß.
Sobald ich das mache, läuft alles problemlos.
Das hat wahrscheinlich etwas mit der Konfiguration des Betriebssystem-Netzwerkes zu tun. Ich habe da absolut nichts geändert; ich habe allerdings dem Raspi keine feste IP-Adresse gegeben, sondern beziehe diese per DHCP als feste Adresse aus der Fritzbox). Vielleicht liegt das daran.
Ich habe etwas im Internet zum Unterschied dieser zwei Adressen recherchiert, das aber nicht richtig verstanden. Bei 0.0.0.0 hört wohl der Rechner auf alles, was bei seiner Adresse ankommt.
Viele Grüße
Herbert
Hallo Herbert,
ich habe nochmal nachgeschaut. Eine manuell Änderung an der gunicorn.conf habe nicht vorgenommen. Warum das Problem bei dir auftritt kann ich leider nicht sagen. Ich bin nicht sicher ob es an Dietpi liegen kann (warum bei der Größe auf ein abgespecktes OS zurück greifen?). Soweit ich weiß ist der Vorteil an Dietpi ja die geringe Größe des Systems. Die geringe Größe kommt daher, dass nur die allernötigsten Programme installiert sind. Ob dies der „Fehler“ ist, waage ich zwar zu bezweifeln, aber ausschließen kann ich es auch nicht. Hast du es dann mit dem „richtigen“ Raspbian OS probiert? Eine feste IP für den Raspi ist nicht nötig. Ich arbeite auch mit der Namensauflösung ohne Probleme.
Viele Grüße
Stephan
Hallo Herbert,
mir ist gerade aufgefallen, dass du sqlite benutzt. Was spricht gegen mariadb? Die geschriebene Anleitung ist auf den Raspi zugeschnitten, getestet und funktioniert 🙂
Viele Grüße
Stephan
Hallo Stephan
ich habe jetzt LC_ALL per Hand gesetzt und dann ist dieser Fehler weg. Seahub startet jetzt ohne Angabe eines Fehlercodes nicht. Ich mache einmal weitere Versuche.
Viele Grüße
Hallo Herbert,
schau doch bitte Mal in das Log. Dort steht warum er nicht startet. Hat nichts mit locales zu tun. Welchen Raspberry nutzt du denn?
Viele Grüße
Stephan
Hallo Stephan,
zunächst vielen Dank für die ausführliche Beschreibung. Die Neuerungen von Seafile haben mich ziemlich verwirrt.
Ich habe gemäß Deiner Anleitung Seafile auf einem raspi 3+ und raspios-buster-armhf-lite vom 02.12. installiert.
Ich habe jetzt das Problem, daß seahub nicht startet, weil er eine env-Variable nicht findet. Hier die Fehlermeldung:
LC_ALL is not set in ENV, set to en_US.UTF-8
./seafile-server-latest/seahub.sh: Zeile 210: Warnung: setlocale: LC_ALL: Kann die Locale nicht ändern (en_US.UTF-8): Datei oder Verzeichnis nicht gefunden
Starting seahub at port 8000 …
Error:Seahub failed to start.
Hier die die Angaben in locale:
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE=“de_DE.UTF-8″
LC_NUMERIC=“de_DE.UTF-8″
LC_TIME=“de_DE.UTF-8″
LC_COLLATE=“de_DE.UTF-8″
LC_MONETARY=“de_DE.UTF-8″
LC_MESSAGES=“de_DE.UTF-8″
LC_PAPER=“de_DE.UTF-8″
LC_NAME=“de_DE.UTF-8″
LC_ADDRESS=“de_DE.UTF-8″
LC_TELEPHONE=“de_DE.UTF-8″
LC_MEASUREMENT=“de_DE.UTF-8″
LC_IDENTIFICATION=“de_DE.UTF-8″
LC_ALL=
Danach ist LC_ALL nicht gesetzt, aber warum verwendet das System nicht LANG?
Hast Du eine Idee, wo ich da „forschen“ muß?
Vielen Dank
Hallo Herbert,
das Seafile nicht startet kann aber nicht an „LC_ALL is not set in ENV, set to en_US.UTF-8“ liegen. Seafile bzw Seahub sollte trotzdem starten.
Welchen Raspberry nutzt du? Auf der ersten Generation läuft Seafile nicht.
Die Verknüpfung zu richtigen Python version hast du gesetzt?
Schau mal in das Log-File:
sudo su seafile
cd
tail logs/seahub (oder nano logs/seahub)
Viele Grüße
Stephan
Super Anleitung, hat perfekt geklappt – nachdem ich alle Kommentare gelesen hatte.
Denn nur hier habe ich gesehen dass ein Pi der ersten Generation nicht funktioniert.
Den hatte ich probehalber für die Neueinrichtung mit Buster und Version 7.1.4 eingesetzt.
Das laufende System mit einem Pi3 sollte erstmal unverändert bleiben und weiterlaufen.
Mit einem Pi 4 für die Testumgebung ist jetzt alles ok.
Hey, eine super Anleitung….es klappt alles bei mir…bis zum Schluss, denn dann, wenn ich mit sudo systemctl start seafile seahub starten will, kommt diese Fehlermeldung:
Job for seahub.service failed because the control process exited with error code.
See „systemctl status seahub.service“ and „journalctl -xe“ for details.
Das hier steht in „systemctl status seahub.service“:
● seahub.service – Seafile hub
Loaded: loaded (/etc/systemd/system/seahub.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-09-18 14:39:47 BST; 24s ago
Process: 1122 ExecStart=/home/seafile/seafile-server-latest/seahub.sh start (code=exited, status=1/FAILURE)
Sep 18 14:39:41 pinas systemd[1]: Starting Seafile hub…
Sep 18 14:39:41 pinas seahub.sh[1122]: Starting seahub at port 8000 …
Sep 18 14:39:47 pinas seahub.sh[1122]: Error:Seahub failed to start.
Sep 18 14:39:47 pinas seahub.sh[1122]: Please try to run „./seahub.sh start“ again
Sep 18 14:39:47 pinas systemd[1]: seahub.service: Control process exited, code=exited, status=1/FAILURE
Sep 18 14:39:47 pinas systemd[1]: seahub.service: Failed with result ‚exit-code‘.
Sep 18 14:39:47 pinas systemd[1]: Failed to start Seafile hub.
Eine Idee, woran das liegen könnte? Danke jedenfalls!!
Hallo Thommy,
danke für dein Feedback.
Ggf hast du vergessen seafile und seahub als seafile-Benutzer zu stoppen?
sudo su seafile
seafile-server-latest/seafile.sh stop
seafile-server-latest/seahub.sh stop
exit
sudo systemctl start seafile seahub
Viele Grüße
Stephan
Hi Stephan, das war es nicht, es hatte wohl mit mangelnden Rechten für den Benutzer seafile zu tun, es hat nun geklappt, eine super Anleitung! Als nächstes teste ich mal deine Anleitung zur Verschlüsselung und teste danach, wie der Uploadspeed auf der Weboberfläche ist. Über die Nextcloud (Nextcloudpi) war das nämlich bei mickrigen 10 MB/s.
Hi Thommy,
super das es nun klappt. Welche Rechte haben gefehlt? Ich hatte nie Probleme mit rechten beim User seafile…
Gerne einmal mitteilen falls das Problem bei weiteren Leuten auftritt…
Klar, es lag daran, dass ich dem User mit „usermod -aG sudo seafile“ Rechte gegeben habe, die später im Installationsprozess Probleme bereitet haben. Jetzt läuft es nach deiner zusätzlichen Anleitung mit https, aber die Uplaodraten sind genauso wie bei nextcloud. Nur die Weboberfläche reagiert deutlich flüssiger, dafür hakt es aber mit den Freigabeoptionen bei mir. Beispielsweise erstelle ich in der Webgui einen neuen Benutzer, kann ihm aber nicht eine freigegebene Bibliothek zuweisen. Das klappt nur, wenn ich eine Bibliothek für alle freigebe. Auch wollte ich noch testen, wie sich seafile mit einee OMV 5 Installation inkl Software-Raid verträgt. Tausend Dank jedenfalls!
Hallo Stephan,
danke für die schöne Anleitung. Magst du noch eine Ergänzung vornehmen, wie man WebDAV installiert für Seafile? Siehe hier: https://download.seafile.com/published/seafile-manual/extension/webdav.md
Das ist wohl etwas tricky mit den unterschiedlichen Versionen.
Mit WebDAV kann man dann schön zu Android-Geräten synchronisieren mit der App: FolderSync Pro.
https://play.google.com/store/apps/details?id=dk.tacit.android.foldersync.full&hl=de
Danke & VG
Jaqueline
Hallo Jaqueline,
danke für dein Feedback. WebDav ist mein nächstes Projekt. Ich muss mich da allerdings erst einmal selber mit beschäftigen um ein reibungsloses Tutorial schreiben zu können.
Ich selber nutze auf meinem Handy den seafile client aktuell. Hauptsächlich zum automatischen Upload meiner Fotos…
Viele Grüße
Stephan
Ja, genau das mache ich auch. Automatische Synchronisation geht allerdings leider nur mit Photos mit der Original Seafile App. Mit FolderSync Pro kann man beliebige Ordner synchronisieren per WebDAV.
LG
Jaqueline
Dear Mr. Stephan,
Thankyou for such a informative article, i was using Nextcloud before but Seafile is much more faster compare to nextcloud.I manage to put data to my external harddisk successfully.
Now i want to locate my data in the raspberry pi, but i am not able to find it.I want to know at which location on the harddisk the data is being stored.Currently i know the data is being stored in /mnt/cloud/seafile/seafile-data but i cannot see fy folders in there. Can you help in this case?
Dear Rajeev,
I am not sure what exactly you mean. You have data uploaded to seafile? The data on the storage are encrypted, so you can’t transfer into this folder via http://ftp...
You also have set the symbolic link to /home/seafile/seafile-data ?
Best regards
Stephan
Hi Stephen,
I have uploaded my data of approximately 100GB to my external hard disk attached to the Raspberry PI.
As you mentioned, it looks like the data is encrypted in the „seafile-data“ folder inside my external harddisk.
I was looking for a way to retrieve/ backup this data anytime i want by simply plugging this external hard disk to my laptop or any other windows machine in future just like i was able to do with nextcloud, but seems like it’s not possible or is it?
My main aim is to have a periodic backup of this external harddisk since I am not using RAID configuration for hard disk redundancy.
Sorry, seafile is completely new to me.
Regards,
Rajeev
Hi Rajeev,
you can easily use seafile client on each device. So your data will sync on each device. I have my data on laptop and two desktop computers. So if one pc or even the server will break (server never broke at my side) I can easily sync back from one of my devices.
So data on your hard drive is like backup.
Hallo Stephan, dein Tutorial ist das beste, das ich gefunden habe und klarer als auf der offiziellen Seite. Herzliche Glückwünsche.
In Bezug auf das Tutorial auf der offiziellen Seite ist von der Installation die Rede:
pip3 install –timeout = 3600 Kissen pylibmc captcha jinja2 sqlalchemy \
django-pylibmc django-simple-captcha python3-ldap
Sie erwähnen es nicht in Ihrem Tutorial. Es ist notwendig? Die Wahrheit ist, dass ich nicht weiß, wofür diese Pakete sind.
Danke dir.
Entschuldigung für mein Deutsch. Es ist eine Übersetzung durch Google Übersetzer.
Dear César,
thank you for your comment. This packages are not neede for the raspberry. I am not sure right now, but I think this packages will not work on raspberry. The official guide is for linux server which run on x86 processor. Raspberry runs with ARM-CPU.
My guide is specially for raspberry. If you have linux server like ubuntu server there are a bit differences (not really much).
Best regards
Stephan
Vielen Vielen Dank!
Das ist eine super Schritt-für-Schritt-Anleitung!
Als Linus-Rookie hab ich es trotzdem geschafft damit Seafile zum Laufen zu bekommen. Ich hatte schon eine Weile gebastelt und es mit einigen anderen Hilfestellungen versucht. Mit dieser hatz geklappt!
Hi Stephan,
I’m trying to follow your guide (that is very well explained) installing seafile on my raspberry pi but I’m facing an errore while running setup-seafile-mysql.sh script. In particular, after entering all the info requested by the script, I end up with „Generating ccnet configuration … Error: Failed to generate ccnet configuration“. Could you please help me? Thank you
Hi Riccardo,
I never had that problem, I think there is a permission problem.
Try the following command as root user:
usermod -a -G users seafile
Now start the setup again, maybe you need delete the conf directory first (you will get an error with this information if needed).
Best regards
Stephan
Hi Stephan,
I’ve just tried what you proposed, but same issue. Tried also to delete conf folder, but anything changed. I’m trying to install seafile on an older version of raspberry (I think it’s raspberry pi model b, the first model b). Maybe there is something not compatible. I know that seems to be strange, but it’s the only thing I can think about.
Hi Riccardo,
you tried to upgrade seafile? Seafile was running before on your Pi?
On Raspberry Pi Model 1 I never made Seafile run (Version 7), don’t know why. Try to make it run on Raspberry Pi 2 if you have that model (I tried it and it worked).
If you only have this old Pi, try to install older version (Verion 6).
Vielen Dank für die Anleitung! Nachdem ich gestern von Version 7.0.3 auf 7.1.4 upgraden wollte (und auch die besonderen Installationsaleitungen von Seafile beachtet und durchgeführt habe) ging nichts mehr. Auch mein Backup wollte nicht mehr. Daher kurzerhand ein letztes Mal den RBPi komplett neu aufgesetzt und Seafile neu installiert. Passiert das noch einmal, werde ich wohl NextCloudPi ausprobieren. Die ewigen Updgrade Probleme nerven mich immer mehr.
Aber mit dieser Anleitung ging das sehr schnell wieder einzurichten und werde meine Anleitung dahingehend aktualisieren.
Hallo Sascha,
danke für dein Feedback. Freut mich das dir meine Anleitung geholfen hat. Schade das das Upgrade problematisch für war…
Nextcloud ist keine schlechte Alternative. Ich hatte mich für seafile aufgrund der Performance entschieden. Nextcloud benötigt sehr viel RAM und bei upload und download bei seafile mithalten zu können, bietet dafür andere coole Features…