Ich habe bereits schon hier eine Anleitung geschrieben, wie ihr Seafile Professional normal „von Hand“ installieren könnt. Nun zeige ich euch, wie ihr dies in wenigen Minuten mit Docker realisiert. Traefik dient uns hier als Reverse Proxy und stellt später den Dienst verschlüsselt per TLS bereit.

Wer Traefik noch nicht installiert hat, findet hier eine Anleitung, wie ihr dies schnell tun könnt.

Als Grundlage meiner Anleitung dient die offizielle Seafile Anleitung für Docker.

1. Ordner anlegen

Zuerst legen wir uns passende Ordner-Strukturen an.

mkdir -p /opt/containers/seafile/{db,seafile-data,elastic-data}

2. 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.

cd /opt/containers/seafile/
nano docker-compose.yml

Inhalt

version: '2.0'
services:
  db:
    image: mariadb:10.1
    container_name: seafile-mysql
    restart: unless-stopped
    environment:
      - MYSQL_ROOT_PASSWORD=db_dev        # MySQL Root Passwort vergeben
      - MYSQL_LOG_CONSOLE=true
    volumes:
      - /opt/containers/seafile/db:/var/lib/mysql 
    networks:
      - default

  memcached:
    image: memcached:1.5.6
    container_name: seafile-memcached
    restart: unless-stopped
    entrypoint: memcached -m 256
    networks:
      - default

  elasticsearch:
    image: seafileltd/elasticsearch-with-ik:5.6.16
    container_name: seafile-elasticsearch
    restart: unless-stopped
    environment:
      - discovery.type=single-node
      - bootstrap.memory_lock=true
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    ulimits:
      memlock:
        soft: -1
        hard: -1
    mem_limit: 2g
    volumes:
      - /opt/containers/seafile/elastic-data:/usr/share/elasticsearch/data
    networks:
      - default

  seafile:
    image: docker.seadrive.org/seafileltd/seafile-pro-mc:latest
    container_name: seafile
    restart: unless-stopped
    volumes:
      - /opt/containers/seafile/seafile-data:/shared
    environment:
      - DB_HOST=db
      - DB_ROOT_PASSWD=db_dev  # MySQL Root Passwort wie oben vergeben
      - TIME_ZONE=Europe/Berlin
      - SEAFILE_ADMIN_EMAIL=me@example.com         # Nutzername des Seafile Admins
      - SEAFILE_ADMIN_PASSWORD=asecret             # Seafile Admin Passwort
      - SEAFILE_SERVER_LETSENCRYPT=false 
      - SEAFILE_SERVER_HOSTNAME=cloud.euredomain.de    # eure Seafile URL
    depends_on:
      - db
      - memcached
      - elasticsearch
    networks:
      - default
      - proxy
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.seafile.entrypoints=http"
      - "traefik.http.routers.seafile.rule=Host(`cloud.euredomain.de`)"  ## Hier eure Domain eingeben ##
      - "traefik.http.middlewares.seafile-https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.seafile.middlewares=seafile-https-redirect"
      - "traefik.http.routers.seafile-secure.entrypoints=https"
      - "traefik.http.routers.seafile-secure.rule=Host(`cloud.eureDomain.de`)" ## Hier eure Domain eingeben ##
      - "traefik.http.routers.seafile-secure.tls=true"
      - "traefik.http.routers.seafile-secure.tls.certresolver=http"
      - "traefik.http.routers.seafile-secure.service=seafile"
      - "traefik.http.services.seafile.loadbalancer.server.port=80"
      - "traefik.docker.network=proxy"


networks:
  proxy:
    external: true

Notwendige Anpassungen:

  1. MySQL Passwort vergeben
  2. Admin E-Mail vergeben
  3. Admin Kennwort vergeben
  4. Eure URL eingeben bei Seafile
  5. 2x eure URL eingeben bei Traefik

Diese Docker Compose Datei funktioniert nur, wenn ich euch mittels meiner Anleitung hier Traefik installiert habt. Sonst heißen einige Traefik Variablen wohl anders. Diese müsst ihr dann dementsprechend bei euch anpassen.

3. Seafile Server starten

3.1 Bei docker.seadrive.org anmelden

Um die neuste Version von Seafile Professional zu beziehen, müsst ihr euch bei docker.seadrive.org anmelden mittels Docker. Dazu gebt ihr folgenden Befehl ein. Die Zugangsdaten habe ich hier entnommen.

docker login docker.seadrive.org

Nutzername: seafile
Passwort: zjkmid6rQibdZ=uJMuWS

3.2 Container 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 „cloud.euredomain.de“ geht.

4. Anpassungen für Uploads vornehmen

Unsere Verbindung wird mittels Traefik TLS verschlüsselt. Daher müssen wir noch Seafile anpassen. Diese Einstellungen müsst ihr mit dem Administrator Benutzer vornehmen.

Klickt auf euer „Avatar“ oben rechts.

Hier klickt ihr auf „System-Administration“.

Nun auf „Einstellungen“. Hier sind jetzt die „SERVICE_URL“ und „FILE_SERVER_ROOT“ wichtig. Diese passt ihr an.

Wichtig ist, dass wenn ihr änderungen vornehmt, dass ihr diese mit dem „Haken“ bestätigt.

Nun ändert die Einstellungen folgendermaßen ab:

  • SERVICE_URL = https://cloud.euredomain.de
  • FILE_SERVER_ROOT = https://cloud.euredomain.de/seafhttp

5. Quellen

https://download.seafile.com/published/seafile-manual/docker/deploy%20seafile%20with%20docker.md

https://github.com/haiwen/seafile-docker

Teile diesen Beitrag
Christian

3 Kommentare

  1. Und das Sahnehäubchen oben drauf:

    docker logs -f seafile
    *** Running /etc/my_init.d/01_create_data_links.sh…
    *** Booting runit daemon…
    *** Runit started as PID 14
    *** Running /scripts/start.py…
    waiting for mysql server to be ready: %s (2003, „Can’t connect to MySQL server on ‚127.0.0.1‘ ([Errno 111] Connection refused)“)
    waiting for mysql server to be ready: %s (2003, „Can’t connect to MySQL server on ‚127.0.0.1‘ ([Errno 111] Connection refused)“)
    waiting for mysql server to be ready: %s (2003, „Can’t connect to MySQL server on ‚127.0.0.1‘ ([Errno 111] Connection refused)“)
    waiting for mysql server to be ready: %s (2003, „Can’t connect to MySQL server on ‚127.0.0.1‘ ([Errno 111] Connection refused)“)
    waiting for mysql server to be ready: %s (2003, „Can’t connect to MySQL server on ‚127.0.0.1‘ ([Errno 111]

    Warum sucht seafile auf 127.0.0.1 nach MYSQL??? das ist doch ein separater Container und den hab ich doch hier angegeben:

    environment:
    – DB_HOST=seafile-db

  2. apropos, der Fehler lag bei mir, ich hatte versehentlich 2x die environment Sektion in meiner docker-.compose.yml sodass der 2. Teil davon ignoriert wurde 🙁

Schreibe einen Kommentar

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