Seafile Installation mittels Docker Compose und NFS

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 werden ich zeigen, wie Sie 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 auch 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 es wird von vielen Betriebssystemen unterstützt, einschließlich Linux, Unix und Windows.

Der große Vorteil von NFS in Kombination mit Seafile ist die unabhängigkeit vom Docker Server. Hiermit ist es beispielsweise möglich Seafile auf einem Raspberry Pi zu betreiben, die Daten jedoch sicher auf einem PC oder Server liegen zu lassen.
Nehmen wir an der Raspberry Pi oder bzw. der Seafile Server geht kaputt sind die Daten nicht verloren. Zudem bietet der Raspberry keine schöne Möglichkeit um großen Speicher performant anzubinden. Selbstverständlich führt dennoch kein weg an einer Datensicherung vorbei, in meinem Fall verwende ich einen Ubuntu Server für die Seafile Docker Container und eine Synology Disk Station als NFS Server auf welchem nachher die Dateien liegen sollen.

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}  # Das Passwort des MySQL Root-Nutzers
      - TIME_ZONE=${TIME_ZONE}  # Optional, Standard ist UTC. Sollte auf Ihre lokale Zeitzone eingestellt werden
      - SEAFILE_ADMIN_EMAIL=${ADMIN_USER_EMAIL} # Definiert den Seafile-Admin-Benutzer, Standard ist 'me@example.com'
      - SEAFILE_ADMIN_PASSWORD=${ADMIN_USER_PASS}     # Definiert das Passwort des Seafile-Admin-Benutzers, Standard ist 'asecret'
      - SEAFILE_SERVER_LETSENCRYPT=false   # Bestimmt, ob HTTPS verwendet wird
      - SEAFILE_SERVER_HOSTNAME=${HOST_NAME} # Definiert den Hostnamen, falls HTTPS aktiviert ist
    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              # IP-Adresse des NFS-Servers
      device: ":/volume1/DockerData/Seafile/db/"     # Pfad auf dem NFS-Server
  data:  # Volume für die Daten
    driver: local
    driver_opts:
      type: nfs
      o: addr=192.168.20.10,rw,vers=4.1              # IP-Adresse des NFS-Servers
      device: ":/volume1/DockerData/Seafile/data/"   # Pfad auf dem NFS-Server

Die Seafile Datenbank muss unbedingt bei einer Datensicherung unbedingt auch gesichert werden, im Vergleich zu Nextcloud speichert Seafile die Daten in kleinen Blöcken, die in der Regel nur wenige MB groß sind. Wenn eine Datei aktualisiert wird, wird nur der geänderte Block hochgeladen, was die Effizienz und Geschwindigkeit der Synchronisierung erhöht. Die Blöcke werden durch einen eindeutigen Identifikator referenziert, der es Seafile ermöglicht, die Blöcke effizient zu verwalten und den Speicherplatzbedarf zu minimieren. Wenn eine Datei gelöscht wird, werden die zugehörigen Blöcke automatisch aus dem verteilten Dateisystem entfernt. Fehlt euch die Datenbank ist es nicht mehr möglich die Dateien wiederherzustellen.

Nginx Proxy Manager

Die Integration des Nginx Proxy Managers in Deine Docker-Konfiguration wäre aus mehreren Gründen sinnvoll. Erstens bietet der Nginx Proxy Manager eine benutzerfreundliche Oberfläche zur Verwaltung von Proxy-Servern, was die Konfiguration und Wartung von Reverse-Proxies, SSL-Zertifikaten und Zugriffsregeln erheblich vereinfacht. Zweitens unterstützt er die automatische Erstellung und Erneuerung von Let’s Encrypt-SSL-Zertifikaten, was die Sicherheit Deines Systems durch die Verschlüsselung des Datenverkehrs erhöht. Drittens ermöglicht er die einfache Konfiguration von Subdomains oder Pfad-basierten Routen für Deine Dienste wie Seafile, ohne dass Du direkt in die Nginx-Konfigurationsdateien eingreifen musst. Dadurch wird die Einrichtung und Verwaltung von Webdiensten agiler und weniger fehleranfällig. Insgesamt erhöht der Einsatz des Nginx Proxy Managers die Sicherheit, Benutzerfreundlichkeit und Flexibilität Deiner Serverinfrastruktur. Eine Anleitung zur Einrichtung des Proxy Managers findest du hier.

🤞 1x pro Monat unsere News, Tipps und Tutorials gebündelt direkt in dein Postfach!

Wir senden keinen Spam! Erfahre mehr in unserer Datenschutzerklärung.


Kommentare

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.