name: nextcloud services: db: image: lscr.io/linuxserver/mariadb:latest container_name: nextcloud_db volumes: - /path/to/nextcloud/data/db:/var/lib/mysql - /path/to/nextcloud/data/db-config:/config environment: - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD} - MYSQL_DATABASE=${MYSQL_DATABASE} - MYSQL_USER=${MYSQL_USER} - MYSQL_PASSWORD=${MYSQL_PASSWORD} - TZ=${TZ} restart: unless-stopped networks: - nextcloud-net redis: image: redis:alpine container_name: nextcloud_redis environment: - "TZ" volumes: - /path/to/nextcloud/data/redis:/data restart: unless-stopped networks: - nextcloud-net # Main Nextcloud container (custom image with SMB + cert trust) nextcloud: build: context: ./nextcloud dockerfile: Dockerfile container_name: nextcloud depends_on: - db - redis volumes: - /path/to/nextcloud/html:/var/www/html - /path/to/nextcloud/html/data:/var/www/html/data - /path/to/nextcloud/html/config:/var/www/html/config - /path/to/nextcloud/html/custom_apps:/var/www/html/custom_apps - /path/to/nextcloud/html/themes:/var/www/html/themes env_file: - ".env" environment: - "TZ" - "DB_TYPE=mysql" - "DB_HOST=db" - "DB_NAME=${MYSQL_DATABASE}" - "DB_USER=${MYSQL_USER}" - "DB_PASSWORD=${MYSQL_PASSWORD}" restart: unless-stopped networks: - nextcloud-net - caddy-net euro-office: build: context: ./euro-office dockerfile: Dockerfile container_name: nextcloud_euro-office restart: unless-stopped ports: - "8080:80" environment: - JWT_ENABLED=true - JWT_SECRET=${ONLYOFFICE_JWT_SECRET} volumes: - /path/to/nextcloud/euro-office/data:/var/lib/euro-office/documentserver - /path/to/nextcloud/euro-office/logs:/var/log/euro-office/documentserver - /path/to/nextcloud/euro-office/config:/etc/euro-office/documentserver networks: - nextcloud-net - caddy-net networks: nextcloud-net: external: true caddy-net: external: true