Seafile auf einem Raspberry Pi installieren

Die Open-Source-Software Seafile kann man eine Dropbox Alternative auf einem eigenen Server einrichten. Der Zugriff auf die Daten kann dann über eine Weboberfläche oder über einen Client für Linux, Windows, Mac OS X, Android und iOS eingerichtet werden. Ich möchte damit langfristig einen Teil meiner Daten aus der Dropbox heraus hohlen und auf meinem eigenen Server zur Synchronisation bereitstellen.

Es gibt zwar schon viele Beschreibung von Seafile auf Raspberry Pi. Für mich selber hier meine Dokumentation meiner Installation

Die Installation lässt sich in folgende Abschnitte einteilen

  1. Installation und Konfiguration von Seafile
  2. Installation und Konfiguration von nginx
  3. Autostart einrichten

#1. Installation und Konfiguration von Seafile

Die meisten Informationen sind von hier

Zuerst die Voraussetzungen installieren, einen eigenen User einrichten, die Software downloaden und auspacken

sudo apt-get -y install python2.7 python-setuptools python-simplejson python-imaging
sudo adduser seedaten --disabled-password	
cd /var
mkdir seedaten
chown seedaten:seedaten seedaten
sudo su seedaten
cd /var/seedaten/
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.0.2_pi.tar.gz
tar xzf seafile-server_3.0.2_pi.tar.gz 
cd seafile-server-3.0.2/

Dann die Installation starten. Ich habe im wesentlichen nur die Vorgabewerte übernommen.

./setup-seafile-mysql.sh 

Am Ende kommt ein

-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------

run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start <port> | stop | restart <port> }

-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------

port of ccnet server:         10001
port of seafile server:       12001
port of seafile httpserver:   8082
port of seahub:               8000	

Dann die eigentliche Prozesse starten. Beim ersten Start von Seahub wird auch der Administrator eingerichtet

./seafile.sh start

Starting seafile server, please wait ...
Seafile server started
Done.
./seahub.sh start 8000
Starting seahub at port 8000 ...

----------------------------------------
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 ] admin@caserio.de

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 /var/seedaten/ccnet
Loading seafile config from /var/seedaten/seafile-data

Seahub is started
Done.

#2. Installation und Konfiguration von nginx

Zuerst die Installation des Webservers und dann habe ich die Zertifikate und Schlüssel erzeugt. Da ich bis auf weiteres die Anwender noch selber verwalte reicht ein eigenes Zertifikat.

apt-get install nginx
cd /etc/ssl
openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout seeblick.key -out seeblick.crt

Kleinere Änderungen in der nginx Konfiguration

vi /etc/nginx/nginx.conf
   worker_processes 1
   server_tokens off;

Und hier die Konfiguration des Webservers selbst. Der HTTP verkehr wird auf HTTPS umgeleitet

vi /etc/nginx/conf.d/default
   server {
   listen 80;
   server_name se.hagen-bauer.de;
   rewrite ^ https://$server_name$request_uri? permanent; # enforce https
   }
   server {
   listen 443;
   server_name seafile.hagen-bauer.de;
   index index.html index.htm;
   ssl on;
   server_name seafile.hagen-bauer.de;
   ssl_certificate /etc/ssl//seeblick.crt;
   ssl_certificate_key /etc/ssl//seeblick.key;
   root /var/www;
   ssl_session_timeout 5m;
   ssl_protocols SSLv3 TLSv1;
   ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP;
   ssl_prefer_server_ciphers on;
   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   REMOTE_ADDR         $remote_addr;
   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  /var/seedaten/seafile-server-latest/seahub/;
   }

Dann müssen noch an zwei weiteren Stellen die Urls auf das richtige Protokoll einstellt werden

vi /var/seedaten/ccnet/ccnet.conf 
   SERVICE_URL = https://seafile.hagen-bauer.de
vi /var/seedaten/seahub_settings.py
   HTTP_SERVER_ROOT = 'https://seafile.hagen-bauer.de/seafhttp'

#3. Autostart einrichten

Einfach das Script und die Anleitung von hier übernehmen und den oben erzeugen Benutzer und das verzeichniss ändern

user=seedaten
seafile_dir=/var/seedaten
fastcgi=true

Das Script noch ausführbar machen und in den Systemboot aufnehmen

chmod +x /etc/init.d/seafile-server 
update-rc.d seafile-server defaults