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.
Update Februar 2023:
Mittlerweile gibt es die Seafile Version 9. Diese laesst sich ganz einfach als Docker Image installieren (Siehe hier). Allerdings benötigt man dazu eine 64 Bit fähige Raspberry. Alternativ kann man auch dieser Anleitung folgen. Sie ist nicht ganz korrekt und man muss kreativ sein beim Anlegen der Nutzer in der MariaDB.
Installationsanweisungen zu Seafile
Raspberry Pi Forum: [Tutorial] Seafile als Dropbox und Owncloud Ersatz auf dem PI installieren
Jan Karres: Raspberry Pi: Seafile Server Upgrade
Draptik: Installing Seafile on Raspberry Pi
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:80
nano /home/seafile/mycloud/seahub_settings.py
HTTP_SERVER_ROOT='https://foo.no-ip.org:80/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:80/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 80; # <----------------------------------------- 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 https://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
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

