Auch hier ist die Voraussetzung eine LEMP-Installation, wie sie hier beschrieben ist: Installation von Nginx, MySQL und PHP
Seafile besitzt zwar einen einen eigenen, kleinen Web-Server, allerdings beherrscht dieser das HTTPS-Protokoll nicht. Um also eine verschlüsselte Übertragung zur Cloud zu erreichen, muss man Seafile hinter einem "richtigen" Web-Server betreiben - in diesem Fall NginX.

Die Einrichtung erfolgt in 4 Schritten:

  1. Seafile Grundinstallation
  2. Seafile mit Https hinter NginX einrichten
  3. WebDAV aktivieren
  4. Seafile beim Booten starten

Wenn man noch kein Zertifikat zur Verschlüsselung erstellt hat, kommt das natürlich zuerst!
Dazu das Verzeichnis /etc/ssl/nginx erstellen, in das Verzeichnis wechseln und dort ein selbstsigniertes Zertifikat erstellen.

mkdir /etc/ssl
mkdir /etc/ssl/nginx
cd /etc/ssl/nginx
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 1095

Schritt 1: Seafile Grundinstallation
Seafile braucht Phython, daher werden jetzt die notwendigen Pakete installiert.

apt-get install python2.7 python-setuptools python-simplejson python-imaging python-mysqldb

Damit Seafile mit NginX zusammen arbeiten kann, noch mit

apt-get install python-flup

ein weiteres, notwendiges Paket installieren.

Damit der Dienst nicht als root-User läuft, bekommt der Dienst einen eigenen User, wie der Web-Server (www-data) oder MySQL.
Das geht mit dem Befehl

adduser SEAFILE-USER --disabled-login 

Der Name SEAFILE-USER ist dabei frei wählbar. Durch die Option --disabled-login bekommt der Nutzer kein Passwort und der Nutzer kann sich nicht von außen am System anmelden. Es ist also ein interner System-User.

Nach diesen Vorbereitungen kann man jetzt anfangen, Seafile zu installieren. Auf der Seafile-Seite wird empfohlen, Seafile in dem entstandenen Ordner unter /home/ zu installieren. Ein Installationsverzeichnis wie zum Beispiel /opt/seafile/ oder /var/seafile/ ist aber ebenso möglich.
Ich gehe mal im Folgenden davon aus, dass Seafile in dem Ordner /home/SEAFILE-USER installiert werden soll.
Also mit

cd /home/SEAFILE-USER

in das Verzeichnis wechseln.
Jetzt sollte man zum Nutzer SEAFILE-USER werden mit

su - SEAFILE-USER

Jetzt lädt man mit

wget https://github.com/haiwen/seafile-rpi/releases/download/VERSION/seafile-server_VERSION_pi.tar.gz

das Paket für den Raspberry Pi von der Seafile-Seite herunter.

Jetzt das herunter geladene Paket entpacken mit

tar -zxvf seafile-server_VERSION_pi.tar.gz

Um die Grundinstallation von Seafile zu starten, in das Seafile-Verzeichnis wechseln und das Setup-Script für MySQL starten mit

cd seafile-server_VERSION
./setup-seafile-mysql.sh

Dort wird unter Anderem das Setup der Datenbank vorgenommen und die Ports des Servers eingestellt. Bei den Ports kann man die Default-Einstellungen übernehmen.

What is the name of the server? It will be displayed on the client.
3 – 15 letters or digits
[ server name ] servername

What is the ip or domain of the server?
For example: www.mycompany.com, 192.168.1.101
[ This server’s ip or domain ] www.yourdomain.com

——————————————————-
Please choose a way to initialize seafile databases:
——————————————————-

[1] Create new ccnet/seafile/seahub databases
[2] Use existing ccnet/seafile/seahub databases

[ 1 or 2 ] 1

What is the host of mysql server?
[ default “localhost” ] je nach Konfiguration

What is the port of mysql server?
[ default “3306” ] je nach Konfiguration

What is the password of the mysql root user?
[ root password ] je nach Konfiguration

verifying password of user root … done

Enter the name for mysql user of seafile. It would be created if not exists.
[ default “root” ] seafileusr (zum Beispiel)

Enter the password for mysql user “seafileusr”:
[ password for seafileusr ] Passwort für den neuen Benutzer “seafileusr”

———————————
This is your configuration
———————————
[…]
———————————
Press ENTER to continue, or Ctrl-C to abort
———————————
Enter
—————————————————————–
Your seafile server configuration has been finished successfully.

Damit ist die Grundinstallation abgeschlossen. Ok -- fast.
Jetzt einmal den Seafile-Server starten mit

/home/SEAFILE-USER/seafile-server-latest/seahub.sh start

Beim ersten start wird ein Administrator-Konto angelegt. Dazu in den folgenden Abfragen seine EMail-Adresse eingeben und ein Passwort festlegen.

----------------------------------------
It's the first time you start the seafile server. Now let's create the admin account
----------------------------------------

What is the email for the admin account?
[ admin email ] email@example.org

What is the password for the admin account?
[ admin password ] 

Enter the password again:
[ admin password again ] 



----------------------------------------
Successfully created seafile admin
----------------------------------------



Loading ccnet config from /home/SEAFILE-USER/ccnet
Loading seafile config from /home/SEAFILE-USER/seafile-data

Seahub is started

Done.

Das ist wichtig, da Seafile später sonst nicht automatisch starten kann.

Schritt 2: Seafile mit Https hinter NginX einrichten

Dazu müssen erstmal 2 Dateien angepasst werden.

1. ccnet.conf
In der Datei ccnet/ccnet.conf muss der Parameter "SERVICE_URL" angepasst werden:

nano /home/SEAFILE-USER/ccnet/ccnet.conf 
     .
     .
SERVICE_URL = https://www.yourdomain.com

2. seahub_settings.py
In der Datei seahub_settings.py den Parameter FILE_SERVER_ROOT anpassen:

nano /home/SEAFILE-USER/seahub_settings.py
     .
     .
FILE_SERVER_ROOT = 'https://www.yourdomain.com/seafhttp'

Jetzt wird für NginX noch ein neuer, virtueller Host für die Cloud erzeugt. Dafür erzeugt man eine neue Datei in dem Ordner /etc/nginx/sites-available, z.B. myCloud

nano /etc/nginx/sites-available/myCloud


server {
   listen 443;
   ssl on;
   ssl_certificate /etc/ssl/nginx/cacert.pem;        # path to your cacert.pem
   ssl_certificate_key /etc/ssl/nginx/privkey.pem;   # path to your privkey.pem
   
   server_name www.yourdomain.com;    
   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;
   }
   
   location /media {
       root /home/SEAFILE-USER/seafile-server-latest/seahub;
   }
}

Dabei müssen die Pfade zu den SSL-Zertifikaten, server_name und der Pfad für location /media an die eigene Installation angepasst werden.

Jetzt muss diese Konfigurationsdatei noch durch einen symbolischen Link im Ordner /etc/nginx/sites-enabled aktiviert werden.

ln -s /etc/nginx/sites-available/mycloud /etc/nginx/sites-enabled

Schritt 3: WebDAV aktivieren

Standardmäßig ist die WebDAV-Schnittstelle bei Seafile deaktiviert. Um aber die Dateien der Cloud auf lokalen Rechner oder dem Tablet mounten zu können, ohne die Dateien zu synchronisieren, braucht man die aktivierte WebDAV-Schnittstelle.

Um sie zu aktivieren, muss man Änderungen in der Datei /home/SEAFILE-USER/conf/seafdav.conf vornehmen.

nano /home/SEAFILE-USER/conf/seafdav.conf

[WEBDAV]

# Diesen Wert auf true setzen
enabled = true

# Der Port ist frei wählbar, also einen beliebigen freien Port wählen
port = 9999

# Da wir Seafile hinter NginX laufen lassen, muss fastcgi auf true gesetzt werden
fastcgi = true

# Hier den Nahmen wählen, unter dem die Cloud erscheint
share_name = /meineCloud

Jetzt noch den folgenden Teil in der eben erstellte Konfigurationsdatei für die Cloud ergänzen: Darauf achten, dass der Port im fastcgi_pass auf den Port und die location auf den share_name gesetzt ist, der gerade in der seafdav.conf-Datei festgelegt wurde.

nano /etc/nginx/sites-available/myCloud 

location /meineCloud {
  fastcgi_pass    127.0.0.1:9999;
  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;

  client_max_body_size 0;

  access_log      /var/log/nginx/seafdav.access.log;
  error_log       /var/log/nginx/seafdav.error.log;
}

Jetzt kann man unter der Adresse www.yourdomain.com/meineCloud über WebDAV auf seine Dateien zugreifen.

Schritt 4: Seafile beim Booten starten

Dafür wird jetzt jetzt noch eine neue Datei in dem Ordner /etc/init.d/ erstellt, z.B. meineCloud.
Dort den folgenden Inhalt einfügen und die Parameter user und seafile_dir an die eigene Installation anpassen.

#!/bin/bash

### BEGIN INIT INFO
# Provides:          mathkernel
# Required-Start:    $local_fs 
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Seafile-Server
### END INIT INFO

# Change the value of "user" to your linux user name
user=SEAFILE-USER

# Change the value of "seafile_dir" to your path of seafile installation
seafile_dir=/home/SEAFILE-USER
script_path=${seafile_dir}/seafile-server-latest

# Change the value of fastcgi to true if fastcgi is to be used
fastcgi=true
# Set the port of fastcgi, default is 8000. Change it if you need different.
fastcgi_port=8000

case "$1" in
        start)
                su - ${user} ${script_path}/seafile.sh start 
                if [  $fastcgi = true ];
                then
                        su - ${user} ${script_path}/seahub.sh start-fastcgi ${fastcgi_port} 
                else
                        su - ${user} ${script_path}/seahub.sh start 
                fi
        ;;
        restart)
                su - ${user} ${script_path}/seafile.sh restart 
                if [  $fastcgi = true ];
                then
                        su - ${user} ${script_path}/seahub.sh restart-fastcgi ${fastcgi_port} 
                else
                        su - ${user} ${script_path}/seahub.sh restart 
                fi
        ;;
        stop)
                su - ${user} ${script_path}/seafile.sh $1 
                su - ${user} ${script_path}/seahub.sh $1 
        ;;
        *)
                echo "Usage: /etc/init.d/seafile {start|stop|restart}"
                exit 1
        ;;
esac

Jetzt also einmal Nginx neu starten mit

/etc/init.d/nginx restart

und Seafile neu starten mit

/etc/init.d/meineCloud restart

Damit Seafile nun beim booten gestartet wird, kann man folgende Zeile in die Datei /etc/rc.local einfügen

nano /etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
     .
     .
     .

# start seafile-server
/etc/init.d/meineCloud start

exit 0

Darauf achten, dass die Zeile vor dem "exit 0" eingefügt wird.

Und das wars.

Comments

Wed, 03/25/2015 - 12:02pm

Hey Bjoern,

erstmal danke für dieses erstklassige Tutorial und die wirklich gute Seite.

Nun im Tutorial selbst bei Activate WebDAV fügst du in die Konfig-file ein
"location /meineCloud"
Sollte das nicht "myCloud" heißen?

Wed, 03/25/2015 - 1:24pm

Hallo und Danke.

Nein, das soll in diesem Fall wirklich "meineCloud" heißen. Dsa ist der Share-Name von deiner Seafile-Cloud. Du erreichst dann die WebDAV-Sachen, indem du dann als Adresse "https://deine.url.de/meineCloud" eingibst.

Der Parameter "meineCloud" taucht ja dann in der Konfig-Datei wieder auf mit "location meineCloud/ ... " mit den zugehörigen Einstellungen wieder auf.

Ich hoffe, das hilft weiter.

Gruß Bjoern

Wed, 03/25/2015 - 3:03pm

So, ich nochmal,

bevor man ./seahub start ausführen kann muss doch zuerst
"/home/SEAFILE-USER/seafile-server-latest/seafile.sh start"
ausgeführt werden, oder? Bei mir verlangt seafile das.

Grüße
-noch am basteln-

Sat, 05/02/2015 - 10:22am

Hallo
Ich habe mit Begeisterung deiner Anleitung gefolgt, leider muss man zwischendurch ein paar dinge für den Seafile-User freigeben (oder in den root Nutzer springen) aber es funktioniert.

Leider habe ich ein Problem, wenn ich den Banana Pi mit einer 2,5" HDD am SATA Port betreibe. Nach einem reboot, egal ob die gesamte Installation auf der SATA Platte liegt oder ich die Platte nur in einen Ordner gemountet habe, ich bekomme keine Verbindung mehr.
Weder über die Lokale IP noch über die Websteite.
Das Merkwürdige ist aber, dass auf dem Pi alles zu laufen scheint! Alle Dienste sind gestartet...

Vielleicht kennst du das ja.

Lg Florian

Sun, 05/03/2015 - 2:29am

Hallo Florian

Das klingt in der Tat merkwürdig - und von so was habe ich auch noch nichts gehört. Was mir dazu erstmal spontan einfällt, wäre ein zu schwaches Netzteil.
Für die Banane + SATA sollte das Netzteil 2 Ampere bringen, sonst kann es da zu einem instabilen System führen.

Könnte es das sein? Wenn nicht, müssen wir da wohl ein wenig tiefer bohren.

Gruß Bjoern

Tue, 05/05/2015 - 5:52pm

nano /etc/nginx/sites-available/myCloud

ich bin ja dort immernoch als seafile user eingeloggt

dort kommt dann bei mir beim erstellen bzw abspeichern des Inhaltes [ Fehler beim Schreiben von /etc/nginx/sites-available/cloud: Keine Berechtigu ]

Woran kann das liegen

Tue, 05/05/2015 - 6:01pm

Wenn du Einstellungen an den Systemdateien vornimmst - und dazu gehören die Dateien in /etc/nginx/sites-available/ - geht das nur als Nutzer root ... Sorry, wenn das da vielleicht ein wenig durcheinander geht ..

Als seafile user musst du eigentlich nur eingeloggt sein, wenn du seafile installierst und konfigurierst. Den Rest kannst du als Nutzer root machen ..

Ich hoffe, so kommst du weiter.

Gruß Bjoern

Tue, 05/05/2015 - 6:06pm

Ok vielen Dank für die schnelle Antwort

Nun habe ich folgendes Problem
/etc/init.d/nginx restart
klappt einwandfrei
/etc/init.d/cloud restart
dort kommt
zsh: keine Berechtigung: /etc/init.d/cloud

Woran liegt das

Wed, 05/06/2015 - 4:58pm

Oben hast du aber folgendes geschrieben:
und Seafile neu starten mit

/etc/init.d/meineCloud restart

Eventuell steh ich aber auch grad etwas auf dem Schlauch.

Thu, 05/07/2015 - 1:04am

Ja .. unter Schritt 4

Das ist für den Fall, dass du in dem Ordner /etc/init.d/ eine Datei "meineCloud" angelegt hast mit dem Inhalt, wie unter Schritt 4 beschrieben.

Das ist ein Startscript für Seafile .. zum Beispiel um Seafile beim booten automatisch zu starten.

OK, wenn du diese Startdatei "cloud" genannt hast, musst du vielleicht noch mit
<pre>
chmod u+x /etc/init.d/cloud
</pre>

diese Datei ausführbar machen .. Das wäre noch das Einzige Problem, dass ich sehe .. und du musst es als Nutzer root machen ..

Das sollte es aber dann auch wirklich gewesen sein ..

Gruß Bjoern

Mon, 06/29/2015 - 10:29pm

Hallo Bjoern,
kann es sein, dass man vor dem Befehl "/home/SEAFILE-USER/seafile-server-latest/seahub.sh start" noch den Befehl "
./seafile.sh start" eingeben muss? War bei mir jedenfalls so, wenn ja, kannst du es ja oben noch einbauen :)
Vielen Dank übrigens für deine ausführlichen Guides. Sie helfen mir viel als Pi- und Linuxneuling!

Mon, 06/29/2015 - 10:33pm

Ach ja und dein angegebene Befehl "cd seafile-server_VERSION" ging bei mir nur mit "cd seafile-server-VERSION" also zweimal Bindestrich, statt Unterstrich...

Thu, 07/09/2015 - 9:40am

Hallo Björn,
vielen Dank für Deine Arbeit und die Anleitung. Kannst Du noch die Stellen anpassen, wo du auf myCloud referenzierst, da dies manchmal so:

nano /etc/nginx/sites-available/myCloud

und manchmal so:

ln -s /etc/nginx/sites-available/mycloud /etc/nginx/sites-enabled

ausieht. Ansonsten top Anleitung und Danke.

Fri, 07/10/2015 - 12:27am

Hmm gern! Aber in diesem Fall muss es so, da mit /etc/nmginx/sites-available/myCloud ein virtueller Host gemeint ist, der für NginX angelegt wird.
Mit nano (ein Texteditor) wird die Datei dann bearbeitet und mit ln -s /etc/nginx/sites-available/mycloud /etc/nginx/sites-enabled wird die Seite dann aktiviert ...

Gruß vom Bjoern

Fri, 07/24/2015 - 10:29pm

Hi Bjoern,

ich verstehe noch nicht ganz, wie das mit der Verschlüsselung und den Zertifikaten funktioniert, wenn man via nginx Baikal und SeaFile auf einem Banana Pi betreiben will.

Konkret gefragt: Wenn Baikal via HTTPS läuft, kann ich dann Seafile hinterher installieren oder muss ich aufpassen, dass da nicht durcheinander kommt?

Danke und Gruß

p3t3r

Sat, 07/25/2015 - 10:20pm

Heyho

Nein, da musst du erstmal nichts weiter beachten. Da sollte nichts durcheinander kommen. Du musst dann vielleicht bei der Config-Datei aufpassen, aber mehr auch nicht.

Gruß vom Bjoern.

Tue, 08/04/2015 - 3:16pm

Hallo,

also ich arbeite mich gerade auch noch durch die Installation.

Dabei sind mir ein Paar Dinge aufgefallen:
[code] /etc/init.d/seafile-server start [/code] sollte [code]/etc/init.d/meineCloud start heißen [/code]

In Schritt 4 musste ich, wie beschrieben noch
[code]chmod u+x /etc/init.d/cloud [/code]
ausführen

Leider gibt es in der seahub_settings.py keinen Parameter "FILE_SERVER_ROOT"

Ich habe Version 4.0.6 insalliert.

Momentan erhalte ich beim starten: Error:Seahub failed to start.

Thu, 08/06/2015 - 3:26pm

Hallo Benedikt

Sorry - natürlich muss es <pre>/etc/init.d/meineCloud start </pre> heißen. Ich habe es verbessert. Danke für den Hinweis.

Ist jetzt schon ein weilchen her, dass ich Seafile installiert habe .. Ich weiß jetzt gar nicht mehr, ob der Parameter „FILE_SERVER_ROOT“ in der seahub_settings.py drin war. Wenn er nicht drin ist, dann füge ihn einfach hinzu.

Ich hoffe, du hast seafile mittlerweile am laufen ..

Gruß Bjoern

Sat, 08/08/2015 - 9:38am

Hallo Bjorn,

also seafile läuft inzwischen, allerdings ohne WebDAV.

Jedoch habe ich alles nochmals neu aufgesetzt und viel im Seafile Manual (welches sehr gut verständlich ist) gelesen bzw. nach dieser Anleitung garbeitet:

http://jankarres.de/2013/06/raspberry-pi-owncloud-alternative-seafile-se...

Die Vorgehenesweise ist hier sehr anschaulich und habe diese mit deiner gemischt:

1.) Seafile installieren (nur sqligt) -&gt; testen
2.) auf SSL umstellen nur nginx installieren -&gt; testen
3.) WebDAV einstellen -&gt; testen (wobei des hier bei mir hängt)

Btw. Seafile ist nun hier gehostet: https://github.com/haiwen/seafile-rpi/releases/download/VERSION/seafile-... (aktuell 4.3.1)

WebDAV werde ich auch noch aktiviert bekommen ;)

Sat, 08/08/2015 - 9:59am

Freut mich.

Ja, die Anleitungen von Jan sind klasse. Er hatte nur den Apache verwendet und ich wollte NginX nutzen und das Setup aufschreiben.
Wenn du noch Fragen hast, kann ich gerne versuchen, dir da weiter zu helfen.

Und danke für den Hinweis. Ich werde den Link gleich anpassen.

Gruß Bjoern

Tue, 09/29/2015 - 3:56pm

Hast du WebDAV mitlerweile zum laufen gebracht?

Eigentlich muss man ja nur diese Config ändern, bei mir will es aber auch nicht laufen. Vielleicht ein Problem weil hinter Router und No-IP DNS Dienst?

Vielleicht kannst du ja erzählen woran es bei dir gelegen hat.

Fri, 10/02/2015 - 6:24pm

Also No-Ip sollte kein Problem sein - zumindest nicht, wenn dort die richtige IP hinterlegt ist.

Hinter Router ist auch kein Problem, wenn die entsprechenden Ports im Router frei geschaltet sind. Je nachdem, wie du es konfiguriert hast sind das normalerweise Port 80 für normales http://.. oder Port 443 für verschlüsseltes https://..

Ich hoffe, das hilft dir weiter ..

Gruß Bjoern

Tue, 10/06/2015 - 8:42pm

Läuft alles außer WebDAV. Toll dass du hier immer noch kommentierst! Riesen Dankeschön dafür.
Ich werde bald noch einmal neu installieren, um dann gleich alles richtig zu machen (und hoffentlich geht dann auch WebDAV). Ein paar Dinge wüsste ich gern noch:
1)Momentan nutze ich Sqlite, habe aber eine 1TB HDD dran. Kannst du mir sagen, ob MySQL hier besser performen würde?
2)Kann man den Server irgendwie noch "sicherer" machen? Https ist ja gut, dann braucht man auch nur Port 443 wie ich gelesen habe. Aber reicht das aus, sofern man starke passes benützt?
3) Was wäre wenn ich nur http nutze ohne nginx https und ausschließlich verschlüsselte Bibliotheken nutzen würde? Die Verschlüsselung ist doch end-to-end. Der Inhalt der Daten dürfte also geschützt sein, oder? Allerdings gibt es ja den "Token" bei verschlüsselten Bibliotheken der temporär auf dem Server gelegt wird. Dieser wäre dann auf jeden fall abgreifbar oder?

Punkt 3 ist als Gedankenexperiment zu sehen. Wirklich wichtig wäre ob ich lieber Mysql nutzen soll. Wie ist eure Erfahrung so?

I

Tue, 10/06/2015 - 8:54pm

Ganz großen Dank, Bjoern! (Oder mit ö?)

Mit den drei Beiträgen zu nginx/https+Seafile+Baikal hast Du mir ganz viel Arbeit erspart! :-) Deine Beschreibungen sind wahrhaft plug'n-play: Bis auf wenige persönliche Änderungen hab ich Deine Installationsbeschreibungen nachvollzogen und alles spielt tatsächlich auf Anhieb. Da ich mir das ursprünglich alles selber zusammensuchen, testen und nachher auf meinem Blog in vergleichbarer Form, wie Du hier, beschreiben wollte, kann ich mir das jetzt sparen. Ich hab trotzdem 'nen Blogeintrag gemacht und hier her verwiesen. Alleine schon, damit ich es wiederfinde, wenn ich es wieder brauch. :-D Denn meinen Blog führe ich auch deshalb, um getestete Dinge mir für die Ewigkeit zu notieren (bin vergesslich) und dabei gleichzeitig Anderen zur Verfügung zu stellen.

Gibt es neue Erkenntnisse zur Stabilität von Seafile? Schwächen gefunden? Die Meinungen im Netz zu Owncloud haben mich geschockt: Das Wichtigste, die Synchronisation, erfolgt nicht zuverlässig! Hab deshalb jetzt Seafile und Baikal gewählt. In meiner Umgebung habe ich Daten doppelt und dreifach gesichert. Wenn aber der Synchronisationvorgang, auf den man sich verlässt, nicht zuverlässig ist, ist ganz schnell auch die dritte Sicherungskopie hinfällig. Denn sowas merkt man oft erst, wenn es absolut zu spät ist.

Nochmals Danke und viele Grüße aus Dresden,
Frank

Tue, 10/06/2015 - 11:24pm

Hey Alex

Na dafür war das ja hier gedacht: um sich auszutauschen. Daher versuche ich natürlich, hier alle Kommentare zu beantworten. Komme nicht ganz so oft dazu, wie ich gern möchte, aber naja .. :-)

zu 1: Also ich habe in der Testphase keinen Unterschied zwischen Sqlite und MySQL festgestellt - das waren da allerdings nur wenige Daten - verglichen zu dem, was da jetzt drauf läuft.
Da ich aber sowieso eine MySQL-DB gebraucht habe, hatte ich mich von vorne herein dafür entschieden.
Ich denke mal, der Unterschied ist marginal, da bei Zugriff über das Internet sowieso die Bandbreite der Flaschenhals wäre .. zumindest wenn das Ding bei dir zu hause steht. Aber MySQL ist an sich schon als stabiler und performanter anzusehen.

zu 2: Also naja, wenn du dem Router nur erlaubst, Anfragen auf Port 443 auf deinen Server durchzulassen, ist das schon ziemlich sicher. Die Webserver machen da weniger Probleme, als schlecht programmierte Webseiten. Aber das liegt dann ja nicht unbedingt in deiner Hand. Also viel mehr kannst du dann fast nicht mehr machen .. es sei denn, du legst dann noch ein Passwort auf die Webseite / den Dienst.
Aber dann streiken dann auch viele Programme, die mit diesen Diensten reden sollen.

zu 3: Da gibt es zwei Sachen zu bedenken:
a) Das Passwort für die Bibliothek wird unverschlüsselt übertragen
b) du kannst mit Seafile per WebDAV ( noch ) nicht auf verschlüsselte Bibliotheken zugreifen - zumindest ist das mein letzter Stand. Das sollte man sich vorher überlegen.

Und ja .. WebDAV ist ein wenig fisselig einzurichten - ich hoffe, du schaffst es im 2ten Anlauf.

Gruß vom Bjoern

Tue, 10/06/2015 - 11:39pm

Hey Frank

Weiß nicht, warum, aber du bist irgendwie im Spam gelandet.

Ja, da nicht für .. Ich hab das unter anderem auch für mich aufgeschrieben, damit ich nie wieder suchen muss ;-)

Mit Owncloud bin ich leider irgendwann verzweifelt und ich hab es dann nach ewigem rumsuchen und rumprobieren irgendwann einfach sein lassen.

Zur Stabilität kann ich zu Beiden nur sagen: Top!!!

Seit das läuft, läuft es einfach und ich hatte nie Probleme damit. Der Datei-Upload vom Androiden hatte am Anfang ein paar mal gehakt, aber das hat sich mittlerweile auch erledigt.
Ansonsten synchronisieren sich meine Geräte bislang ohne jegliche Probleme .. und auch bei Seafile ist die Performance bei großen Bibliotheken einwandfrei.
Ich kann echt nichts negatives berichten.

Gruß zurück aus Berlin

vom Bjoern

Wed, 10/07/2015 - 9:14am

Zum Thema Stabilität/Datensicherheit:
Was macht eigentlich der Server wenn er das seafile-data Verzeichnis (bei mir auf externer HDD) nicht mehr findet? Also die HDD fällt aus, dann wäre es natürlich fatal wenn der Server so tut als wären die Bibliotheken gelöscht und die auf den Clients auch löscht. Weiß jemand was seafile dann macht?

Habt ihr eigentlich ein Server-Backup? Die Seafile Daten kann man ja nur mit der Fuse-extention lesen (habe ich noch nicht hinbekommen), daher ist es mit externer USB-Platte am Pi ja nicht wirklich getan. Momentan schau ich einfach, dass jede Bibltiothek einmal auf den Dekstop gesynct ist.

Wed, 10/07/2015 - 9:22am

Danke dir! Echt klasse!

zu 1) Ich hatte v.a. im Zusammenhang mit Owncloud gelesen, dass Sqlite zwar empfohlen wird, im Feldversuch aber stark hinter Mysql zurückbleibt. Da geht es wohl nicht nur um die Nutzer sondern auch um die Anzahl der Dateien. Die PIs zählen ja nicht mehr zu den schwächsten Systemen, daher ist Mysql wohl vorzuziehen. Bisher hab ich aber noch keinen Flaschenhals festgestellt.

zu 2) Wenn man nur per Client Syncen will und eine FritzBox hat, dann könnte man ja auch nur Seafile installieren und sich mit VPN ins Netz einloggen oder? Das sei ja angeblich sicherer. Was hältst du davon?
Natürlich fallen dann die Dateifreigabe-Möglichkeiten mit der Außenwelt weg. Wer aber nur Heimrechner + Familie synchron halten möchte für den wäre das doch denkbar?

WebDAV ist ja von Seafile seite leicht einzurichten. Man muss doch wirklich ausschließlich die conf/seafdav.conf bearbeiten und noch eine nginx sites-enabled erstellen (analog zu seahub). Hab mir schon überlegt, ob ich vielleicht einfach die Clients falsch synchronisiere oder ob Android die Zertifikate ohne Meldung einfach nicht akzeptiert.
Naja so wichtig ist WebDAV nicht, wäre eher noch das Sahnehäubchen gewesen ;-)

Wed, 10/07/2015 - 11:40am

Hallo, was ist mir den Einstellungen hier:
Additional security settings for nginx (optional)
Add the HSTS header. If you already visited the https version the next time your browser will visit directly the https site and not the http. Prevent man-in-the-middle-attacks.
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains";
Disable exact server version in header. Prevent scans for vulnerable server.
server_tokens off;

Die kommen von der offiziellen Seite:
http://manual.seafile.com/deploy/https_with_nginx.html

Sollte man die noch mit rein nehmen?
Danke für Dein How To.

Nils

Wed, 10/07/2015 - 12:21pm

Und in welche nginx config muss man das reinschreiben? ". Prevent scans for vulnerable server." klingt ja schon mal gut.

https sollte aber doch mit obiger config gar nicht möglich sein oder?

Wed, 10/07/2015 - 12:22pm

Kannst du vielleicht mal das ganze
nano /etc/nginx/sites-available/myCloud inclusive webdav posten?

In deinem Tut ist es ja gestückelt, häng ich es aneinander geht es nicht.

Wed, 10/07/2015 - 2:00pm

In die site-available/seafile oder wie Du die genannt hast. In dem Beispiel hier wäre das:
nano /etc/nginx/sites-available/myCloud

Bei mir habe ich die eingetragen, habe nur gemerkt das der Sync dann nicht mehr funktioniert bis man die Option "Das Server-Zertifikat bei der HTTP-Synchronisation nicht überprüfen" im Clienten auswählt, dann geht es wieder.

Nils

Wed, 10/07/2015 - 2:53pm

Nils ich glaube deine Beobachtung hat mit der "Additional Security" nichts mehr zu tun. Bei der Client Version 4.1.6 (glaube ich) war http sync nur fakultativ. Die neueren Clients nutzen nur noch http als Protokoll. Als ich geupdatet hatte ging es auch zunächst nicht mit den Clients bis ich den Haken gefunden hatte. Die "Additional Security" hatte ich nicht reingeschrieben.
Vielleicht hast du aber auch Recht und wir hatten 2 unterschiedliche Ursachen.
Falls ich die Begriffe etwas falsch verwende verzeiht mir bitte, bin nur ein eingelesener nicht-programmierer.

Fri, 10/09/2015 - 10:48am

Wenn Du die hier machst:
openssl genrsa -out privkey.pem 2048
openssl req -new -x509 -key privkey.pem -out cacert.pem -days 365

Und hinten bei days 365 einträgst hast du auch nen 1 Jahres Zertifikat. ;-)

Ich bin echt am überlegen, ob man sich echt nen "umsonst" Zertifikat besorgt.
Das mit dem einen Jahr ist halt so. Ablaufen tun die alle irgendwann.
Schöner wäre es trotzdem.

Fri, 10/09/2015 - 11:57am

Oh Mist,
Start SSL geht nur mit Toplevel Domain...
Wenn man nen Seafile unter nem dyndns laufen hat geht die Zertifizierung leider nicht.
Oder weiß jemand nen Weg, außer Toplevel Domain kaufen...

Fri, 10/09/2015 - 5:22pm

Hey Alex.

Na da ich Seafile ja nutze, um mehrere Rechner synchron zu halten, ist ein Backup für mich nicht wirklich nötig.
Und es würde ja reichen, wenn du die Dateien auf dem Desktop sicherst.

Oder - das hab ich aber noch nicht versucht, könnte es auch sein, dass du die komplette Festplatte mit rsync auf eine externe Festplatte sichern und zurückspielen kannst, wie hier beschrieben
http://my5cent.spdns.de/banana-pi/banana-pi-system-auf-der-sata-platte-s...
Ist wie gesagt nicht getestet, könnte aber funktionieren.
Wenns mal einer versucht, kann er hier gerne Feedback geben.

Gruß Bjoern

Fri, 10/09/2015 - 5:32pm

Hey Nils

Da nicht für. Wenn ich das richtig sehe, ist das nur für den Fall, dass du auch per http auf Seafile zugreifen kannst, was dann per rewrite auf https umgeleitet wird.

Spielt also keine Rolle, wenn man gleich per https zugreift und Zugriffe per http nicht erlaubt.

Gruß Bjoern

Fri, 10/09/2015 - 5:44pm

Also ich nutze den Client 4.3.4 und habe mit meinem selbsterstellten Zertifikat keine Probleme .. ich synce allerdings nicht über http ..
Er sagt mir zwar beim Einrichten, dass das Zertifikat nicht sicher sei, bietet mir aber an, es trotzdem zu nutzen.

Das klappt einwandfrei.

Sat, 10/10/2015 - 10:47pm

Schau mal bitte nach unter Einstellungen:
"Server zertifikat bei https Synchronisierung nicht überprüfen" ist bei dir angekreuzt oder nicht?

Was meinst du mit du syncst nicht über http? Ich dachte gelesen zu haben, dass die neuen Clienten nur noch http machen?

Mon, 10/12/2015 - 2:43pm

Hallo

Das Tutorial war eines von den Besten wenn nicht das Beste :)
Nun habe ich aber noch eine Frage welche Ports müsste ich freigeben um den Daten-Server auch von ausen zu erreichen?

Danke

Mon, 10/12/2015 - 10:08pm

Jau Hey

Ja, das scheint gerade ein wenig schwierig zu sein .. Laut allen aktuellen Aussagen braucht jetzt nur noch der Port 80 offen sein, da Seafile jetzt über httü synchronisiert.

"Traditionell" waren für die früheren Installationen von Seafile folgende Ports zu öffnen (wenn du nichts verändert hast)

component default port
ccnet 10001
seaf-server 12001
fileserver 8082
seahub 8000

Schau mal, was dir da hilft :-)

Gruß Bjoern

Sun, 02/28/2016 - 7:09pm

Hallo,
danke für die tolle Anleitung.
Ich habe ein Problem, und zwar bei Schritt 2 (Seafile mit Https hinter NginX einrichten) wenn ich versuche die "ccnet.conf" via Editor zu öffnen, öffnet sich nur eine leere Seite ohne Dateien.
Können Sie mir vieleicht sagen, wo mein Fehler sein könnte?
Hier ist der Inhalt von /home/seafile-user:
ccnet/ logs/ seafile-data/ seafile-server-latest@ seahub-data/
conf/ pids/ seafile-server-5.0.4/ seafile-server_stable_5.0.4_pi.tar.gz

und der Inhalt von /home/ seafile-user/ccnet:
ccnet.sock= misc/ mykey.peer seafile.ini

Mon, 03/28/2016 - 4:05pm

Hallo Farshid,

seit der Seafile-Version 5.0 hat sich die Verzeichnisstruktur geändert. Es gibt jetzt unter dem Seafile-User-Verzeichnis ein Verzeichnis "conf" in dem die "ccnet.conf" und auch die "seahub-settings.py" liegen. Allerdings findest du in der "seahub-settings.py" den Eintrag "FILE_SERVER_ROOT " auch nicht mehr. Um den Wert zu ändern, muss du dich auf dem Seafile-Server über das Web-GUI einlogen und kannst dann dort über die Administrator-Seite diese Einstellung vornehmen.
Bei mir hängt es allerdings mit dem "https:-Zugriff". Seit ich die entsprechenden config-Dateien geändert habe, komme ich nicht mehr auf den Server. Der "http-Zugriff" hatte vorher einwandfrei funktioniert. Falls jemand dazu was beisteuern kann, wäre ich sehr erfreut.
Gruß Frank

Tue, 08/02/2016 - 11:23pm

Hey Adam

Ich habe jetzt nicht so wirklich viele Infos .. also wenn du alles gemacht hast, wie oben beschrieben, dann ist das eigentlich richtig, dass du unter "https://meineUrl/" seafile erreichst. Die Adresse "https://meineUrl/meineCloud" wäre in diesem Fall die Adresse, unter der du via dem WebDAV-Protokoll auf deine Seafile-Cloud zugreifen kannst. Das ist dann nützich, wenn du zum Beispiel mit einem Datei-Manager auf die Dateien zugreifen möchtest, ohne das Komplette Ding zu synchronisieren ..

Also eigentlich alles gut :-)

Gruß Bjoern

Mon, 10/10/2016 - 3:17pm

hallo bjoern,
vielen dank für deine super anleitung.
seafile läuft auf anhieb und nach allem was ich schon probiert habe
ist es die mit abstand beste lösung.
frage: kann ich jetzt nach deiner anleitung 'baikal' installieren? oder
gibt es eine bestimmte reihenfolge zu beachten, wenn ich beide server
auf nginx gleichzeitig laufen lassen will?

lg aus wien
techcom

Mon, 10/10/2016 - 5:36pm

Servus nach Wien :-)

Ist kein Problem. Du kannst Baikal bedenkenlos daneben installieren.
Nur ist meine Anleitung ein wenig outdated .. Das Flat-Package gibt es nicht mehr und du solltest vorher schauen, welche PHP-Version du drauf hast. (auf der Konsole "php -v" eingeben.)
Das aktuelle Baikal braucht PHP 5.50 oder höher. Zusätzlich haben sich die URL für CalDAV und CardDAV geändert.
Also am besten mal auf der Baikal-Seite schauen.

Ansonsten ist die Installation und Einrichtung aber gleich geblieben.

Viel Erfolg!!

Gruß Bjoern

Add comment

Please insert your mail adress. Your mail address will not be displayed.