Seafile Cloud Community ist eine leistungsstarke, Open-Source-basierte Lösung für Datei-Synchronisation und -Freigabe, die sich ideal für Nutzer eignet, die Wert auf Datenschutz, Kontrolle und Flexibilität legen. Anders als viele kommerzielle Cloud-Dienste ermöglicht Seafile die Installation auf eigenen Servern, wodurch volle Datenhoheit gewährleistet wird. Die Plattform bietet umfassende Funktionen wie Multi-Plattform-Unterstützung, clientseitige Verschlüsselung, Versionskontrolle sowie detaillierte Zugriffsrechte auf Ordner- und Dateiebene
Datum | Änderungen |
---|---|
28.03.2020 | Erstellung dieser Anleitung. |
26.07.2022 | Docker Compose Datei angepasst |
29.05.2023 | Anpassung an neue Traefik Anleitung |
02.12.2023 | Anpassung für Seafile 11. Danke an @shipy |
13.12.2023 | Kapitel 7 hinzugefügt (Collabora Office) |
28.10.2024 | Anpassung an aktuelle Version. Danke an @allurt |
17.03.2025 | Anpassung an Version 12 |
Als Grundlage meiner Anleitung dient die offizielle Seafile Anleitung für Docker.
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik V3 Installation, Konfiguration und CrowdSec-Security
2. Ordner anlegen
Zuerst legen wir uns passende Ordner-Strukturen an.
mkdir -p /opt/containers/seafile/
3. Docker Compose anlegen
Nun legen wir die eigentliche Docker Datei an. Hierfür habe ich mir die offizielle Seafile Compose genommen und diese abgeändert für Traefik.
nano /opt/containers/seafile/docker-compose.yml
Inhalt
services: seafile-mysql: image: ${SEAFILE_DB_IMAGE} container_name: seafile-mysql environment: - MYSQL_ROOT_PASSWORD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD} - MYSQL_LOG_CONSOLE=true - MARIADB_AUTO_UPGRADE=1 volumes: - ./seafile-mysql:/var/lib/mysql networks: - seafile_net healthcheck: test: [ "CMD", "/usr/local/bin/healthcheck.sh", "--connect", "--mariadbupgrade", "--innodb_initialized", ] interval: 20s start_period: 30s timeout: 5s retries: 10 seafile-memcached: image: ${SEAFILE_MEMCACHED_IMAGE} container_name: seafile-memcached entrypoint: memcached -m 256 networks: - seafile_net seafile: image: ${SEAFILE_IMAGE} container_name: seafile volumes: - ./seafile-data:/shared environment: - DB_HOST=${SEAFILE_MYSQL_DB_HOST} - DB_PORT=${SEAFILE_MYSQL_DB_PORT} - DB_USER=${SEAFILE_MYSQL_DB_USER} - DB_ROOT_PASSWD=${INIT_SEAFILE_MYSQL_ROOT_PASSWORD} - DB_PASSWORD=${SEAFILE_MYSQL_DB_PASSWORD} - SEAFILE_MYSQL_DB_CCNET_DB_NAME=${SEAFILE_MYSQL_DB_CCNET_DB_NAME} - SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME} - SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME} - TIME_ZONE=${TIME_ZONE} - INIT_SEAFILE_ADMIN_EMAIL=${INIT_SEAFILE_ADMIN_EMAIL} - INIT_SEAFILE_ADMIN_PASSWORD=${INIT_SEAFILE_ADMIN_PASSWORD} - SEAFILE_SERVER_HOSTNAME=${SEAFILE_SERVER_HOSTNAME} - SEAFILE_SERVER_PROTOCOL=${SEAFILE_SERVER_PROTOCOL} - SITE_ROOT=${SITE_ROOT} - NON_ROOT=${NON_ROOT} - JWT_PRIVATE_KEY=${JWT_PRIVATE_KEY} - SEAFILE_LOG_TO_STDOUT=${SEAFILE_LOG_TO_STDOUT} depends_on: - seafile-mysql - seafile-memcached networks: - seafile_net - proxy labels: - "traefik.enable=true" - "traefik.http.routers.seafile.rule=Host(`${SEAFILE_SERVER_HOSTNAME}`)" - "traefik.http.routers.seafile.entrypoints=websecure" - "traefik.http.routers.seafile.tls=true" - "traefik.http.routers.seafile.tls.certresolver=http_resolver" - "traefik.http.services.seafile.loadbalancer.server.port=80" - "traefik.docker.network=proxy" networks: seafile_net: driver: bridge proxy: external: true
4. .env Datei erstellen
Nur erstellen wir noch eine Datei, welche die eigentliche Konfiguration beinhaltet:
nano /opt/containers/seafile/.env
Inhalt:
### Seafile admin user INIT_SEAFILE_ADMIN_EMAIL=me@example.com INIT_SEAFILE_ADMIN_PASSWORD=asecret SEAFILE_SERVER_HOSTNAME=seafile.euredomain.de ## Images SEAFILE_IMAGE=seafileltd/seafile-mc:12.0-latest SEAFILE_DB_IMAGE=mariadb:10.11 SEAFILE_MEMCACHED_IMAGE=memcached:1.6.29 SEAFILE_ELASTICSEARCH_IMAGE=elasticsearch:8.15.0 ## Database SEAFILE_MYSQL_DB_HOST=seafile-mysql SEAFILE_MYSQL_DB_USER=seafile SEAFILE_MYSQL_DB_PASSWORD=DBROOT SEAFILE_MYSQL_DB_PORT=3306 SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db ## Scheme SEAFILE_SERVER_PROTOCOL=https SITE_ROOT=/ NON_ROOT=false SEAFILE_LOG_TO_STDOUT=false ## Startup parameters TIME_ZONE=Europe/Berlin JWT_PRIVATE_KEY=JWTCHANGE ### Database root password INIT_SEAFILE_MYSQL_ROOT_PASSWORD=INITCHANGE
Noch zu ändern:
- Nutzername
- Passwort
- Domain
Den Rest generieren wir uns jetzt:
apt update && apt install pwgen cd /opt/containers/seafile/ password=$(pwgen -s 40 1); sed -i "s#JWTCHANGE#$password#g" .env password=$(pwgen -s 8 1); sed -i "s#INITCHANGE#$password#g" .env password=$(pwgen -s 8 1); sed -i "s#DBROOT#$password#g" .env
5. Seafile Server starten
Den Server startet ihr wie gewohnt mit folgendem Befehl:
docker compose -f /opt/containers/seafile/docker-compose.yml up -d
Nun sollte es so aussehen, wenn ihr auf “seafile.euredomain.de” geht.
6. Collabora Office integrieren
In Seafile ist es auch möglich innerhalb weniger Minuten ein Online Office einzubinden. Dies ermöglicht es euch, Dokumente direkt im Browser zu bearbeiten. Die Anleitung zu Collabora Office findet ihr hier.
Moin!
Danke für die Anleitung, aber einen kleinen Hinweis habe ich noch:
Wenn man den Container so deployed wie hier beschrieben ist die Geschwindigkeit unterirdisch. Der Grund ist das “fehlende” memcached…
Warum fehlend?
In der Datei im Container
/opt/seafile/conf/seahub_settings.py
ist angegeben, dass seafile memcached unter ‘LOCATION’: ‘memcached:11211’ sucht. Da im composefile aber der container umbenannt wurde (seafile-memcached) findet das gute Stück nix…
Lösung a) Ändern im Dockercontainer
–> Blöde Idee, beim nächsten Update ist es weg… 😅
Lösung b) Containernamen von seafile-memcached zu memcached im Compose-File ändern
–> bessere Idee, da nachhaltiger 😄
Gruß
L0sWach0s
Moin!
Das genutzte Docker-Image für Seafile gibt es mit diesem Namen scheinbar nicht mehr und man läuft mit der Anleitung in einen Fehler. Der korrekte Name wäre (für v11): seafileltd/seafile-mc:11.0-latest
Hallo, ich werde von crowdsec ständig gebannt. Ihr nicht? Was muss denn in der Whitelist stehen damit das nicht mehr passiert?
VG
Hallo Christian
Kannst du noch Webdav und Onlyoffice integrieren? Danke
Hallo Christian,
deine Anleitung hier scheint nicht mehr aktuell zu sein!
in der Datei /opt/containers/seafile/seafile-data/seafile/conf/seahub_settings.py muss folgendes hinzugefügt werden:
Natürlich muss hier die URL angepasst werden. Siehe dazu den Issus auf Github CSRF verification failed for docker after update to seafile 11.0.0 · Issue #2707 · haiwen/seafile (github.com)
Scheinbar gibt es ansonsten ein CSRF Fehler welcher dass einloggen verhindert!
Lg Shipy
Wie aktiviert man WebDAV bei Seafile in Verbindung mit Traefik v2, das eingerichtet wurde nach eurer Anleitung? https://goneuland.de/traefik-v2-reverse-proxy-mit-crowdsec-einrichten
Möchte DAVx5 nutzen und Backups wie z.B. Seedvault, Swift Backup usw. darüber auf meinen nach eurer Anleitung eingerichteten Seafile-Server sichern.
Kommentare kann ich hier nicht aufklappen/ lesen…wieso auch immer (keine Adblocker usw. auf eurer Seite aktiviert) Oder kann man die nur über Abo lesen? Steht zumindest ja nirgends etwas davon. Da ich keine Antworten lesen kann lasse ich das so mal da.
Hallo.
Schöne detaillierte Anleitung. Habe Traefik auf Anhieb zum Laufen bekommen, allerdings zickt Seafile etwas rum. Immer wenn ich meine Domain aufrufe werde ich zur Hauptseite von Traefik weitergeleitet. Habe es dann mit Ports, brachte aber nix. Was mache ich falsch ? Danke.
Gruß Thorsten
Seltsam bei mir waren die Kommentare noch drin. Hatte die Webseite aber aktualisiert.
Nun sind sie weg. Alles gut, funktioniert nun.
Vielen Dank Christian….
Funktioniert immer noch nicht.
Du musst noch das hier löschen.
Dann geht es….
VG Jens
Funktioniert nicht mehr…! Bitte mal überprüfen.
Danke konnte paar Sachen abspicken, hat geholfen!
Mein Dank kennt keine Worte! So truly made my day/night!