services: nextcloud: image: nextcloud:latest container_name: nextcloud restart: unless-stopped depends_on: db: condition: service_healthy environment: # PHP - PHP_UPLOAD_LIMIT=16G # APACHE2 - APACHE_BODY_LIMIT=0 # MYSQL - MYSQL_HOST=db - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=${MYSQL_PASSWORD} # REDIS - REDIS_HOST=redis - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} # NEXTCLOUD - NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER} - NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD} - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN} 192.168.0.4 - NEXTCLOUD_MIMI_PASSWORD=${NEXTCLOUD_MIMI_PASSWORD} - OVERWRITEPROTOCOL=https - OVERWRITECLIURL=https://${NEXTCLOUD_DOMAIN} - OVERWRITEHOST=${NEXTCLOUD_DOMAIN} - TRUSTED_PROXIES=nginx 172.16.0.0/12 # SMTP - SMTP_HOST=${SMTP_HOST} - SMTP_PORT=${SMTP_PORT} - SMTP_SECURE=${SMTP_SECURE} - SMTP_USER=${SMTP_USER} - SMTP_PASSWORD=${SMTP_PASSWORD} - SMTP_FROM_ADDRESS=${SMTP_FROM_ADDRESS} - SMTP_FROM_DOMAIN=${SMTP_FROM_DOMAIN} # Collabora - COLLABORA_DOMAIN=${COLLABORA_DOMAIN} - LUCAS_EMAIL=${LUCAS_EMAIL} volumes: - ./html:/var/www/html - /data/nextcloud/data:/var/www/html/data # Post-installation hooks - ./hooks/nextcloud-init.sh:/docker-entrypoint-hooks.d/post-installation/nextcloud-init.sh:ro ports: - "8082:80" networks: - default - shared-proxy-services - shared-redis-services db: image: mariadb:11 container_name: nextcloud-db restart: unless-stopped command: - --transaction-isolation=READ-COMMITTED - --log-bin=binlog - --binlog-format=ROW - --slow-query-log=ON - --slow-query-log-file=/var/lib/mysql/slow-query.log - --long-query-time=2 - --innodb-log-file-size=256M environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud - MYSQL_PASSWORD=${MYSQL_PASSWORD} volumes: - ./db:/var/lib/mysql healthcheck: test: [ "CMD-SHELL", "healthcheck.sh --connect --innodb_initialized" ] interval: 10s timeout: 5s retries: 10 start_period: 30s collabora: image: collabora/code expose: - 9980 cap_add: - MKNOD environment: - domain=${NEXTCLOUD_DOMAIN} - VIRTUAL_HOST=${COLLABORA_DOMAIN} - VIRTUAL_PORT=9980 - VIRTUAL_PROTO=https - LETSENCRYPT_HOST=${COLLABORA_DOMAIN} - LETSENCRYPT_EMAIL=${LUCAS_EMAIL} networks: - shared-proxy-services restart: always networks: default: driver: bridge shared-redis-services: external: true shared-proxy-services: external: true