version: "3.8" services: nextcloud-aio-apache: container_name: nextcloud-aio-apache depends_on: - nextcloud-aio-onlyoffice - nextcloud-aio-collabora - nextcloud-aio-talk - nextcloud-aio-nextcloud image: nextcloud/aio-apache:${IMAGE_TAG} ports: - ${APACHE_PORT}:${APACHE_PORT}/tcp environment: - NC_DOMAIN=${NC_DOMAIN} - NEXTCLOUD_HOST=nextcloud-aio-nextcloud - COLLABORA_HOST=nextcloud-aio-collabora - TALK_HOST=nextcloud-aio-talk - APACHE_PORT=${APACHE_PORT} - ONLYOFFICE_HOST=nextcloud-aio-onlyoffice - TZ=${TIMEZONE} - APACHE_MAX_SIZE=${APACHE_MAX_SIZE} - APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME} volumes: - nextcloud_aio_nextcloud:/var/www/html:ro - nextcloud_aio_apache:/mnt/data:rw stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-database: container_name: nextcloud-aio-database image: nextcloud/aio-postgresql:${IMAGE_TAG} volumes: - nextcloud_aio_database:/var/lib/postgresql/data:rw - nextcloud_aio_database_dump:/mnt/data:rw environment: - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=nextcloud_database - POSTGRES_USER=nextcloud - TZ=${TIMEZONE} - PGTZ=${TIMEZONE} stop_grace_period: 1800s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-nextcloud: container_name: nextcloud-aio-nextcloud depends_on: - nextcloud-aio-database - nextcloud-aio-redis - nextcloud-aio-clamav - nextcloud-aio-fulltextsearch - nextcloud-aio-imaginary image: nextcloud/aio-nextcloud:${IMAGE_TAG} volumes: - nextcloud_aio_nextcloud:/var/www/html:rw - ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw - ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw - ${NEXTCLOUD_TRUSTED_CACERTS_DIR}:/usr/local/share/ca-certificates:ro environment: - POSTGRES_HOST=nextcloud-aio-database - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=nextcloud_database - POSTGRES_USER=nextcloud - REDIS_HOST=nextcloud-aio-redis - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} - AIO_TOKEN=${AIO_TOKEN} - NC_DOMAIN=${NC_DOMAIN} - ADMIN_USER=admin - ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD} - NEXTCLOUD_DATA_DIR=/mnt/ncdata - OVERWRITEHOST=${NC_DOMAIN} - OVERWRITEPROTOCOL=https - TURN_SECRET=${TURN_SECRET} - SIGNALING_SECRET=${SIGNALING_SECRET} - ONLYOFFICE_SECRET=${ONLYOFFICE_SECRET} - AIO_URL=${AIO_URL} - NEXTCLOUD_MOUNT=${NEXTCLOUD_MOUNT} - CLAMAV_ENABLED=${CLAMAV_ENABLED} - CLAMAV_HOST=nextcloud-aio-clamav - ONLYOFFICE_ENABLED=${ONLYOFFICE_ENABLED} - COLLABORA_ENABLED=${COLLABORA_ENABLED} - COLLABORA_HOST=nextcloud-aio-collabora - TALK_ENABLED=${TALK_ENABLED} - ONLYOFFICE_HOST=nextcloud-aio-onlyoffice - UPDATE_NEXTCLOUD_APPS=${UPDATE_NEXTCLOUD_APPS} - TZ=${TIMEZONE} - TALK_PORT=${TALK_PORT} - IMAGINARY_ENABLED=${IMAGINARY_ENABLED} - IMAGINARY_HOST=nextcloud-aio-imaginary - PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT} - PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT} - FULLTEXTSEARCH_ENABLED=${FULLTEXTSEARCH_ENABLED} - FULLTEXTSEARCH_HOST=nextcloud-aio-fulltextsearch - PHP_MAX_TIME=${NEXTCLOUD_MAX_TIME} - TRUSTED_CACERTS_DIR=${NEXTCLOUD_TRUSTED_CACERTS_DIR} - STARTUP_APPS=${NEXTCLOUD_STARTUP_APPS} - ADDITIONAL_APKS=${NEXTCLOUD_ADDITIONAL_APKS} - ADDITIONAL_PHP_EXTENSIONS=${NEXTCLOUD_ADDITIONAL_PHP_EXTENSIONS} stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-redis: container_name: nextcloud-aio-redis image: nextcloud/aio-redis:${IMAGE_TAG} environment: - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} - TZ=${TIMEZONE} stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-collabora: container_name: nextcloud-aio-collabora image: nextcloud/aio-collabora:${IMAGE_TAG} profiles: ["collabora"] environment: - aliasgroup1=https://${NC_DOMAIN}:443 - extra_params=--o:ssl.enable=false --o:ssl.termination=true --o:logging.level=warning --o:home_mode.enable=true ${COLLABORA_SECCOMP_POLICY} - dictionaries=${COLLABORA_DICTIONARIES} - TZ=${TIMEZONE} stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-talk: container_name: nextcloud-aio-talk image: nextcloud/aio-talk:${IMAGE_TAG} profiles: ["talk"] ports: - ${TALK_PORT}:${TALK_PORT}/tcp - ${TALK_PORT}:${TALK_PORT}/udp environment: - NC_DOMAIN=${NC_DOMAIN} - TURN_SECRET=${TURN_SECRET} - SIGNALING_SECRET=${SIGNALING_SECRET} - JANUS_API_KEY=${JANUS_API_KEY} - TZ=${TIMEZONE} - TALK_PORT=${TALK_PORT} stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-clamav: container_name: nextcloud-aio-clamav image: nextcloud/aio-clamav:${IMAGE_TAG} profiles: ["clamav"] environment: - TZ=${TIMEZONE} volumes: - nextcloud_aio_clamav:/var/lib/clamav:rw stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-onlyoffice: container_name: nextcloud-aio-onlyoffice image: nextcloud/aio-onlyoffice:${IMAGE_TAG} profiles: ["onlyoffice"] environment: - TZ=${TIMEZONE} - JWT_ENABLED=true - JWT_HEADER=AuthorizationJwt - JWT_SECRET=${ONLYOFFICE_SECRET} volumes: - nextcloud_aio_onlyoffice:/var/lib/onlyoffice:rw stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-imaginary: container_name: nextcloud-aio-imaginary image: nextcloud/aio-imaginary:${IMAGE_TAG} profiles: ["imaginary"] environment: - TZ=${TIMEZONE} stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio nextcloud-aio-fulltextsearch: container_name: nextcloud-aio-fulltextsearch image: nextcloud/aio-fulltextsearch:${IMAGE_TAG} profiles: ["fulltextsearch"] environment: - TZ=${TIMEZONE} - discovery.type=single-node - ES_JAVA_OPTS=-Xms1024M -Xmx1024M volumes: - nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw stop_grace_period: 10s restart: unless-stopped networks: - nextcloud-aio volumes: nextcloud_aio_apache: name: nextcloud_aio_apache nextcloud_aio_clamav: name: nextcloud_aio_clamav nextcloud_aio_database: name: nextcloud_aio_database nextcloud_aio_database_dump: name: nextcloud_aio_database_dump nextcloud_aio_elasticsearch: name: nextcloud_aio_elasticsearch nextcloud_aio_nextcloud: name: nextcloud_aio_nextcloud nextcloud_aio_onlyoffice: name: nextcloud_aio_onlyoffice nextcloud_aio_nextcloud_data: name: nextcloud_aio_nextcloud_data networks: nextcloud-aio: