Worum geht es in diesem Artikel?

Nextcloud ist eine webbasierte Dateiverwaltung und es ist Open Source. In diesem Artikel werde ich nicht auf die Installation einer Nextcloud Instanz eingehen, sondern die Anbindung über Traefik zeigen.

Voraussetzung

docker-compose Erweiterung

Hier eine Beispielkonfiguration:

version: '3.1'

services:
  cloud:
    image: nextcloud
    networks:
      - web
    hostname: <nextcloud.example.eu>
    volumes:
      - ./nextcloud_data:/var/www/html/data
      - /data/pictures:/mnt
      - /var/local/cloud/html/:/var/www/html/
      - /var/local/cloud/mpm_prefork.conf:/etc/apache2/mods-available/mpm_prefork.conf
    environment:
      MYSQL_DATABASE: <database_name>
      MYSQL_USER: <database_user>
      MYSQL_PASSWORD: <database_password>
      MYSQL_HOST: <database_hostname_or_ip>

    labels:
      - "traefik.docker.network=web"
      - "traefik.enable=true"
      - "traefik.http.routers.cloud.rule=Host(`<nextcloud.example.eu>`)"
      - "traefik.http.routers.cloud.entrypoints=https"
      - "traefik.http.routers.cloud.tls=true"
      - "traefik.http.routers.cloud.tls.certresolver=letsencrypt"
      - "traefik.http.routers.cloud.middlewares=cloud-redirect,secureHeaders@file"
      - "traefik.http.services.cloud.loadbalancer.server.port=80"
      - "traefik.http.services.cloud.loadbalancer.server.scheme=http"
      - "traefik.http.middlewares.cloud-redirect.redirectregex.regex=https://(.*)/.well-known/(card|cal)dav"
      - "traefik.http.middlewares.cloud-redirect.redirectregex.replacement=https://$${1}/remote.php/dav/"

networks:
  web:
    external: true

Die wesentlichen Punkte für die Anbindung an Traefik: