services: nginx: image: nginx:1.27-alpine container_name: nextcloud-nginx restart: unless-stopped depends_on: - app - collabora ports: - "${NGINX_PORT}:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro networks: nextcloud_internal: ipv4_address: 172.30.0.10 db: image: mariadb:11.4 container_name: nextcloud-db restart: unless-stopped command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW environment: MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD} TZ: ${TZ} volumes: - db_data:/var/lib/mysql networks: - nextcloud_internal redis: image: redis:7-alpine container_name: nextcloud-redis restart: unless-stopped command: redis-server --requirepass ${REDIS_PASSWORD} networks: - nextcloud_internal app: image: nextcloud:30-apache container_name: nextcloud-app restart: unless-stopped depends_on: - db - redis expose: - "80" environment: MYSQL_HOST: db MYSQL_DATABASE: ${MYSQL_DATABASE} MYSQL_USER: ${MYSQL_USER} MYSQL_PASSWORD: ${MYSQL_PASSWORD} REDIS_HOST: redis REDIS_HOST_PASSWORD: ${REDIS_PASSWORD} NEXTCLOUD_TRUSTED_DOMAINS: ${NEXTCLOUD_DOMAIN} TRUSTED_PROXIES: ${TRUSTED_PROXIES} OVERWRITEHOST: ${NEXTCLOUD_DOMAIN} OVERWRITEPROTOCOL: https OVERWRITECLIURL: https://${NEXTCLOUD_DOMAIN} PHP_MEMORY_LIMIT: 1024M PHP_UPLOAD_LIMIT: 20G TZ: ${TZ} volumes: - nextcloud_data:/var/www/html networks: - nextcloud_internal collabora: image: collabora/code:latest container_name: collabora restart: unless-stopped expose: - "9980" environment: domain: ${NEXTCLOUD_DOMAIN_REGEX} username: ${COLLABORA_USERNAME} password: ${COLLABORA_PASSWORD} dictionaries: en_US it_IT extra_params: --o:ssl.enable=false --o:ssl.termination=true --o:welcome.enable=false TZ: ${TZ} cap_add: - MKNOD networks: - nextcloud_internal volumes: db_data: nextcloud_data: networks: nextcloud_internal: driver: bridge ipam: config: - subnet: 172.30.0.0/24