
Seafile ist eine sichere und plattformübergreifende Cloud-Speicherlösung. Eine Möglichkeit, Seafile zu installieren und zu betreiben, ist durch die Verwendung von Docker-Containern und dem Network File System (NFS). In diesem Artikel zeige ich, wie sich Seafile mit Docker und NFS auf einem System einrichten lässt.
Warum verwende ich NFS?
NFS ist ein weit verbreitetes Dateisystem-Protokoll, das für die gemeinsame Nutzung von Dateien über ein Netzwerk entwickelt wurde. NFS bietet eine einfache Möglichkeit, Dateien zwischen verschiedenen Systemen zu teilen und zu synchronisieren, ohne dass Dateien manuell kopiert werden müssen. Es ist schnell und effizient, da es speziell für den Einsatz in Netzwerken entwickelt wurde.
NFS wird häufig in Unternehmen eingesetzt, die große Dateien zwischen verschiedenen Standorten teilen müssen, und wird von vielen Betriebssystemen unterstützt, darunter Linux, Unix und Windows.
Der große Vorteil von NFS in Kombination mit Seafile ist die Unabhängigkeit vom Docker-Server. So ist es beispielsweise möglich, Seafile auf einem Raspberry Pi zu betreiben, während die Daten sicher auf einem PC oder Server liegen. Sollte der Raspberry Pi bzw. der Seafile-Server ausfallen, sind die Daten nicht verloren.
Zudem bietet der Raspberry Pi keine besonders gute Möglichkeit, großen Speicher performant anzubinden. Selbstverständlich führt trotzdem kein Weg an einer Datensicherung vorbei. In meinem Fall verwende ich einen Ubuntu-Server für die Seafile-Docker-Container und eine Synology DiskStation als NFS-Server, auf dem die Dateien liegen.
Docker Compose Datei
version: '2.0'
services:
db:
image: mariadb:10.5
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=${DB_PASS} # Festlegen des Root-Passworts für den MySQL-Service
- MYSQL_LOG_CONSOLE=true
volumes:
- type: volume
source: db
target: /var/lib/mysql
volume:
nocopy: true
networks:
- seafile-net
memcached:
image: memcached:1.6
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:latest
container_name: seafile
ports:
- "5000:80"
- "5001:8080"
volumes:
- type: volume
source: data
target: /shared
volume:
nocopy: true
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=${DB_PASS} # Passwort des MySQL-Root-Nutzers
- TIME_ZONE=${TIME_ZONE} # Zeitzone, Standard ist UTC
- SEAFILE_ADMIN_EMAIL=${ADMIN_USER_EMAIL}
- SEAFILE_ADMIN_PASSWORD=${ADMIN_USER_PASS}
- SEAFILE_SERVER_LETSENCRYPT=false
- SEAFILE_SERVER_HOSTNAME=${HOST_NAME}
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
volumes:
db: # Volume für die Datenbank
driver: local
driver_opts:
type: nfs
o: addr=192.168.20.10,rw,vers=4.1
device: ":/volume1/DockerData/Seafile/db/"
data: # Volume für die Daten
driver: local
driver_opts:
type: nfs
o: addr=192.168.20.10,rw,vers=4.1
device: ":/volume1/DockerData/Seafile/data/"
Wichtig: Datensicherung der Seafile-Datenbank
Die Seafile-Datenbank muss zwingend mitgesichert werden. Im Vergleich zu Nextcloud speichert Seafile Dateien in kleinen Blöcken, die in der Regel nur wenige MB groß sind. Wird eine Datei aktualisiert, wird lediglich der geänderte Block hochgeladen, was Effizienz und Geschwindigkeit der Synchronisierung deutlich erhöht.
Die Blöcke werden über eindeutige Identifikatoren referenziert, wodurch Seafile den Speicherplatz effizient verwalten kann. Wird eine Datei gelöscht, werden die zugehörigen Blöcke automatisch entfernt. Fehlt jedoch die Datenbank, ist es nicht mehr möglich, die Dateien wiederherzustellen – selbst wenn die eigentlichen Datenblöcke noch vorhanden sind.
Nginx Proxy Manager
Die Integration des Nginx Proxy Managers in die Docker-Konfiguration ist aus mehreren Gründen sinnvoll:
- Benutzerfreundliche Weboberfläche zur Verwaltung von Reverse-Proxies
- Einfache Einrichtung und automatische Erneuerung von Let's-Encrypt-Zertifikaten
- Zentrale Verwaltung von SSL, Weiterleitungen und Zugriffsregeln
- Einfache Nutzung von Subdomains oder Pfad-basierten Routen für Dienste wie Seafile
Dadurch entfällt das manuelle Bearbeiten von Nginx-Konfigurationsdateien, was die Wartung deutlich vereinfacht und Fehler reduziert. Insgesamt steigen Sicherheit, Übersichtlichkeit und Flexibilität der Serverinfrastruktur deutlich.
Eine Anleitung zur Einrichtung des Nginx Proxy Managers findest du an entsprechender Stelle.
Kommentare