Owncloud läuft ziemlich träge auf einer Raspberry Pi. Die Alternative Seafile dagegen läuft sehr fix. Da es schon diverse Beschreibungen im Netz gibt wie man Seafile auf der Pi installiert werden im folgenden Artikel Links auf die Webseiten gelistet, die ich zum Installieren benutzt habe und dann kurz die Schritte beschrieben, die ich bei mir durchgeführt habe. Im wesentlichen ist es eine Kombination aus den verschiedenen Anleitungen. Meine Konfigurationsdateien für seafile und nginx stehen als Beispiele zum Download zur Verfügung sowie ein Startscript für /etc/init.d welches seafile nach der Aktivierung im Linux immer automatisch started und stoppt.

Kennzeichen des Seafileservers: Benutzt er foo.no-ip.org als externen dns Namen, nginx (kein apache), läuft auf dem sicheren https Port und bietet webdav Services an.

 

Installationsanweisungen zu Seafile

Raspberry Pi Forum: [Tutorial] Seafile als Dropbox und Owncloud Ersatz auf dem PI installieren

Jan Karres: Raspberry Pi: Owncloud-Alternative Seafile Server installieren

Jan Karres: Raspberry Pi: Seafile Server Upgrade

Draptik: Installing Seafile on Raspberry Pi

Seafile Server Manual

Hardware hacks: Raspberry Pi Install Seafile Cloud File Server

 

Meine Installationsschritte

1) Raspbian installieren

2) Als user pi ausführen:

sudo apt-get update apt-get upgrade
sudo apt-get install -y install python2.7 python-setuptools python-simplejson python-imaging sqlite3
sudo adduser seafile --disabled-password
sudo su seafile
cd
mkdir mycloud && cd mycloud
wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_3.1.7_pi.tar.gztar -xvzf seafile-server_*
mkdir installed
mv seafile-server_* installed
cd seafile-server-3.1.7
./setup-seafile.sh
Servername: foo
Domain: foo.no-ip.org

3) Anpassen von ein paar Konfigurationsdateien als Benutzer seafile (sudo su seafile) oder als Benutzer pi noch ein sudo vor nano schreiben.

nano /home/seafile/mycloud/ccnet/ccnet.conf
    SERVICE_URL=https://foo.no-ip.org:8001    

nano /home/seafile/mycloud/seahub_settings.py
HTTP_SERVER_ROOT='https://foo.no-ip.org:8001/seafhttp'

4) Anpassungen für Webdav als Benutzer seafile (sudo su seafile) oder als Benutzer pi noch ein sudo vor nano schreiben.

Siehe auch: Anleitung wie man den seafile webdav unter LInux mounten kann
Webdav ist dann unter https://foo.no-ip.org:8001/seafdav erreichbar.

nano /home/seafile/mycloud/conf/seafdav.conf:
[WEBDAV]
enabled = true
port = 8080
fastcgi = true
share_name = /seafdav

5) Starten von seafile

./seafile.sh start
./seahub.sh start-fastcgi

6) Installation von nginx als user pi

sudo apt-get install nginx
sudo nano /etc/nginx/nginx.conf
    worker_processes 1;
    worker_connections 128;
sudo mkdir /etc/nginx/ssl
cd /etc/nginx/ssl
sudo openssl genrsa -out seahub.key 2048
sudo openssl req -new -key seahub.key -out seahub.csr
sudo openssl x509 -req -days 3650 -in seahub.csr -signkey seahub.key -out seahub.crt

7) Anpassung von nginx Konfigurationsdateien

sudo nano /etc/nginx/sites-available/seahub
server {
    listen 8001; # <--------------------------------------- NGINX PORT
    ssl on; # <-------------------------------------------- SSL
    ssl_certificate /etc/nginx/ssl/seahub.crt; # <--------- SSL
    ssl_certificate_key /etc/nginx/ssl/seahub.key; # <----- SSL
    server_name foo.no-ip.org; # <----------------- CHANGE THIS
    error_page 497  https://$host:$server_port$request_uri;    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 /seafdav {
        fastcgi_pass    127.0.0.1:8080;
        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;
    }
    location /media {
        root /home/seafile/mycloud/seafile-server-latest/seahub; # <-- change: 2014-07-11
        # include /etc/nginx/mime.types; # <--- UNCOMMENT THIS IF CSS FILES AREN'T LOADED
    }
}

8) Starten von nginx

sudo ln -s /etc/nginx/sites-available/seahub /etc/nginx/sites-enabled/seahub
sudo /etc/init.d/nginx restart

 

Start- und stop von seafile als Linux service

Im seafile Manual wird beschrieben wie man seafile starten und stoppen kann. Durch Einträge in der crontab kann man ein automatisches Starten von Seafile bewirken. Beim Herunterfahren eines Servers wird aber seafile nicht ordnungsgemäß gestoppt und das kann zu Datenverlusten führen. Die richtige Linux gemäße Art ist Services zum Starten und Stoppen zu benutzen und auch beim Herunterfahren eines Systems alle Services kontrolliert zu beenden.Als Vorlage für das Script habe ich das in diesen Beitrag beschriebene Script genommen und ein wenig angepasst (u.A. kann der Status abgefragt werden).

Der folgende Befehl auf der Raspberry ausgeführt, installiert das Script und danach wird seafile immer sauber automatisch gestartet beim booten und gestoppt beim shutdown.

sudo wget http://www.linux-tips-and-tricks.de/de/downloads/seafileserviceinstall-sh/download -O seafileServiceInstall.sh -q && bash seafileServiceInstall.sh && update-rc.d seafile enable

Danach kann man seafile mit

service seafile start

bzw

service seafile stop

und

service seafile restart

sowie

service seafile status

kontrollieren. 

 

Sicherung eines Seafileservers im lokalen Netz vor unberechtigten Zugriffen

I.d.R möchte man den Seafile Server auch von unterwegs über das Internet zugreifbar machen. Der richtige Weg ist eigentlich eine DMZ einzurichten. Normale Router bieten diese Möglichkeit nicht. Aber trotzdem sollte man den lokalen Seafile Server soweit wie möglich abschotten zum lokalen Netzwerk. Zuerst sind die seafile Ports im lokalen Router an die Pi weiterzurouten. Dann kann man mit einer iptables Konfiguration für Seafile die sich hier befindet, vor Zugriffen aus dem Internet und Zugriffen ins lokale Netz absichern.

 

Weitere nützliche Informationen zu Seafile

Deutsches Seafile Forum

Seafile FAQ zu Security Features

Forumsbeitrag zu Webdav und Seafile

Seafile Server Manual: Webdav extensions

Optimizing NGINX and PHP-fpm for high traffic sites

High performance webserver with nginx and php-fpm

Seafile Server Manual: Sending email notifications on seafile

Seafile3 mit nginx und mysql backend

 

Meine Seafile Konfigurationsdateien

Das zip file enthält folgende Dateien:

1) nginx.conf und seahub

2) ccnet.conf, seafdav.conf, seahub.conf und seahub_settings.py

Kommentar schreiben

Spam Kommentare sind sinnlos !
Vor der Publizierung wird jeder Beitrag auf Spam geprüft. Leider dauert es deswegen bis ein Kommentar sichtbar wird. Dafür erhält aber kein Subscriber Spam eMails.
Die eMail ist optional und nicht öffentlich sichtbar. Sie ist notwendig um eMail Benachrichtigungen zu Antworten auf Kommentare zu erhalten. Sie wird auch u.U. auch vom Seitenbetreiber genutzt um offline Kontakt aufzunehmen.

Spam comments are useless !
Any comment will be reviewed first and checked for spam. Unfortunately this delays the publishing of comments but will protect subscribers from spam.
eMail is optional and hidden and is required to get update notifications for any comments. In addition your eMail may be used by the website owner to get in contact with you offline.