# Seafile

Seafile ist eine Software des gleichnamigen chinesischen Unternehmens, mit der sich Dateien zentral auf einem Server speichern (Filehosting), mit anderen Personen teilen (Filesharing) und zwischen Geräten synchronisieren lassen (File synchronisation). Auf die Dateien kann man über ein Webinterface sowie Desktop-Clients und Mobile Apps zugreifen. Darüber hinaus bietet Seafile APIs für die Integration in andere Applikationen. Der Funktionsumfang ist dem von Onlinediensten wie z. B. Dropbox und Google Drive ähnlich. Während bei letzteren Public-Cloud-Diensten die Daten auf Servern der Anbieter wie beispielsweise bei Google abgelegt werden, liegen bei Seafile die Dateien auf dem eigenen Server, sofern man den betreffenden Server selbst betreibt.
Seafile gibt es in zwei Editionen: Die Community Edition (CE) des Seafile Servers ist Open-Source-Software; die Professional Edition (PE) des Servers ist proprietäre Software und bietet erweiterte Funktionen für den Einsatz in Enterprise-Umgebungen.

## Funktionen
### Kernfunktionalitäten

Der Funktionsumfang von Seafile ist mit dem des bekannten Filesharing Dienstes Dropbox und anderen File Sharing Anbietern vergleichbar. Die Kernfunktionen sind:
* Zentrale Dateiablage auf dem Server
* Teilen von Ordnern und Dateien mit anderen Nutzern
* Datei- und Ordnerfreigabe über Public Links mit Dritten
* Zugriff auf die Dateiablage über das Netzwerk (LAN und/oder Internet)
* Datei-Synchronisation zwischen Server und Client
Dateien und Ordner werden in Seafile in Bibliotheken organisiert. Als oberste Elemente in der Verzeichnisstruktur dienen Bibliotheken zur Abbildung funktionaler und organisatorischer Strukturen. Bibliotheken haben grundsätzlich einen Besitzer (d. h. einen Nutzer oder eine Gruppe), können aber an andere Benutzer, Gruppen oder alle Benutzer des Seafile Servers freigegeben werden, die dadurch Zugriff auf die geteilten Objekte erhalten. Der Umfang des Zugriffs richtet sich nach der Art der Freigabe. In der Community Edition von Seafile stehen drei, in der Professional Edition fünf Freigabestufen zur Verfügung.
Zum Schutz der Privatsphäre der Seafile Benutzer können Bibliotheken und Ordner auf dem Seafile Server verschlüsselt gespeichert werden. Diese Bibliotheken werden clientseitig verschlüsselt und dann auf dem Seafile Server gespeichert. Diese Ende-zu-Ende-Verschlüsselung machte es möglich, Seafile ohne Aufgabe der Vertraulichkeit der Daten auf einem Server zu betreiben, der von fremden Administratoren (z. B. in einem Rechenzentrum) verwaltet wird.
Der Zugriff auf die Dateiablage auf dem Server kann über ein Web-Interface (genannt Seahub) oder über dedizierte Clients erfolgen. Seafile bietet dedizierte Clients für Windows, Mac und Linux sowie Mobile Apps für Android und iOS. Die Kommunikation mit dem Seafile Server lässt sich mittels TLS verschlüsseln und damit absichern. Es ist möglich, mehrere Seafile Server mit einem Client zu verbinden.
Zur Minimierung des Up- und Downloadvolumens unterstützt Seafile bei der Dateisynchronisation Delta-Kodierung/Differenzspeicherung. Auch wird durch das Umbenennen einer Datei oder das Verschieben einer Datei in der Verzeichnisstruktur kein erneuter Dateitransfer ausgelöst. In Kombination mit dem für die Dateispeicherung optimierten Speichersystem ist Seafile gemäß unterschiedlicher Autoren teilweise performanter als ähnliche Lösungen zum Dateiaustausch wie z. B. die Programme ownCloud und Nextcloud.

### Administration und Sicherheit

Benutzer können in Seafile über die im Web-Interface integrierte Benutzerverwaltung oder über eine LDAP / Active Directory Anbindung verwaltet werden. Beide Varianten sind nebeneinander möglich.
Zum Schutz vor versehentlichem Löschen werden gelöschte Dateien in einen Papierkorb verschoben. Über die Versionsverwaltung können Änderungen an Dateien nachvollzogen und bei Bedarf ältere Bearbeitungsstände auch wiederhergestellt werden.
Seit der Version 6 besteht auch die Möglichkeit von Zwei-Faktor-Authentisierung nach dem Verfahren Time-based one-time password (TOTP). Bei diesem sind Benutzername und Passwort der erste Faktor. Der zweite Faktor ist eine zeitbasierte Ziffernfolge, für deren Generierung auf Mobilgeräten wie Smartphones Programme wie FreeOTP oder Google Authenticator verwendet werden können.
Eine WebDAV-Schnittstelle ist auch vorhanden, jedoch ist damit keine clientseitige Verschlüsselung möglich.

### Erweiterte Funktionen des Seafile Professional Servers

Die Seafile Professional Edition bietet zusätzliche Funktionen, die Seafile fit für den Einsatz in Rechenzentren bzw. in Enterprise-Umgebungen mit vielen Nutzern machen. Zu diesen Funktionen gehören:
* Hochverfügbarkeits-Setup in einer Cluster-Architektur
* Unterstützung unterschiedlicher Objektspeicher (z. B. Ceph und Amazon S3)
* Online Bereinigung der Datenbank (d. h. ohne Shutdown des Servers)
* Multi-Tenancy Unterstützung
* Integration von MS Office Online zur Voransicht und Bearbeitung von Office Dokumenten
* Audit Log zur Protokollierung von Anmeldungen, Berechtigungsänderungen und Zugriffen
* Integration einer Antiviruslösung
* Synchronisation von Benutzern und Gruppen mit LDAP / AD Verzeichnis
Funktionale Erweiterungen des Seafile Professional Servers gegenüber der Community Edition sind:
* Volltextrecherche
* Dateisperrung (File Locking) von Office Dokumenten zur Vermeidung von Versionskonflikten
* Differenzierte Zugriffsrechte für (Unter-)Ordner, d. h. Abweichung ggü. übergeordneten Verzeichniselementen
* Gast-Accounts ohne Rechte zur Erstellung von Bibliotheken und Gruppen
* Erweiterte Freigabestufen

### Nutzung des Seafile Community Servers

Es gibt keine verlässlichen Zahlen über die aktiven Seafile-Community-Server-Instanzen oder über die Anzahl der aktiven Benutzer. Seafile hat sich aber gerade auch dank seiner geringen Hardware-Anforderungen, die eine Installation auf dem Einplatinencomputer Raspberry Pi erlaubt, wachsender Beliebtheit erfreut. Neben der offiziellen Installationsanleitung existieren auch Video-Tutorials, die die Installation in Eigenregie für ambitionierte Nutzer möglich machen.
Auch die Seafile Professional Edition ist teilweise kostenlos verfügbar. Bei bis zu drei aktiven Nutzern kann ein Seafile-Professional-Server auch ohne gültige Lizenzdatei genutzt werden.

## Versionsgeschichte

Die nachfolgende Tabelle stellt die Versionsgeschichte des Seafile Professional Servers dar, da sich die Entwicklung auf diese Edition fokussierte. Seit der Veröffentlichung des Seafile Professional Servers mit dem Release 1.7 wurde die Community Edition parallel als funktionsreduzierte Version der Professional Edition weiterentwickelt.
| Version | Release | Funktionserweiterungen | Anmerkungen |
| 1.7 | 2012 | n/a | n/a |
| 2.0 | n/a | FSCK Utility zur Prüfung der Datenbankintegrität Unterstützung von LDAP | Umstellung des Crypto-Algorithmus für verschlüsselte Datenbanken |
| 2.1 | n/a | Unterstützung von FUSE und LDAP Public Link Funktion für Uploads Captcha Funktion zum Schutz gegen Brute-Force-Attacken | Redesign des Webinterfaces Seahub |
| 2.2 | n/a | n/a | Umstellung auf PBKDF2 Algorithmus und Random Salt zur Speicherung von Nutzerpasswörtern |
| 3.0 | 7. Juni 2014 | Unterstützung bibliotheksübergreifender Kopier- und Verschiebevorgänge | Redesign des Webinterfaces |
| 3.1 | 15. August 2014 | Passwortschutz und Befristung von Public Links Benutzerimport über CSV-Datei |
| 4.0 | 13. Dezember 2014 | Wiederherstellung gelöschter Daten und Ordner aus Snapshot | |
| 4.1 | 1. April 2015 | Unterstützung von Shibboleth | Update auf Django 1.5 |
| 4.2 | 29. Mai 2015 | Direkter Downloadlink | Umstellung von TCP Sync Protokoll auf ausschließlich HTTP/HTTPS Sync |
| 4.3 | 25. Juni 2015 | Bibliotheksweise Synchronisation im Sync-Client | Entfernung des Nachrichtenmoduls Erweiterung der API |
| 4.4 | 19. Oktober 2015 (stable 4.4.2) | | |
| 5.0 | 4. Dezember 2015 (stable 5.0.2) | Separater Papierkorb für jeden Ordner Server Konfiguration über Webinterface Seahub | Umstellung von GET auf POST Requests zur Erhöhung der Sicherheit Konsolidierung aller Konfigurationsdateien im Conf-Ordner |
| 5.1 | 8. April 2016 (stable 5.1.1) | Download mehrerer Dateien über Webinterface Seahub | Entfernung von Sub-Bibliotheken Änderung der Navigation in Webinterface Seahub Upgrade auf Django 1.8 |
| 6.0 | 20. Oktober 2016 (stable 6.0.2) | Responsive Webinterface Seahub Integration von Collabora Online Rollenbasierte Berechtigungsvergabe Zwei-Faktor-Authentifizierung Remote Wipe | |
| 6.1 | 19. Juni 2017 (stable 6.1.1) | Integration von OnlyOffice | Default-Deaktivierung der Wiki-Funktion |
| 6.2 | 12. Dezember 2017 (stable 6.2.2) | Statistik Modul Freigabe von Bibliotheken mit Admin-Rechten Labels für Snapshots von Bibliotheken Unterstützung von OAuth und Swift v1 Protokoll | Umstellung auf WSGI als Standardmodus für Webinterface Seahub |
| 6.3 | 30. Juli 2018 (stable 6.3.2) | WYSIWYG Markdown Editor Robuste Public Links Gruppenbibliotheken Unterstützung mehrerer lokaler Storage Backends Erweiterung der API Calls für Multi Tenancy Systeme | Upgrade auf Django 1.11 Deaktivierung des FastCGI Modes |
| 7.0 | 13. Juni 2019 (stable 7.0.3) | (Öffentliches) Wiki File Tagging Spaltenansicht und Kontextmenüs im Webinterface Neue Freigabe-Berechtigungen Verbesserte Favoriten | Umstellung des Webinterfaces auf React (ehemals Django) Erweiterte Kommentar- und Bearbeitungsfunktionen (insbesondere für Bilder/Tabellen) im Markdown Editor Update auf Elasticsearch 5.0 Verbesserter Schutz von verschlüsselten Bibliotheken gegen Brute-Force-Angriffe |
| 7.1 | 8. April 2020 (stable 7.1.3) | Verbesserte Gast-Einladen Funktion API-Tokens für Bibliotheken | Umstellung von Python 2 auf Python 3 Umstellung der System Administration auf React (ehemals Django) |
| 8.0 | 7. April 2021 (stable 8.0.1) | Kombinierte Upload/Download-Links Verbesserter Markdown-Editor Open Cloud Mesh mit anderen Seafile Servern | Umstellung des Benutzerfrontends auf React (ehemals Django) Entfernen des ccnet-servers |
| 9.0 | 24. January 2022 (stable 9.0.4) | In go neugeschriebener HTTP-Server Flexiblere Freigabeberechtigungen Open Cloud Mesh mit anderen Cloud-Lösungen | Herauslösen von Elasticsearch als separate Komponente |

## Technisches und Lizenzen

Den Seafile Server Community Edition gibt es für die Linux-Distributionen Debian, Ubuntu und CentOS. Darüber hinaus gibt es einen Docker Container. Eine Windows-Version, die sich gemäß Entwickleraussagen für kleinere Installationen mit beschränktem Benutzerkreis eignet, steht aktuell noch in der veralteten Version 6.0.7 zum Download zur Verfügung. Die Version wird von Seiten der Seafile Ltd. jedoch nicht mehr weiterentwickelt. Als Alternative kann der Docker Container auf Windows eingesetzt werden. Für den Einsatz in noch beschränkteren Umgebungen stellt die Firma Seafile auch eine Version für den Raspberry Pi zur Verfügung. Seafile lässt sich ebenfalls unter FreeBSD installieren. Diese Portierung stammt aber nicht von dem offiziellen Entwicklerteam.
Das Seafile-Server-Webend (Seahub) ist unter der Apache-Lizenz veröffentlicht.
Der Seafile Server Professional Edition ist für die drei Linux-Distributionen Debian, Ubuntu und CentOS sowie als Docker Container verfügbar.
Multiplattformfähigkeit erhält Seafile durch die Verfügbarkeit von Clients für alle verbreiteten Betriebssysteme: Clients zur Datei-Synchronisation sind für Windows, macOS, Linux und FreeBSD verfügbar. Clients zur Integration der zentral abgelegten Dateien in Form von virtuellen Laufwerken gibt es für Windows, macOS und Linux. Mobile Clients gibt es für iOS und Android.
Seafile Server und Clients bestehen aus unterschiedlichen Komponenten, die in C programmiert sind, während das Webinterface (Seahub) auf der JavaScript-Softwarebibliothek React basiert. Als Datenbank kann MySQL bzw. MariaDB sowie SQLite verwendet werden.

## Geschichte

Eine Gruppe ehemaliger Studenten der Tsinghua-Universität in Peking begann im Jahr 2009 ihre Arbeiten an der Entwicklung einer peer-to-peer-basierten Filehosting Lösung. Mit einer solchen Lösung, die unter dem Namen Seafile lief, wollten die Entwickler eine Alternative zu Lösungen mit einem zentralen Server schaffen. Im Jahr 2010 entschied das Entwicklerteam um Daniel Pan, das ursprüngliche Ziel aufzugeben und nahm einen Technologiewechsel hin zu einer Client-Server-Struktur vor. Solche Client-Server-Architekturen sind auch bei Dropbox oder Google Drive im Einsatz.
Im Jahr 2012 gründeten Daniel Pan, Jonathan Xu und eine Reihe anderer Entwickler des Projekts das Unternehmen Seafile Ltd. Das Ziel der Gesellschaft war die Entwicklung und der Vertrieb der selbstentwickelten Filehosting Software.
Anfang 2015 gründeten Alexander Jackson und Silja Jackson die Vertriebsgesellschaft Seafile GmbH. Ziel der Gründung war eine Stärkung des Vertriebs in Deutschland und die Bereitstellung von deutschsprachigem Support. Ebenso sollte die GmbH einen öffentlichen Cloud Storage Service auf Basis von Seafile anbieten. Seafile Ltd. entschied sich gegen einen Eigenkapitalanteil an der neugegründeten Gesellschaft, übertrug aber Nutzungsrechte und stellte Finanzmittel in Form eines zinsfreien Darlehens zur Verfügung. Die Partnerschaft wurde im Juli 2016 abrupt von Seiten der Seafile GmbH aufgekündigt. Als Gründe wurden Konflikte mit der chinesischen Seite bezüglich Produktentwicklung und Kundenkommunikation genannt.
Der Konflikt zwischen der Seafile Ltd. und der Seafile GmbH wurde im Frühjahr 2017 gütlich beigelegt. Die Distribution von Seafile hat seitdem das Unternehmen datamate aus Mainz übernommen.

## Konflikt mit PayPal

Aufgrund von Vorwürfen über Verstöße gegen die Nutzungsbedingungen von PayPal wurde die deutsche Seafile GmbH im Juni 2016 aufgefordert, den Datenfluss der Seafile-Kunden auf „illegale Inhalte“ zu prüfen. Aus moralischen, juristischen und technischen Gründen kam Seafile dem nicht nach, worauf PayPal den Zahlungsverkehr zu Seafile eingestellt hat, weswegen Seafile die kostenpflichtigen Kundenkonten zeitweilig kostenlos fortführte. PayPal entschuldigte sich daraufhin und erlaubte die Nutzung von PayPal wieder, allerdings wollte Seafile nach dem Vorfall nicht mehr mit PayPal zusammenarbeiten und sucht nach Alternativen.

## Konflikt der deutschen Seafile GmbH mit der chinesischen Seafile Ltd.

Am 21. Juli 2016 beendete die deutsche Seafile GmbH mit sofortiger Wirkung die Zusammenarbeit mit der chinesischen Seafile Ltd. und kündigte an, von nun an selbst an der Entwicklung einer eigenen Version des Seafile Servers (sowohl Community als auch Professional Version) zu arbeiten. Die Seafile GmbH argumentierte, bereits länger andauernde und unauflösbare Unstimmigkeiten mit den chinesischen Entwicklern ließen keine andere Entscheidung zu. Die chinesische Seafile Ltd. veröffentlichte wenige Tage später im Seafile-Blog eine Gegendarstellung. In dieser wurden der Seafile GmbH unter anderem Markenrechtsverletzungen vorgeworfen und bekanntgegeben, dass der Seafile GmbH die Nutzung der proprietären Seafile Pro-Software untersagt wurde. Die Seafile GmbH wies ihrerseits diese Anschuldigungen in einem weiteren Blogeintrag zurück und stellte dabei unter anderem die aus ihrer Sicht rechtmäßige Verwendung des Namens Seafile sowie des Quellcodes der Professional-Version dar.
Am 10. September 2016 entfernte die Seafile GmbH ohne entsprechenden Hinweis die zwei selbst veröffentlichten Blogeinträge zum Konflikt und den dazugehörigen Eintrag im von der GmbH betriebenen Seafile Forum. Im Forumsbeitrag wurde mehrmals kritisch hinterfragt, ob die Seafile GmbH rechtmäßig den proprietären Code der Seafile Ltd. nutzen darf, und die Community empfahl, um Verwechslungen mit dem ursprünglichen Projekt zu vermeiden, einen neuen Namen für den Fork zu verwenden. Im Gegensatz zur Seafile GmbH wurde beispielsweise beim ownCloud-Fork Nextcloud ein eigener Name verwendet und der proprietäre Teil des Codes komplett neu geschrieben, obwohl die Entwickler Zugang zu dem Code gehabt hätten. Seit der Ankündigung der Seafile GmbH, Seafile in einem eigenen Entwicklungszweig weiterzuführen, ist dieser Fork ohne Veränderungen bei der Version 5.1.4 stehen geblieben.
Der Rechtsstreit zwischen der Seafile GmbH und Seafile Ltd. wurde im Jahr Frühjahr 2017 mit einem außergerichtlichen Vergleich beigelegt. In diesem wurde vereinbart, dass die Seafile Ltd. Markenrechte an Seafile sowie die seafile.de Domain erhält. Der deutschen Seafile GmbH wurde erlaubt, bestehende Supportverträge weiter zu bedienen. Neuverträge für Seafile Professional Lizenzen durfte die ehemalige deutsche Vertriebsgesellschaft nicht mehr tätigen. Im März 2017 firmiert die ehemalige Seafile GmbH zur Syncwerk GmbH um.