In dieser Anleitung geht es um die Bereitstellung von ownCloud mit Docker und Traefik. ownCloud war hier die Grundlage für die heute Software Nextcloud.
Inhaltsverzeichnis
1. Grundvoraussetzung
- Docker & Docker Compose v2 (Debian / Ubuntu)
- Traefik v2 – Reverse-Proxy mit CrowdSec einrichten
2. Verzeichnis anlegen
Im ersten Schritt legen wir uns ein Verzeichnis an.
mkdir -p /opt/containers/owncloud
3. Docker Compose erstellen
Nun erstellen wir uns unsere Docker Compose Datei. Dies ist die Grundlage für unser ownCloud. Gebt dazu folgenden Befehl ein:
nano /opt/containers/owncloud/docker-compose.yml
Hier fügt ihr folgendes ein:
version: "3" services: owncloud: image: owncloud/server container_name: owncloud_server restart: unless-stopped depends_on: - mariadb - redis environment: - OWNCLOUD_DOMAIN=owncloud.euredomain.de - OWNCLOUD_DB_TYPE=mysql - OWNCLOUD_DB_NAME=owncloud - OWNCLOUD_DB_USERNAME=owncloud - OWNCLOUD_DB_PASSWORD=owncloud - OWNCLOUD_DB_HOST=mariadb - OWNCLOUD_ADMIN_USERNAME=admin - OWNCLOUD_ADMIN_PASSWORD=superSicher - OWNCLOUD_MYSQL_UTF8MB4=true - OWNCLOUD_REDIS_ENABLED=true - OWNCLOUD_REDIS_HOST=redis - OWNCLOUD_OVERWRITE_CLI_URL=https://owncloud.euredomain.de - OWNCLOUD_OVERWRITE_PROTOCOL=https - OWNCLOUD_OVERWRITE_HOST=owncloud.euredomain.de - OWNCLOUD_TRUSTED_PROXIES=172.18.0.2/16 - OWNCLOUD_DEFAULT_LANGUAGE=de healthcheck: test: ["CMD", "/usr/bin/healthcheck"] interval: 30s timeout: 10s retries: 5 volumes: - ./files:/mnt/data labels: - "traefik.enable=true" - "traefik.http.routers.owncloud.entrypoints=https" - "traefik.http.routers.owncloud.rule=(Host(`owncloud.euredomain.de`))" - "traefik.http.routers.owncloud.tls=true" - "traefik.http.routers.owncloud.tls.certresolver=http" - "traefik.http.routers.owncloud.service=owncloud" - "traefik.http.services.owncloud.loadbalancer.server.port=8080" - "traefik.docker.network=proxy" - "traefik.http.routers.owncloud.middlewares=default@file" networks: - default - proxy mariadb: image: mariadb:10.6 container_name: owncloud_mariadb restart: unless-stopped environment: - MYSQL_ROOT_PASSWORD=owncloud - MYSQL_USER=owncloud - MYSQL_PASSWORD=owncloud - MYSQL_DATABASE=owncloud command: ["--max-allowed-packet=128M", "--innodb-log-file-size=64M"] healthcheck: test: ["CMD", "mysqladmin", "ping", "-u", "root", "--password=owncloud"] interval: 10s timeout: 5s retries: 5 volumes: - ./mysql:/var/lib/mysql networks: - default redis: image: redis:6 container_name: owncloud_redis restart: unless-stopped command: ["--databases", "1"] healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 volumes: - ./redis:/data networks: - default networks: proxy: external: true
Folgendes müsst ihr anpassen:
- OWNCLOUD_DOMAIN an eure Domain anpassen
- traefik.http.routers.owncloud.rule an eure Domain anpassen
- OWNCLOUD_ADMIN_USERNAME einen Nutzernamen vergeben
- OWNCLOUD_ADMIN_PASSWORD ein sicheres Passwort vergeben
- OWNCLOUD_OVERWRITE_CLI_URL anpassen
- OWNCLOUD_OVERWRITE_HOST anpassen
3. Trusted Proxy IP ermitteln
Nun müssen wir noch die IP Adresse von Traefik herausfinden. Gebt dazu folgenden Befehl ein:
docker inspect traefik
Wenn ihr nun ganz nach unten scrollt, seht ihr folgendes:
Bei mir ist die “IPAddress”: 172.18.0.2 und das “IPPrefixLen”: 16
Passt diesen Wert nun entsprechend in eurer ownCloud Docker Compose Datei an:
OWNCLOUD_TRUSTED_PROXIES=172.18.0.2/16
4. ownCloud starten
Dazu gebt ihr folgendes ein:
docker compose -f /opt/containers/owncloud/docker-compose.yml up -d
5. Quellen
- https://owncloud.com/de/
- https://hub.docker.com/_/owncloud
- https://doc.owncloud.com/server/next/admin_manual/installation/docker/