Nextcloud, ownCloud und Seafile lösen auf den ersten Blick dieselbe Aufgabe: Dateien auf eigener Infrastruktur ablegen, teilen und auf Clients synchronisieren. Unter der Oberfläche unterscheiden sich die drei Projekte in Architektur, Speicherformat und Funktionsumfang so deutlich, dass ein späterer Wechsel auf eine vollständige Datenmigration hinausläuft. Diese Anleitung ordnet die Systeme ein und zeigt für jedes einen lauffähigen Testaufbau mit Docker.
Was ist der Unterschied zwischen Nextcloud, ownCloud und Seafile?
Nextcloud ist eine PHP-Groupware mit Datei-Sync, ownCloud Infinite Scale ein in Go geschriebener Rewrite mit S3-Backend und OIDC-Pflicht, und Seafile ein C-basierter Sync-Server, der Dateien blockweise wie ein Git-Repository ablegt.
| Kriterium | Nextcloud | ownCloud Infinite Scale | Seafile |
|---|---|---|---|
| Laufzeit | PHP 8.2+ mit Webserver | Go, Single Binary | C-Daemons plus Django-Frontend |
| Datenbank | MariaDB oder PostgreSQL | keine externe DB nötig | MariaDB/MySQL, Pflicht ab 12.0 |
| Speicherformat | Dateien 1:1 im Dateisystem | Blobs plus Metadaten oder S3 | Blöcke, content-addressed |
| Authentifizierung | lokal, LDAP, SAML, OIDC | OIDC verpflichtend | lokal, LDAP, OAuth, SAML (Pro) |
| Groupware | Kalender, Kontakte, Mail, Talk | keine | keine |
| Office | Collabora, OnlyOffice | Collabora, OnlyOffice | SeaDoc, OnlyOffice |
| Lizenz | AGPLv3 | Apache 2.0 (Kern) | CE unter AGPL, Pro proprietär |
Wichtig für die Einordnung: „ownCloud" bezeichnet heute zwei verschiedene Produkte. Der klassische ownCloud Server 10 ist die PHP-Anwendung, aus der Nextcloud 2016 hervorgegangen ist, und wird nicht mehr weiterentwickelt. Der aktive Zweig ist ownCloud Infinite Scale (oCIS), ein vollständiger Rewrite in Go mit eigenem Speicherkonzept, Spaces statt klassischer Home-Ordner und verpflichtendem OpenID Connect. Wer heute neu plant, vergleicht Nextcloud gegen oCIS, nicht gegen ownCloud 10.
Voraussetzungen
- Ein Linux-Host mit Docker Engine 24.0 oder neuer und dem Compose-Plugin v2
- Mindestens 2 vCPU und 4 GB RAM pro Testinstanz, bei Seafile mit Volltextsuche mehr
- Freie Ports 8080 (Nextcloud), 9200 (oCIS) und 8000 (Seafile)
- Ein DNS-Name plus TLS-Zertifikat, sobald du über
localhosthinausgehst - Ein Benutzerkonto mit
sudo-Rechten oder Mitgliedschaft in der Gruppedocker
Für den Vergleich lassen sich alle drei Stacks parallel auf einer skalierbaren Cloud-VM mit 4 vCPU und 8 GB RAM betreiben. Im Produktivbetrieb trennst du Datenbank, Applikation und Objektspeicher auf eigene Instanzen.
Welche Lösung passt zu welchem Anwendungsfall?
Nextcloud passt, wenn Kalender, Kontakte, Chat und Office in einer Oberfläche liegen sollen, Seafile bei Millionen kleiner Dateien und hoher Sync-Last, ownCloud Infinite Scale bei S3-Backend und zentralem OIDC-Login über einen bestehenden Identity Provider.
graph TD
A["Anforderungen klären"] --> B{"Groupware, Office und Chat nötig?"}
B -->|ja| C["Nextcloud"]
B -->|nein| D{"Sehr viele kleine Dateien, Sync-Performance kritisch?"}
D -->|ja| E["Seafile"]
D -->|nein| F{"S3-Backend und OIDC bereits gesetzt?"}
F -->|ja| G["ownCloud Infinite Scale"]
F -->|nein| C
Die Entscheidung fällt selten über einzelne Features, sondern über Betriebsaufwand. Nextcloud bringt die größte Funktionsbreite mit, verlangt dafür aber PHP-Tuning, Redis für File-Locking, korrekt konfigurierte Cronjobs und regelmäßige App-Kompatibilitätsprüfungen bei Major-Upgrades. oCIS reduziert den Stack auf ein Binary, erzwingt dafür eine OIDC-Infrastruktur. Seafile ist im Betrieb am genügsamsten und liefert die schnellste Synchronisation, bietet aber keine Groupware.
Passende Infrastruktur bei centron
Zum Mitmachen braucht es keine eigene Hardware: ccloud³ VMs mit vollem Root-Zugriff, stundengenau abgerechnet und in Sekunden startklar. Cloud-Server mieten →
Warum speichert Seafile Dateien nicht direkt im Dateisystem?
Seafile zerlegt jede Datei in Blöcke von rund einem Megabyte, speichert sie content-addressed unter /opt/seafile-data/seafile-data/storage/blocks/ und versioniert jede Bibliothek wie ein Git-Repository, weshalb Originaldateinamen auf der Platte nicht mehr sichtbar sind.
Daraus folgt der wichtigste praktische Unterschied der drei Systeme: das Backup-Verfahren.
| System | Ablage auf dem Host | Backup-Verfahren |
|---|---|---|
| Nextcloud | data/<user>/files/ als reale Dateien |
Dateisystem-Backup plus DB-Dump |
| ownCloud Infinite Scale | Blobs mit UUID-Namen plus Metadaten | Blob-Store plus Metadaten konsistent sichern |
| Seafile | Blöcke, Commits, FS-Objekte | DB-Dump und Blockspeicher im selben Zeitfenster |
Bei Nextcloud kannst du eine einzelne Datei per rsync direkt vom Server holen, auch ohne laufende Anwendung. Bei Seafile und oCIS funktioniert das nicht: Ohne die zugehörige Datenbank beziehungsweise den Metadaten-Store sind die Objekte auf der Platte wertlos. Plane das Backup deshalb immer als konsistentes Paar aus Datenbank und Objektdaten und sichere beides zum selben Zeitpunkt, idealerweise über einen Storage-Snapshot.
Nextcloud testweise aufsetzen
Nextcloud braucht im Testaufbau drei Container: MariaDB mit READ-COMMITTED-Isolation, Redis für das File-Locking und das offizielle Apache-Image. Ohne Redis fällt Nextcloud auf datenbankbasiertes Locking zurück, was bei parallelen Uploads regelmäßig zu Sperrfehlern führt.
services:
db:
image: mariadb:11.4
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
environment:
MARIADB_ROOT_PASSWORD: <root-passwort>
MARIADB_DATABASE: nextcloud
MARIADB_USER: nextcloud
MARIADB_PASSWORD: <db-passwort>
volumes:
- db:/var/lib/mysql
redis:
image: redis:7-alpine
app:
image: nextcloud:31-apache
ports:
- "8080:80"
environment:
MYSQL_HOST: db
MYSQL_DATABASE: nextcloud
MYSQL_USER: nextcloud
MYSQL_PASSWORD: <db-passwort>
REDIS_HOST: redis
volumes:
- nextcloud:/var/www/html
depends_on:
- db
- redis
volumes:
db:
nextcloud:Starte den Stack und lege den Administrator über den Web-Installer auf http://<deine-ip>:8080 an:
$ docker compose up -d
$ docker compose logs -f appAlle Wartungsaufgaben laufen über occ, das im Container als Benutzer www-data ausgeführt werden muss:
$ docker compose exec -u www-data app php occ status
$ docker compose exec -u www-data app php occ config:system:set default_phone_region --value=DEownCloud Infinite Scale testweise aufsetzen
oCIS läuft als Single Binary ohne externe Datenbank. Vor dem ersten Start erzeugt ocis init die Konfiguration in /etc/ocis und gibt einmalig das Admin-Passwort aus. Notiere es, es wird nicht erneut angezeigt.
$ docker volume create ocis-config
$ docker volume create ocis-data
$ docker run --rm -v ocis-config:/etc/ocis owncloud/ocis:latest init --insecure trueAnschließend startest du den Server. OCIS_URL muss exakt der URL entsprechen, unter der du die Instanz im Browser aufrufst, sonst schlägt der OIDC-Redirect nach dem Login fehl:
$ docker run -d --name ocis -p 9200:9200 \
-e OCIS_URL=https://<deine-domain>:9200 \
-e OCIS_INSECURE=true \
-e PROXY_TLS=true \
-v ocis-config:/etc/ocis \
-v ocis-data:/var/lib/ocis \
owncloud/ocis:latestEin Detail, das bei Migrationen regelmäßig übersehen wird: Basic Auth ist in oCIS standardmäßig deaktiviert. WebDAV-Clients und Skripte, die bisher mit Benutzername und Passwort gegen remote.php/webdav gelaufen sind, brauchen entweder ein App-Passwort oder einen OIDC-fähigen Client. Für den Produktivbetrieb ersetzt du den eingebauten IDP durch Keycloak oder einen anderen externen Provider.
Seafile testweise aufsetzen
Seafile besteht aus MariaDB, Memcached und dem Seafile-Container. Seit Version 12.0 ist eine MySQL-kompatible Datenbank Pflicht, die frühere SQLite-Variante entfällt. Prüfe die Variablennamen gegen die Compose-Datei deiner konkreten Version, sie haben sich zwischen 11.x und 12.x geändert.
services:
db:
image: mariadb:10.11
environment:
MYSQL_ROOT_PASSWORD: <db-root-passwort>
MYSQL_LOG_CONSOLE: "true"
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql
memcached:
image: memcached:1.6
entrypoint: memcached -m 256
seafile:
image: seafileltd/seafile-mc:12.0-latest
ports:
- "8000:80"
volumes:
- /opt/seafile-data:/shared
environment:
DB_HOST: db
DB_ROOT_PASSWD: <db-root-passwort>
SEAFILE_SERVER_HOSTNAME: <deine-domain>
SEAFILE_ADMIN_EMAIL: <admin@deine-domain>
SEAFILE_ADMIN_PASSWORD: <admin-passwort>
depends_on:
- db
- memcachedDie Community Edition deckt Sync, Freigaben, clientseitig verschlüsselte Bibliotheken und WebDAV ab. Volltextsuche über Elasticsearch, S3- oder OpenStack-Swift-Backends, Audit-Logs und Antivirus-Anbindung bleiben der Pro-Edition vorbehalten, die bis drei Nutzer kostenlos ist.
Installation verifizieren
Prüfe jede Instanz mit einem HTTP-Statuscheck, bevor du Clients verbindest:
$ curl -s http://localhost:8080/status.php
{"installed":true,"maintenance":false,"needsDbUpgrade":false,"version":"31.0.5.1","productname":"Nextcloud"}
$ curl -k -s -o /dev/null -w "%{http_code}\n" https://localhost:9200/
200
$ curl -s -o /dev/null -w "%{http_code}\n" http://localhost:8000/accounts/login/
200Bei Nextcloud gilt die Installation erst als sauber, wenn installed auf true und needsDbUpgrade auf false steht. Ergänzend zeigt occ status dieselben Werte im Klartext. Bei Seafile ist ein HTTP 200 auf der Login-Seite nur die halbe Prüfung: Lade zusätzlich eine Testdatei hoch, denn Uploads laufen über den separaten Fileserver-Endpunkt und scheitern bei falscher SERVICE_URL trotz erreichbarem Web-Frontend.
Troubleshooting
Nextcloud meldet Sperrfehler beim Upload
Ursache ist fast immer eine fehlende --transaction-isolation=READ-COMMITTED in MariaDB oder ein nicht erreichbarer Redis. Prüfe die Konfiguration und setze das Locking gezielt zurück:
$ docker compose exec -u www-data app php occ config:list system | grep -A3 redis
$ docker compose exec -u www-data app php occ maintenance:repairoCIS-Login endet mit invalid_grant
Die Variable OCIS_URL weicht von der tatsächlich aufgerufenen Adresse ab, etwa localhost in der Konfiguration gegen eine IP im Browser. Setze OCIS_URL auf die exakte externe URL inklusive Schema und Port, entferne das Config-Volume und initialisiere neu.
Seafile zeigt Dateien an, Download bricht ab
Der Fileserver ist über die konfigurierte URL nicht erreichbar. Kontrolliere SERVICE_URL und FILE_SERVER_ROOT im Admin-Bereich unter „Einstellungen" und stelle sicher, dass dein Reverse Proxy den Pfad /seafhttp ohne Puffergrenze weiterreicht.
Fazit
Die Wahl hängt an drei Fragen: Brauchst du Groupware, wie viele Dateien synchronisierst du, und existiert bereits ein Identity Provider. Nextcloud ist die richtige Antwort für Teams, die eine Plattform statt eines Dateidienstes wollen. Seafile gewinnt bei Sync-Last und Ressourcenverbrauch. ownCloud Infinite Scale spielt seine Stärken dort aus, wo S3-Storage und OIDC ohnehin gesetzt sind. Teste den Favoriten mit einem realistischen Datensatz, bevor du produktiv migrierst, denn ein Wechsel bedeutet in allen drei Richtungen einen vollständigen Export und Reimport.
Weiterlesen
- Nextcloud aktualisieren: Updater, occ und Rollback-Plan
- Nextcloud All-in-One mit Docker installieren
- Nextcloud auf Ubuntu 24.04 mit nginx installieren
- Nextcloud sichern und wiederherstellen: Daten, Datenbank, Config
- Nextcloud mit Docker Compose betreiben
- Nextcloud Office einrichten: Collabora oder OnlyOffice
- Nextcloud per WebDAV einbinden: Linux, Windows, macOS
- Welcher Server für Nextcloud? RAM, CPU und Storage dimensionieren
- Was ist Nextcloud? Funktionsweise, Komponenten und Einsatz
Testen Sie Ihr Setup auf ccloud³
Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.