version: "3"

services:
  nextcloud:
    image: nextcloud:apache
    container_name: nextcloud
    restart: always
    ports:
      - "1869:80"
    networks:
      - nextcloud
      - postgres
      - proxy
    volumes:
      - /docker/nextcloud:/var/www/html
      - /mnt/Storage/Nextcloud:/var/www/html/data
      - /mnt/Storage/Syncthing:/Syncthing
      - /mnt/Storage/Media/Music:/Music
      - /etc/localtime:/etc/localtime:ro
    environment:
      - TZ=Europe/Helsinki
      - REDIS_HOST=redis
      - REDIS_HOST_PASSWORD=123
    depends_on:
      - redis
    labels:
      - "traefik.enable=true"

      - "traefik.http.routers.nextcloud-redirect.entrypoints=http"
      - "traefik.http.routers.nextcloud-redirect.rule=Host(`cloud.korhonen.cc`)"
      - "traefik.http.middlewares.http2https.redirectscheme.scheme=https"
      - "traefik.http.routers.nextcloud-redirect.middlewares=http2https"

      - "traefik.http.routers.nextcloud.entrypoints=https"
      - "traefik.http.routers.nextcloud.rule=Host(`cloud.korhonen.cc`)"
      - "traefik.http.routers.nextcloud.tls=true"
      - "traefik.http.routers.nextcloud.tls.certresolver=http"
      - "traefik.http.routers.nextcloud.service=nextcloud"
      - "traefik.docker.network=proxy"
      - "traefik.http.services.nextcloud.loadbalancer.server.port=80"

  redis:
    image: redis:alpine
    container_name: redis
    networks:
      - nextcloud
    restart: always
    command: redis-server --requirepass 123

  cron:
    image: nextcloud:apache
    container_name: cron
    restart: always
    volumes:
      - /docker/nextcloud:/var/www/html
    entrypoint: /cron.sh
    depends_on:
      - redis

networks:
  nextcloud:
    external: false
  postgres:
    external: true
  proxy:
    external: true
