version: '3'

services:
  owncloud:
    image: owncloud/server:{{ owncloud_version }}
    container_name: owncloud
    restart: unless-stopped
    depends_on:
      - db
      - redis
    environment:
      - OWNCLOUD_DOMAIN={{ cloud_url }}
      - OWNCLOUD_DB_TYPE=mysql
      - OWNCLOUD_DB_NAME={{ cloud_db_user }}
      - OWNCLOUD_DB_USERNAME={{ cloud_db_user }}
      - OWNCLOUD_DB_PASSWORD={{ cloud_db_pass }}
      - OWNCLOUD_DB_HOST=db
      - OWNCLOUD_ADMIN_USERNAME={{ cloud_admin_user }}
      - OWNCLOUD_ADMIN_PASSWORD={{ cloud_admin_pass }}
      - OWNCLOUD_MYSQL_UTF8MB4=true
      - OWNCLOUD_REDIS_ENABLED=true
      - OWNCLOUD_REDIS_HOST=redis
    volumes:
      - owncloud:/mnt/data:z
    networks:
      default:
      inverseproxy_shared:
    labels:
      traefik.enable: "true"
      traefik.http.routers.cloud.rule: "Host(`{{ cloud_url }}`)"
      traefik.http.routers.cloud.service: "cloud"
      traefik.http.services.cloud.loadbalancer.server.port: "8080"

  db:
    image: webhippie/mariadb:{{ owncloud_db_version }}
    container_name: owncloud_db
    restart: unless-stopped
    environment:
      - MARIADB_ROOT_PASSWORD={{ cloud_db_root }}
      - MARIADB_USERNAME={{ cloud_db_user }}
      - MARIADB_PASSWORD={{ cloud_db_pass }}
      - MARIADB_DATABASE={{ cloud_db_user }}
      - MARIADB_MAX_ALLOWED_PACKET=128M
      - MARIADB_INNODB_LOG_FILE_SIZE=64M
    volumes:
      - mysql:/var/lib/mysql:z

  redis:
    image: webhippie/redis:latest
    container_name: owncloud_redis
    restart: unless-stopped
    environment:
      - REDIS_DATABASES=1
    volumes:
      - redis:/var/lib/redis:z

networks:
    default:
        internal: true
        driver_opts:
            encrypted: 1
    inverseproxy_shared:
        external: true

volumes:
    owncloud:
    mysql:
    redis: