Banana Pi – Seafile with Https, NginX and MySQL

Again, the precondition is a LEMP installation as described in this article: Installation of Nginx, MySQL and PHP
Seafile has a its own little web server, but it can not handle the HTTPS protocol. So, to get an encrypted transmission to the cloud, you have to run Seafile behind a „real“ web server – in this case, nginx.

The installation is done in 4 steps:

  1. Seafile basic installation
  2. Setup Seafile with Https behind NginX
  3. Aktivate WebDAV
  4. Start Seafile at boot

But first create a certificate for the encryption, if that isn’t done already!
For that create the folder /etc/ssl/nginx, change to that folder and create a self-signed certificate with:

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

Step 1: Seafile basic installation
Seafile braucht Phython, daher werden jetzt die Notwendigen Pakete installiert.
Seafile needs Phython, so install the necessary packages.

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

To run Seafile with NginX additionally install

apt-get install python-flup

To prevent Seafile running with root-privileges, the service gets its own user, such as the web server (www-data) or MySQL.
This is done with the command

adduser SEAFILE-USER --disabled-login 

The name SEAFILE-USER is freely selectable. By the –disabled-login option, the user gets no password and can not log in from outside the system. It is an internal system user.

After these preparations we can now begin to install Seafile. On the Seafile page is recommended that you install Seafile in the resulting folder under /home/. A different installation directory, such as /opt/seafile/ or /var/seafile/ is equally possible.
I assume that Seafile is to be installed in the folder /home/SEAFILE-USER.
So change to the directory with

cd /home/SEAFILE-USER

Now you should become SEAFILE-USER with

su - SEAFILE-USER

Now download the package for the Raspberry Pi from the Seafile-Server with

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

Extract the downloaded file with

tar -zxvf seafile-server_VERSION_pi.tar.gz

To start the basic installation of Seafile, change to the Seafile-directory and start the setup script for MySQL with

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

Here, among other things, the database setup is done and the ports of the servers are defined. If possible, simply use the the default ports.

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.

Now the basic installation is done. OK – almost ..

Start the server once with

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

At the first start an administrator account is created. For this purpose, enter in the following queries your email address and set a password.

----------------------------------------
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.

Thats important, because seafile won’t start automatically later without that.

Step 2: Setup Seafile with Https behind NginX

For that first 2 files need to be adjusted

1. ccnet.conf
Adjust the parameter „SERVICE_URL“ in the file ccnet/ccnet.conf:

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

2. seahub_settings.py
Adjust the parameter „FILE_SERVER_ROOT“ in the file seahub_settings.py:

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

Now, a new virtual host for the cloud is generated for nginx. For this, create a new file in the folder /etc/nginx/sites-available, eg 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;
   }
}

Here the server_name, the paths to the SSL-certificates and the path to location /media need to be adapted to your specific installation.
Activate this configuration with a symbilic link in the folder /etc/nginx/sites-enabled

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

Step 3: Activate WebDAV

By default, the WebDAV interface is disabled in Seafile. But in order to mount the files of the cloud on a local computer or tablet without synchronizing the files, you need the activated WebDAV interface.

To activate it, you have to make changes in the /home/SEAFILE-USER/conf/seafdav.conf file.

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

[WEBDAV]

# set this value to true
enabled = true

# The port is freely selectable, so choose any unused port
port = 9999

# Because Seafile is running behind NginX, fastcgi must be set to true
fastcgi = true

# Choose the Name for the cloud-folder
share_name = /myCloud

Add the following part to the NginX config-file for your cloud.
Be aware to set the fastcgi_pass to the port and the location to the share_name you selected in seafdav.conf

nano /etc/nginx/sites-available/myCloud 

location /myCloud {
  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;
}

Now you can access your files via WebDav under the address www.yourdomain.com/mycloud.

Step 4: Start Seafile during boot

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.

For this create a new file in the folder /etc/init.d/, eg seafile.
There, insert the following content and adjust the parameters „user“ and „seafile_dir“ to your installation.

#!/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

Restart NginX with

/etc/init.d/nginx restart

and restart Seafile with

/etc/init.d/meineCloud restart

For starting Seafile at boot now, you can add the following line to the file /etc/rc.local

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

Be aware to insert the line in front of the „exit 0“

And that’it.

55 Gedanken zu “Banana Pi – Seafile with Https, NginX and MySQL

  1. 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?

    • 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

      • 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-

  2. 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

    • 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

  3. 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

    • 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

  4. 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

    • Naja, den Dienst „cloud“ gibt es nicht ..
      Also musst du nicht cloud neu starten musst, sondern entweder Seafile oder NginX .. am besten Beides ..

      Dann sollte es keine Probleme mehr geben ..

      Gruß Bjoern

  5. 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.

    • 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

      chmod u+x /etc/init.d/cloud 
      

      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

  6. 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!

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

  8. 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.

    • 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

  9. 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

    • 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.

  10. 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.

    • Hallo Benedikt

      Sorry – natürlich muss es

      /etc/init.d/meineCloud start 

      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

  11. 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-server-installieren/

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

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

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

    WebDAV werde ich auch noch aktiviert bekommen 😉

    • 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

    • 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.

      • 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

        • 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.

  12. 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

    • 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

      • 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 😉

  13. 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. 😀 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

    • 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

      • 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.

  14. 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

    • 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?

      • 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

        • 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.

      • 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.

        • 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.

          • 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?

          • Ist definitiv nicht angehakt …

            Und die Clients machen, was der Server sagt .. wenn der sich über andere Kanäle unterhalten möchte, machen die Clients das offenbar noch mit.

    • 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

  15. 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

    • 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

  16. 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

  17. 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

  18. Hallo,
    ich habe alles genauso gemacht wie du – Schritt für Schritt.
    Seafile funktioniert zwar, aber nicht wie gewüscht auf „https://meineUrl/meineCloud“ sondern nur auf „https://meineUrl/“. Könntest du mir helfen?

    • 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

  19. 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

    • 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

  20. Souvent on découvre malheureusement le bricolage en plomberie par une fuite, un problème d’évacuation bouchée ou un mécanisme de chasse défectueux… Ce sont en généralement des interventions urgentes ce qui donnent envie, si on n’est pas du tout bricoleuse ou bricoleur, avec un peu d’outillage et de pièces détachées, de faire appel à une société de dépannage ou un artisan. Comme nous vous le rappelons dans le forum Litiges Travaux il est impératif de faire réaliser un devis écrit mentionnant le prix de l’intégralité de l’intervention avant que l’entreprise ne réalise la réparation ou les travaux nécessaires. Même si vous vous trouvez en situation d’urgence, prenez quand même le temps de demander plusieurs devis. C’est pour cela que fait appel à
    urgence plombier paris 8

Schreibe einen Kommentar