|
|
|
@@ -0,0 +1,97 @@
|
|
|
|
|
services:
|
|
|
|
|
nextcloud-db:
|
|
|
|
|
image: mariadb:10.11
|
|
|
|
|
container_name: nextcloud-db
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW
|
|
|
|
|
environment:
|
|
|
|
|
MYSQL_ROOT_PASSWORD: "{{ nextcloud_db_root_password }}"
|
|
|
|
|
MYSQL_DATABASE: nextcloud
|
|
|
|
|
MYSQL_USER: nextcloud
|
|
|
|
|
MYSQL_PASSWORD: "{{ nextcloud_db_password }}"
|
|
|
|
|
volumes:
|
|
|
|
|
- {{ nextcloud_data_dir }}/db:/var/lib/mysql
|
|
|
|
|
networks:
|
|
|
|
|
- internal
|
|
|
|
|
logging:
|
|
|
|
|
driver: gelf
|
|
|
|
|
options:
|
|
|
|
|
gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}"
|
|
|
|
|
tag: "nextcloud-db"
|
|
|
|
|
|
|
|
|
|
nextcloud-redis:
|
|
|
|
|
image: redis:alpine
|
|
|
|
|
container_name: nextcloud-redis
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
networks:
|
|
|
|
|
- internal
|
|
|
|
|
|
|
|
|
|
nextcloud:
|
|
|
|
|
image: nextcloud:{{ nextcloud_version }}
|
|
|
|
|
container_name: nextcloud
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
depends_on:
|
|
|
|
|
- nextcloud-db
|
|
|
|
|
- nextcloud-redis
|
|
|
|
|
environment:
|
|
|
|
|
MYSQL_HOST: nextcloud-db
|
|
|
|
|
MYSQL_DATABASE: nextcloud
|
|
|
|
|
MYSQL_USER: nextcloud
|
|
|
|
|
MYSQL_PASSWORD: "{{ nextcloud_db_password }}"
|
|
|
|
|
REDIS_HOST: nextcloud-redis
|
|
|
|
|
NEXTCLOUD_ADMIN_USER: "{{ nextcloud_admin_user }}"
|
|
|
|
|
NEXTCLOUD_ADMIN_PASSWORD: "{{ nextcloud_admin_password }}"
|
|
|
|
|
NEXTCLOUD_TRUSTED_DOMAINS: "{{ nextcloud_domain }}"
|
|
|
|
|
OVERWRITEPROTOCOL: https
|
|
|
|
|
OVERWRITECLIURL: "https://{{ nextcloud_domain }}"
|
|
|
|
|
SMTP_HOST: "{{ smtp_host }}"
|
|
|
|
|
SMTP_PORT: "{{ smtp_port }}"
|
|
|
|
|
SMTP_NAME: "{{ smtp_user }}"
|
|
|
|
|
SMTP_PASSWORD: "{{ smtp_password }}"
|
|
|
|
|
MAIL_FROM_ADDRESS: "noreply"
|
|
|
|
|
MAIL_DOMAIN: "{{ base_domain }}"
|
|
|
|
|
OBJECTSTORE_S3_HOST: minio
|
|
|
|
|
OBJECTSTORE_S3_PORT: 9000
|
|
|
|
|
OBJECTSTORE_S3_SSL: "false"
|
|
|
|
|
OBJECTSTORE_S3_BUCKET: "{{ minio_nextcloud_bucket }}"
|
|
|
|
|
OBJECTSTORE_S3_KEY: "{{ minio_nextcloud_access_key }}"
|
|
|
|
|
OBJECTSTORE_S3_SECRET: "{{ minio_nextcloud_secret_key }}"
|
|
|
|
|
OBJECTSTORE_S3_USEPATH_STYLE: "true"
|
|
|
|
|
volumes:
|
|
|
|
|
- {{ nextcloud_data_dir }}/data:/var/www/html
|
|
|
|
|
labels:
|
|
|
|
|
- "traefik.enable=true"
|
|
|
|
|
- "traefik.http.routers.nextcloud.rule=Host(`{{ nextcloud_domain }}`)"
|
|
|
|
|
- "traefik.http.routers.nextcloud.tls=true"
|
|
|
|
|
- "traefik.http.routers.nextcloud.tls.certresolver=letsencrypt"
|
|
|
|
|
- "traefik.http.services.nextcloud.loadbalancer.server.port=80"
|
|
|
|
|
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.permanent=true"
|
|
|
|
|
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.regex=https://(.*)/.well-known/(?:card|cal)dav"
|
|
|
|
|
- "traefik.http.middlewares.nextcloud-redirect.redirectregex.replacement=https://$${1}/remote.php/dav"
|
|
|
|
|
- "traefik.http.routers.nextcloud.middlewares=nextcloud-redirect"
|
|
|
|
|
networks:
|
|
|
|
|
- internal
|
|
|
|
|
- {{ sovereign_network_name }}
|
|
|
|
|
logging:
|
|
|
|
|
driver: gelf
|
|
|
|
|
options:
|
|
|
|
|
gelf-address: "udp://{{ graylog_host }}:{{ graylog_gelf_port }}"
|
|
|
|
|
tag: "nextcloud"
|
|
|
|
|
|
|
|
|
|
nextcloud-cron:
|
|
|
|
|
image: nextcloud:{{ nextcloud_version }}
|
|
|
|
|
container_name: nextcloud-cron
|
|
|
|
|
restart: unless-stopped
|
|
|
|
|
volumes:
|
|
|
|
|
- {{ nextcloud_data_dir }}/data:/var/www/html
|
|
|
|
|
entrypoint: /cron.sh
|
|
|
|
|
depends_on:
|
|
|
|
|
- nextcloud-db
|
|
|
|
|
- nextcloud-redis
|
|
|
|
|
networks:
|
|
|
|
|
- internal
|
|
|
|
|
|
|
|
|
|
networks:
|
|
|
|
|
internal:
|
|
|
|
|
{{ sovereign_network_name }}:
|
|
|
|
|
external: true
|