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 Serverkomponente 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 Serverversion mit Langzeitunterstützung. Sie bekommen dafür Updates bis 2019.
Ubuntu Server 14.04 installieren und einrichten
Ubuntu 14.04 Server installieren und konfigurieren Sie für Seafile im Prinzip genauso 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 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 hin und her. 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 Konfigurationsdateien 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.
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 Datenbankanwender 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'
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 Skripts 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 Administratorkonto 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 orangefarbenen Schraubenschlüssel rechts oben.
Hier können Sie nun Anwender hinzufügen, Gruppen konfigurieren und so weiter. Eine der wichtigsten Funktionen bei der Cloud ist wohl das Setzen von Quotas. Storage ist nicht unendlich, und Sie wollen jedem Anwender nur ein bestimmtes Limit erlauben. Wenn Sie einen neuen Anwender anlegen und dann auf diesen klicken, 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 Standardwert 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 5 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 Konfigurationsdatei 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öße. Es lohnt sich, im Handbuch das Kapitel über die Datei durchzulesen. Sie können diese Einstellungen nicht im WebGUI vornehmen.
Weitere Administratoren
Möchten Sie weiteren Anwendern Adminstratorrechte 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
Wenn Sie nun den Server neu starten, 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, dann 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, ist, 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 einer 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.
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 Module 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 gemeinsamem 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 solch einer Größenordnung müssen Sie sich damit beschäftigen und bestimmte Konfigurationen ausprobieren. Sie können eine Serverinstanz 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)