Praxis-Workshop

Mit Seafile eine Private Cloud installieren

16.07.2015 von Jürgen Donauer
Seafile ist eine Alternative zur populären ownCloud für die Konfiguration einer Private Cloud. Lesen Sie, wie sich Seafile unter Ubuntu installieren und verwenden lässt.

In Sachen Private Cloud ist die ownCloud derzeit sehr populär. Selbst das BSI hat vor kurzer Zeit ein Dokument zur Verfügung gestellt, das sich mit dem sicheren Betrieb einer ownCloud beschäftigt. Eine Alternative zur ownCloud ist seafile. Ursprünglich wurde die Private Cloud von chinesischen Programmierern entwickelt. Mittlerweile ist die Software komplett Open Source. Seafile setzt auf Python und nicht auf PHP. Weiterhin bringt Seafile eigene Daemons mit sich und Benchmarks haben gezeigt, dass Seafile vor allen Dingen bei vielen kleinen Dateien deutlich schneller als ownCloud ist.

Die Server-Komponente von Seafile können Sie für Linux, Raspberry Pi und Windows herunterladen. In diesem Artikel zeigen wir Ihnen, wie Sie Seafile unter Ubuntu 14.04 LTS installieren und konfigurieren. Ubuntu 14.04 ist eine Server-Version mit Langzeitunterstützung. Sie bekommen dafür Updates bis 2019.

Bildergalerie:
Seafile installieren mit Ubuntu Server 14.04 LTS
Das Skript nimmt Ihnen im Grunde genommen die ganze Konfigurations-Arbeit ab.
Seafile installieren mit Ubuntu Server 14.04 LTS
Den Server konfigurieren Sie mit dem gleichen Skript.
Seafile installieren mit Ubuntu Server 14.04 LTS
Installieren Sie Seafile zum ersten Mal, lassen Sie neue Datenbanken erstellen.
Seafile installieren mit Ubuntu Server 14.04 LTS
Sind Sie fertig, bekommen Sie eine Übersicht präsentiert.
Seafile installieren mit Ubuntu Server 14.04 LTS
Das Skript führt alle notwendigen Schritte für Sie aus.
Seafile installieren mit Ubuntu Server 14.04 LTS
Sie müssen für unsere Konfiguration die Datei seahub_settings-py anpassen.
Seafile installieren mit Ubuntu Server 14.04 LTS
Starten Sie die Private Cloud das erste Mal, dann legen Sie das Administrator-Konto fest.
Seafile installieren mit Ubuntu Server 14.04 LTS
Ab sofort können Sie Seafile bereits verwenden, allerdings über eine unverschlüsselte Verbindung.
Seafile installieren mit Ubuntu Server 14.04 LTS
So sieht unsere Datei default-ssl.conf nun aus.
Seafile installieren mit Ubuntu Server 14.04 LTS
Mit kleinen Modifikationen ist die Verbindung zum Seafile Server nun verschlüsselt.
Seafile installieren mit Ubuntu Server 14.04 LTS
Durch einen Klick auf den orangen Schraubenschlüssel rechts oben kommen Sie zur Systemverwaltung.
Seafile installieren mit Ubuntu Server 14.04 LTS
Hier legen Sie fest, wie viel Storage dem einzelnen Anwender zur Verfügung stehen.
Seafile installieren mit Ubuntu Server 14.04 LTS
Sollen weitere Nutzer Administratoren sein, legen Sie das hier fest.
Seafile installieren mit Ubuntu Server 14.04 LTS
Wenn Sie eine Bibliothek verschlüsseln, dann sollten Sie das Passwort nicht vergessen.
Seafile installieren mit Ubuntu Server 14.04 LTS
So greifen Sie auf frühere Versionen der jeweiligen Datei zu.
Seafile installieren mit Ubuntu Server 14.04 LTS
Der Client läuft unter Linux und Sie können recht unkompliziert eine Bibliothek synchronisieren.
Seafile installieren mit Ubuntu Server 14.04 LTS
Bei selbst unterzeichneten Zertifikaten müssen Sie diese zunächst genehmigen.
Seafile installieren mit Ubuntu Server 14.04 LTS
Die Bibliotheken werden zunächst nicht synchronisiert.
Seafile installieren mit Ubuntu Server 14.04 LTS
Sollte der Platz auf dem mobilen Gerät knapp werden, können Sie den Zwischenspeicher löschen.

Ubuntu Server 14.04 installieren und einrichten

Ubuntu 14.04 Server installieren und konfigurieren Sie für Seafile im Prinzip genau wie für die ownCloud. Wir verwenden in diesem Artikel ebenfalls Apache Webserver und MySQL für Seafile.

Eigentlich bringt Seafile einen eigenen Webserver mit sich und Sie bräuchten Apache oder NGINX nicht. Allerdings können Sie in diesem Fall keine verschlüsselten Verbindungen benutzen. Eine Verbindung via https ist nur mittels Apache oder NGINX und einem entsprechendem Zertifikat möglich.

Sie könnten Seafile auch mittels SQLite anstatt MySQL betreiben. Die Entwickler raten dazu aber nur, wenn Sie ein bisschen mit der Software experimentieren möchten. Für größere und produktive Umgebungen sollten Sie MySQL einsetzen.

Haben Sie Sie den Webserver entsprechend vorbereitet, legen Sie am besten einen separaten Anwender für Seafile an. Das ist kein Muss, wird allerdings empfohlen. Wir haben ihn seafile genannt:

sudo adduser seafile

Melden Sie sich im Anschluss mit diesem Anwender am System an.

Hinweis: Wir springen häufig zwischen den Anwendern root und seafile. Stellen Sie sicher, immer den richtigen Anwender zu verwenden. Es könnte sonst zu Fehlern kommen.

Seafile herunterladen und auspacken

Da unser Ubuntu Server headless läuft, müssen wir Seafile über die Konsole herunterladen. Wir haben die Version 4.2.3 64-Bit verwendet und Seafile mithilfe dieses Befehls auf der Kommandozeile heruntergeladen:

wget -c https://bintray.com/artifact/download/seafile-org/seafile/seafile-server_4.2.3_x86-64.tar.gz

Bevor wir das Archiv auspacken, widmen wir uns der Verzeichnisstruktur. Die Entwickler empfehlen, ein eigenes Verzeichnis anzulegen. Wir legen dafür den Ordner tecchannel an, verschieben das Archiv dorthin und packen es aus:

mkdir tecchannel

mv seafile-server_4.2.3_x86-64.tar.gz tecchannel

cd tecchannel

tar xzvf seafile-server_4.2.3_x86-64.tar.gz

Diese Verzeichnisstruktur dient der Übersichtlichkeit. Nun können Sie alle Konfigurations-Dateien im Ordner tecchannel ablegen.

MySQL und Seafile

Wir wollen MySQL für Seafile verwenden. Die drei Komponenten ccnet, seafile und seahub benötigen jeweils eine eigene Datenbank.

Am einfachsten ist es, das von Seafile zur Verfügung gestellte Skript zu verwenden. Es nennt sich setup-seafile-mysql.sh und Sie finden es im Ordner, der durch das Auspacken entstanden ist. Rufen Sie das Skript auf, verlangt es das administrative Passwort für MySQL. In unserem Fall hat das Skript darauf hingewiesen, dass die Pakete python-imaging und python-mysqldb fehlen. Deswegen haben wir diese und noch einige weitere empfohlene zunächst als root installiert:

apt-get install python-setuptools python-simplejson python-imaging python-mysqldb python-flup libapache2-mod-fastcgi

Als Anwender seafile haben wir dann das Skript augeführt:

./setup-seafile-mysql.sh

Das Skript richtet nicht nur die Datenbank ein, sondern auch den Server an sich. Deswegen folgen Sie einfach den Anweisungen. Installieren Sie Seafile auf einer neuen Server-Instanz, dann können Sie die Port-Nummern auf den vorgeschlagenen Standards belassen. Wir wählen aus, neue Datenbanken einzurichten.

Konfiguration: Sind Sie fertig, bekommen Sie eine Übersicht präsentiert.
Foto: Jürgen Donauer

Bei der Datenbank können Sie sich entscheiden, ob Sie einen speziellen Anwender oder eben root verwenden wollen. Aus Bequemlichkeit haben wir keinen zusätzlichen Datenbank-Anwender angelegt und den Standard root verwendet.

Ist der Server eingerichtet, können wir uns dem Webserver widmen. Zuvor erhöhen wir aber das Limit der offenen Dateien, da Seafile eine ständige Verbindung zwischen Client und Server aufbaut.

ulimit -n 30000

Apache Webserver für Seafile einrichten

Weiter oben haben wir bereits die benötigten Pakete python-flup und libapache2-mod-fastcgi installiert. Nun müssen wir diverse Module aktivieren. Erledigen Sie das als root.

a2enmod rewrite

a2enmod fastcgi

a2enmod proxy_http

Möglicherweise sind einige Module bereits aktiviert. Haben Sie die obigen Befehle ausgeführt, starten Sie Apache 2 neu:

service apache2 restart

Nun editieren Sie die Datei /etc/apache2/apache2.conf und fügen am Ende der Datei diese Zeile ein:

FastCGIExternalServer /var/www/seahub.fcgi -host 127.0.0.1:8000

Im Anschluss editieren Sie die Datei /etc/apache2/sites-enabled/000-default.conf. In unserem Fall ist dieser Inhalt notwendig:

<VirtualHost *:80>

ServerName 192.168.100.80

DocumentRoot /var/www

Alias /media/home/seafile/tecchannel/seafile-server-latest/seahub/media

RewriteEngine On

<Location /media>

Require all granted

</Location>

#

# seafile fileserver

#

ProxyPass /seafhttp http://127.0.0.1:8082

ProxyPassReverse /seafhttp http://127.0.0.1:8082

RewriteRule ^/seafhttp - [QSA,L]

#

# seahub

#

RewriteRule ^/(media.*)$ /$1 [QSA,L,PT]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ /seahub.fcgi$1 [QSA,L,E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

</VirtualHost>

Sollten Sie bei ServerName eine Domäne angeben, müssen Sie auch die Datei ccnet.conf im Ordner ccnet ändern. Würden wir an dieser Stelle als ServerName zum Beispiel seafile.tecchannel.de verwenden, müssten wir in der Datei ccnet.conf den Parameter SERVICE_URL anpassen. In unserem Fall müsste er dann so lauten:

SERVICE_URL = http://seafile.tecchannel.de

An dieser Stelle modifizieren Sie die Datei seahub_settings.py, die wir in unserem Fall im erstellten Verzeichnis tecchannel finden. Wir fügen für unseren Fall ein:

FILE_SERVER_ROOT = 'http://192.168.100.80/seafhttp'

Modifikation: Sie müssen für unsere Konfiguration die Datei seahub_settings-py anpassen.
Foto: Jürgen Donauer

Sollten Sie eine andere Domäne verwenden, wäre das auch hier entsprechend anzupassen.

Starten Sie nun Apache zur Sicherheit noch einmal durch (als root) und im Anschluss Seafile (als Anwender seafile). Sie finden die Skript im Unterordner seafile-server-latest.

sudo service apache2 restart

./seafile.sh start

./seahub.sh start-fastcgi

Beim ersten Start von seahub.sh werden Sie aufgefordert, ein Administrator-Konto einzurichten. Damit können Sie sich später am WebGUI anmelden und weitere Anwender hinzufügen.

Nun ist Seafile eingerichtet und Sie können sich via Browser am WebGUI anmelden. In unserem Fall ist das die interne URL http://192.168.100.80. Als Login verwenden Sie die E-Mail-Adresse und das Passwort, das Sie gerade eben hinterlegt haben.

HTTPS und Seafile

Wollen Sie Seafile verschlüsselt via https ansprechen, sind einige Modifikationen notwendig. Das notwendige Zertifikat haben wir bereits während der Installation des Ubuntu-Servers erzeugt.

Am einfachsten ist es, wenn Sie die Datei /etc/apache2/sites-enabled/default-ssl.conf anpassen, in der auf das Zertifikat verwiesen wird. Im Endeffekt können Sie die Konfiguration von weiter oben kopieren, die zwischen <VirtualHost _default_:80> und </VirtualHost> steht. Kopieren Sie den Inhalt in die Datei default-ssl.conf zwischen die Zeilen <VirtualHost _default_:443> und </VirtualHost>. Dann fügen Sie noch diese Zeilen ein, zum Beispiel nach Alias:

SSLEngine on

SSLCertificateFile /etc/apache2/ssl/apache.crt

SSLCertificateKeyFile /etc/apache2/ssl/apache.key

Starten Sie den Apache Server als root abermals neu:

service apache2 restart

und stoppen Sie als Anwender seafile den Seafile Server:

./seahub.sh stop

./seafile.sh stop

Editieren Sie die oben bereits angesprochenen Dateien ccnet.conf und seahub_settings.py und ändern Sie das http jeweils in https. Nun können Sie Seafile wieder starten:

./seafile.sh start

./seahub.sh start-fastcgi

Nun erreichen wir unseren Seafile Server im Browser via https://192.168.100.80.

An dieser Stelle haben wir unseren Seafile Server so konfiguriert, wie das geplant war. Wir verwenden MySQL als Datenbank und eine verschlüsselte Verbindung via Apache.

WebGUI und Administrator

Sie können Seafile als Administrator genauso benutzen, wie jeder andere Anwender. Doch aus Gründen der Security sollten Sie den Admin nur zum Administrieren verwenden und einen normalen Benutzer für die Verwendung der Private Cloud anlegen. Zur Systemverwaltung gelangen Sie über den orangen Schraubenschlüssel rechts oben.

Zugang: Durch einen Klick auf den orangen Schraubenschlüssel rechts oben kommen Sie zur Systemverwaltung.
Foto: Jürgen Donauer

Hier können Sie nun Anwender hinzufügen, Gruppen konfigurieren und so weiter. Eine der wichtigsten Funktionen bei der Cloud sind wohl das Setzen von Quotas. Storage ist nicht unendlich und Sie wollen jedem Anwender nur ein bestimmtes Limit erlauben. Legen Sie einen neuen Anwender an und klicken dann auf diesen, finden Sie links unten die Option Quota sezten.

Quotas setzen

Nun kann es mühsam sein, jedem einzelnen Anwender ein Quota zu verpassen. Vielleicht möchten Sie dafür einen Standard-Wert benutzen. Das ist möglich und sie konfigurieren das über die Datei seafile.conf im Verzeichnis seafile-data.

Hier würden Sie eine Sektion einfügen, die wie folgt formatiert ist.

[quota]

# Standard Speicherplatz des Users, nur in "integer"

default = 5

Somit hätte nun jeder Anwender fünf GByte Storage zur Verfügung. Das gilt auch für bereits angelegte Nutzer. Sollte jemand mehr Platz benötigen, können Sie das via WebGUI überschreiben. Sobald Sie Änderungen in der Konfigurations-Datei vornehmen, müssen Sie Seafile neu starten.

Tipp: In der Datei seafile.conf legen Sie unter anderem auch fest, wie lange der Verlauf von Dateien bei Änderungen gespeichert werden soll. Ebenso verändern Sie hier die maximale Upload- und Download-Größen. Es lohnt sich, im Handbuch das Kapitel über die Datei durchzulesen. Sie können diese Einstellungen nicht im WebGUI vornehmen.

Admin: Sollen weitere Nutzer Administratoren sein, legen Sie das hier fest.
Foto: Jürgen Donauer

Weitere Administratoren

Möchten Sie weiteren Anwendern Adminstrator-Rechte geben, dann klicken Sie in der Systemverwaltung auf Administratoren. Oben rechts finden Sie die Schaltfläche Admin hinzufügen.

Seafile Server automatisch bei Systemstart ausführen

Wollen wir bei unserer Ubuntu-Installation Seafile automatisch starten, dann legen wir die Datei seafile-server im Verzeichnis /etc/init.d an. Dort kopieren Sie das Skript hinein, das Sie im Handbuch finden. Allerdings müssen wir für unsere Installation noch ein paar Parameter anpassen. Die für unser Szenario geänderten Parameter sind wie folgt:

seafile_dir=/home/seafile/tecchannel

fastcgi=true

Erstellen Sie außerdem die Datei seafile-server.conf im Verzeichnis /etc/init/. Dort kopieren Sie die Zeilen für die Verwendung mit MySQL hinein:

start on (started mysql

and runlevel [2345])

stop on (runlevel [016])

pre-start script

/etc/init.d/seafile-server start

end script

post-stop script

/etc/init.d/seafile-server stop

end script

Zum Schluss machen Sie die Datei seafile-server noch ausführbar.

sudo chmod +x /etc/init.d/seafile-server

Starten Sie nun den Server neu, sollte auch Seafile automatisch laufen.

Neue Bibliotheken anlegen

Mit Bibliotheken können Sie später Ihren Rechner synchronisieren. Dabei dürfen Sie so viele anlegen, wie Sie möchten und können sich später entscheiden, ob Sie sich mit einer oder mehreren Bibliotheken abgleichen möchten.

Legen Sie eine neue Bibliothek an, können Sie diese verschlüsseln. Stellen Sie aber sicher, das Passwort nicht zu vergessen. Sollte das der Fall sein, sind die Daten in dieser Bibliothek verloren. Ein Master-Kennwort gibt es nicht.

Sie können verschlüsselte und unverschlüsselte Bibliotheken mit anderen Anwendern teilen. Was bei verschlüsselten Bibliotheken nicht funktioniert, dass Sie innerhalb dieser Bibliothek einzelne Dateien freigeben können. Bei unverschlüsselten Bibliotheken ist das möglich.

Versionierung

Seafile ist mit einem Verlauf oder sogenannter Versionierung ausgestattet. Wird eine Datei geändert, erstellt das System eine neue Version davon. Sollte es notwendig sein, können Sie auf eine frühere Version der Datei zugreifen. Melden Sie sich dafür via Browser an und klicken bei der relevanten Datei auf den Pfeil nach unten. Dann erscheint ein Menü und der unterste Punkt nennt sich Verlauf.

Synchronsiations-Clients

Auch wenn Sie Seafile komplett via Webbrowser verwenden könnten, ist eine Synchronisation mit dem eigenen Computer doch sehr angenehm. Somit erstellen Sie auch gleichzeitig eine Sicherung Ihrer Dateien.

Den Seafile-Client gibt es für Linux, Windows und Mac OS X. Die Installation ist einfach und Sie können schnell eine oder mehrere zu synchronisierende Bibliotheken hinzufügen. Verwenden Sie ein selbst signiertes Zertifikat, müssen Sie beim Einrichten einer Verbindung zustimmen, dass Sie dieser vertrauen.

Verbinden Sie sich mit dem Server, sehen Sie alle vorhandenen Bibliotheken. Diese werden zunächst nicht synchronisiert. Sie können mithilfe eines Rechtsklicks die entsprechende Bibliothek für eine Synchronisation auswählen und dann jeweils einen lokalen Ordner zuweisen.

Unterwegs: Sollte der Platz auf dem mobilen Gerät knapp werden, können Sie den Zwischenspeicher löschen.
Foto: Jürgen Donauer

Sie müssen allerdings nicht synchronisieren, sondern können den Client auch verwenden, um Dateien lokal herunterzuladen oder entsprechend darüber hochladen. Wie Sie an dieser Stelle die Private Cloud handhaben, bleibt Ihnen überlassen.

Weiterhin stellen die Entwickler einen mobilen Client für Android und iOS zur Verfügung. Sie können diesen mit einer Sperre schützen und einen Sofort-Upload für die Kamera aktivieren. Eine sehr nette Funktion beim mobilen Seafile-Client ist die Möglichkeit, den Zwischenspeicher löschen zu können. Damit bleiben die Daten in Ihrer Private Cloud erhalten, aber auf dem Telefon werden die zwischengepeicherten Dateien entfernt. Das ist sinnvoll, wenn auf dem Smartphone oder Tablet der Platz knapp wird.

Handbuch

Das Handbuch von Seafile ist auch auf Deutsch verfügbar und man muss es gesondert herausstellen. Die Dokumentation ist vorbildlich. Jeder Aspekt der Software wird darin verständlich und übersichtlich behandelt. Installieren Sie Seafile, sollten Sie den Link zum Handbuch auch gleich als Lesezeichen hinzufügen.

Fazit

Seafile bietet nicht so viele Modul wie ownCloud. Es sind keine Kalender oder Kontakte via CalDAV oder CardDAV vorhanden. Dafür ist Seafile unglaublich schnell und wirkt sehr robust. Sind Sie lediglich an Synchronisation und gemeinsamen Nutzen von Dateien in einer Private Cloud interessiert, dann sollten Sie Seafile unbedingt evaluieren.

Die Administration von Seafile lässt sich nicht komplett über das WebGUI erledigen. Bei bestimmten Aktionen müssen Sie auf die Kommandozeile. Manche wird das abschrecken, Linux-Administratoren sind so etwas gewohnt. Diese Trennung ist auch gar nicht so schlecht. Selbst wenn Sie Anwender zu Administratoren befördern, können diese noch lange nicht den Verlauf, Standard-Quota und so weiter ändern.

Wie bei den meisten Programmen in so einer Größenordnung, müssen Sie sich damit beschäftigen und einfach bestimmte Konfigurationen ausprobieren. Sie können eine Server-Instanz mit Seafile auch in einer virtuellen Maschine installieren und die Software somit testen.

Reichen Ihnen die Funktionen in der hier gestellten Community-Version nicht, können Sie einen Blick auf die Pro-Version werfen. Diese bringt unter anderem High Availability mit sich. Für fünf Anwender kostet die Lizenz zum Beispiel einmalig 35 Euro pro Anwender. Dafür bekommen Sie zwölf Monate lang Upgrades und können die Software so lange benutzen, wie Sie möchten. Für drei Anwender gibt es eine Pro-Lizenz kostenlos; diese läuft allerdings nur auf Linux. (cvi)