Raspberry Pi: Seafile Server Upgrade
Seafile ist eine beliebte Alternative zu Owncloud und bietet die Synchronisierung von Dateien über den eigenen Server. Aufgrund der wesentlich besseren Performance ist Seafile insbesondere auf dem Raspberry Pi gerne im Einsatz. Außerdem gibt es die Software von Haus aus in einer für den Raspberry Pi optimierten Version. Aufgrund reger Weiterentwicklung von Seafile gibt es häufig Updates, die man auch einspielen sollte, um von den Erneuerungen zu profitieren. Wie man Seafile installiert erklärte ich bereits in dem Artikel Owncloud-Alternative Seafile Server installieren. Ausgegangen von dieser Installation (Anleitung Stand 10. August 2014 oder neuer) erkläre ich im Folgenden wie man, auch auf dem Raspberry Pi, Seafile upgradet. Im Beispiel werden wir von Version 2.1.5 auf Version 3.1.2 aktualisieren, wobei dies bei jeder anderen Version ähnlich funktionieren sollte.
Voraussetzung: Seafile erfolgreich installiert (im Optimalfall nach meiner Anleitung)
Zunächst müssen wir Seafile und Seahub stoppen, was wir über folgende Kommandos im Benutzer seafile bewerkstelligen können.
sudo su - seafile
/home/seafile/seafile-server-latest/seahub.sh stop
/home/seafile/seafile-server-latest/seafile.sh stop
exit
Außerdem sollten wir zur Sicherheit noch eine Sicherungskopie anfertigen, falls das Update schief geht. Genug freier Speicherplatz ist vorausgesetzt. Falls der seafile-data Ordner an einem anderen Ort untergebracht ist, muss dieser dort mittels cp kopiert werden. Dies kann ein paar Minuten dauern, ohne dass eine Ausgabe erscheint.
sudo mkdir /home/seafile-backup
sudo cp -R /home/seafile /home/seafile-backup
Nun sollten wir, wieder aus dem Seafile Benutzer heraus, die Verknüpfung zur bisherigen Version als aktuelle Version löschen und die neue Version herunterladen wie auch entpacken.
sudo su - seafile
rm seafile-server-latest
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.2_pi.tar.gz
tar -xvf seafile-server_3.1.2_pi.tar.gz
rm seafile-server_3.1.2_pi.tar.gz
Jetzt können wir das Update Script ausführen, das die Datenbank und Einstellungen von der alten zur neuen Version migrieren wird. Wichtig ist es hier, alle Migrationen von übersprungenen Versionen auch auszuführen. Eine übersichtliche Liste der Migrationsscripte erhält man mit dem Befehl ls -l
. Im Beispiel, von Version 2.1.5 auf Version 3.1.2, müssen wir also drei Scripts ausführen.
cd seafile-server-3.1.2/upgrade/
./upgrade_2.1_2.2.sh
./upgrade_2.2_3.0.sh
./upgrade_3.0_3.1.sh
Nach der erfolgreichen Migration können wir Seafile und Seahub nun wieder starten.
Ohne SSL
/home/seafile/seafile-server-latest/seafile.sh start
/home/seafile/seafile-server-latest/seahub.sh start 8000
Mit SSL
/home/seafile/seafile-server-latest/seafile.sh start
/home/seafile/seafile-server-latest/seahub.sh start-fastcgi
Hat alles geklappt, kann man sich nun im Webinterface anmelden und dieses funktioniert einwandfrei. Nicht zu vergessen ist auch die Clients zu aktualisieren, da alte Clients teils inkompatibel zu neueren Server Versionen sind. Falls das Upgrade nicht funktioniert hat, kannst du mit folgendem Schritt das Backup einspielen.
Wir löschen im Folgenden die neue Version von Seafile und nennen die Ordner anschließend so um, dass die alte Version wieder nutzbar ist. Dies können wir jedoch nicht aus dem Benutzer seafile heraus machen, da wir Root-Rechte benötigen. Falls ein Backup des seafile-data Ordners an einem anderen Ort existiert, muss dieser mittels mv ebenfalls umbenannt werden.
Seafile und Seahub stoppen und Benutzer verlassen
/home/seafile/seafile-server-latest/seahub.sh stop
/home/seafile/seafile-server-latest/seafile.sh stop
exit
Datenbestand zurückspielen
cd /home
sudo rm -rf seafile
sudo mv seafile-backup/seafile seafile
sudo rm -r seafile-backup
sudo chown -R seafile:seafile seafile
Alte Seafile Version starten
sudo su – seafile
Ohne SSL
/home/seafile/seafile-server-latest/seafile.sh start
/home/seafile/seafile-server-latest/seahub.sh start 8000
Mit SSL
/home/seafile/seafile-server-latest/seafile.sh start
/home/seafile/seafile-server-latest/seahub.sh start-fastcgi
17 Kommentare. Hinterlasse eine Antwort
Hallo Jan,
erstmal vielen vielen Dank für deine Anleitungen! Sie sind für Neuanfänger sehr verständlich und übersichtlich!
Nun zu meiner Frage:
Ich habe gerade bei den Vorbereitungen zum Update festgestellt, dass ich Seafile vor Monaten nicht unter dem user „seafile“ sondern unter dem user „pi“ installiert habe. Hat dies irgendeinen Nachteil? Der RasPi wird nur für Seafile genutzt.
Wenn der Raspberry Pi nur als Seafile Server genutzt wird gibts keinen ernsthaften Nachteil. Der Vorteil eines Benutzers wäre eine etwas abgeschirmter Umgebung zu anderen Anwendungen.
Hallo Jan,
ich habe hier im Zusammenhang mit Dateien die ich mit Seafile teilen möchte, eine sehr interessante Anwendung gefunden, über die du bei Gelegenheit/Lust berichten könntest bzw. evtl. sogar eine Anleitung schreiben? Dort wird beschrieben, wie man auf dem Raspberry einen eigenen URL-Shortener Dienst betreiben kann, ohne die Nachteile anderer Anbieter (Privacy, Kontrolle über die Links) in Kauf nehmen zu müssen:
http://blog.krishnachaitanya.ch/2013/10/yourls-own-short-url-service-on.html
Ich bin´s wieder Jan…
nachdem ich heute festgestellt habe, daß meine Seafile-Version (3.1.3 bzw. 3.1.4) auf zwei verschiedenen RPIs veraltet gewesen sind, habe ich dein Tutorial zur Basis genommen, um daraus ein Bash-Script zu basteln. Entsprechend sieht das dann wie folgt aus:
#!/bin/bash
/home/seafile/seafile-server-latest/seahub.sh stop
/home/seafile/seafile-server-latest/seafile.sh stop
rm seafile-server-latest
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.6_pi.tar.gz
tar -xvf seafile-server_3.1.6_pi.tar.gz
rm seafile-server_3.1.6_pi.tar.gz
cd /home/seafile/seafile-server-3.1.6/upgrade/ && ./minor-upgrade.sh
/home/seafile/seafile-server-latest/seafile.sh start
/home/seafile/seafile-server-latest/seahub.sh start-fastcgi
Sofern es sich also nur um ein Mino-Update handelt läuft das komplett automatisiert ab. Allerdings sollte man nicht vergessen die jeweilige Versionsnummer im Script zu korrigieren und die Ausführbarkeit mittels sudo chmod +x zu gewährleisten.
Nun könnte man noch mit grep/sed oder anderen Unix-Tools das Script dahingehend verbessern, daß die jeweils aktuelle Version ermittelt und als Variable übergeben wird. So weit bin ich beim Scripten allerdings noch nicht. Hat jemand dazu Vorschläge zu machen?
Hallo, zunächst einmal danke für das Tutorial. Ich habe alle Schritte (mit Ausnahme des Backups) wie beschrieben ausgeführt und sie sind sämtlich ohne Fehlermeldung durchgelaufen. Zum Schluss habe ich den Raspi per „sudo reboot“ neugestartet. Seither funktioniert Seafile reibungslos, allerdings meldet die Weboberfläche weiterhin die alte Version 3.0.2 (statt 3.1.6). Woran kann das liegen bzw. weiß jemand Rat?
Dann wäre ich mir nicht so sicher, ob es wirklich updated wurde 😉
Habe das gleiche Problem. Kann es sein, dass trotz upgrade die alte Version gestartet wird beim reboot?
Habe die Lösung für mich gefunden:
gib mal crontab -e ein und guck welche Version bei dir gestartet wird. War bei mir nicht die letzte, sondern die alte. Musste den Zielordner in seafile-server-latest ändern. Vielleicht hilft dir das.
[…] Jan Karres – Seafile Server Upgrade […]
Hat schon jemand auf Server 4.X upgedated? Funktioniert das genauso?
Hab mir soweit meine Fragen selbst beantwortet:
1. Upgrade auf 4.x funktioniert genauso einfach wie oben beim minor-upgrade beschrieben
2. [Wie muss die nginx-Webserver-config angepasst werden, damit die synchronisierung über http funktioniert?]: Ngnix musste ich nur um proxy_connect_timeout und proxy_read_timeout ergänzen (Siehe http://manual.seafile.com/deploy/deploy_http_sync.html) – der Rest war schon vom einrichten in der Config.
Alles läuft soweit. Ob die Synchronisation aber auch schon wirklich über https funktioniert kann ich erst berichten, wenn im Januar wieder hinter der Firmenfirewall sitze, die alles außer http/https blockt…
Hallo Jan,
habe gerade meinen Seafile-Server von v.4.3.1 auf v.4.3.2 geupdated. Lief wie immer sauber durch … .
Ich hoffe mal, dass jetzt die kleinen Sync-Probleme beseitigt sind. Lt. ChangeLog müsste das ja so sein … .
Bei der Gelegenheit habe ich mal über eine Veränderung bei der Datenbank nachgedacht. Also von SQlite auf MySQL. Da ich die für ein Sync relevanten Bestandteile des /home mehrerer User von drei Rechnern (~/Dokumente, ~/.mozilla, ~/.thunderbird, ~/moneyplex und ein paar weitere) via Seafile synchronisiere, befürchte ich so langsam an die Grenzen von SQlite zu stoßen. Zumal der „neue Pi“ auch mit MySQL leistungsmäßig keine Probleme haben dürfte.
Du ahnst es schon: Hier verbirgt sich der Wunsch nach einem weiteren kleinen Tutorial 😉
Selbstverständlich ist das alles sehr gut in dem deutschen Seafile Handbuch beschrieben. Aber zum einen gibt es da noch Fragen (Installationspfad – im Handbuch etwas anders als bei dir) und vor allem, bei dir ist alles so schön kompakt auf einer Seite.
Also, ich würde mich freuen … .
Vielen Dank!
Peter
Ich habe gerade auf seafile 4.3.2 ge-upgraded und musste feststellen, dass im web interface einige Dateien aus dem seahub/media Ordner nicht geladen wurden. Das hat das Frontend zerschossen.
Damit alles rund laeuft muesst ihr eure nginx config fuer das seahub frontend editieren. Ich habe beispielsweise in der Datei /etc/nginx/sites-available/seafile folgende Zeilen:
location /media {
root /home/seafile/seafile-server/seahub;
}
… auf den korrekten Pfad:
location /media {
root /home/seafile/seafile-server-latest/seahub;
}
… geaendert.
Hallo, bei mir läuft schon seit einiger Zeit die Server Version 4.0.6 einwandfrei, jetzt wollte ich doch mal updaten, und zwar auf die 4.3.2
Also die Schritte wie beschrieben durchgeführt, inkl der Skripts von 4.0 auf 4.1, 4.1 auf 4.2 und 4.2 auf 4.3, keine Fehlermeldungen.
Nun lässt sich aber weder seafile noch seahub starten. Beim Startversuch von seafile heißt es: „/home/seafile/seafile-server-latest/seafile.sh: line 65: /home/seafile/seafile-server-4.3.2/seafile/bin/seafile-controller: cannot execute binary file: Exec format error
Seahub startet natürlich auch nicht, da seafile nicht läuft.
Kann mir jemand helfen? Vielen Dank schon mal
Konnte das Problem teilweise selbst lösen, hatte aus Versehen nicht die pi-Version des servers geladen. Mit der pi Version schlug allerdings das upgrade von 4.1 auf 4.2 fehl, 4.0 auf 4.1 und 4.2 auf 4.3 funktionierten aber. Habe es jetzt mal so belassen und hoffe, dass keine Fehler auftreten. Grüße
Hallo Jan,
erstmal großes Lob für Deine Tutorials.
Ich wollte mal wieder mein seafile nach deiner Anleitung updaten (5.1.3 -> 6.1.1). Hat bis auf eine ‚Kleinigkeit‘ soweit auch funktioniert: Beim Aufruf der Website läuft Nginx jetzt in einen Timeout („504 GatewayTime-out“). Welche Dateien müssen editiert werden, ob den Time-out-Fehler zu beheben? Wie gesagt, das eigentliche Updaten hat fehlerfrei funktioniert.
Vielen Dank und Gruß
Hallo Jan,
ich hatte das gleiche Problem.
Der Befehl „sudo apt-get install python-request“ hat das Problem behoben.
Gruß Matthias