services: nextcloud-aio-apache: depends_on: nextcloud-aio-notify-push: condition: service_started required: false nextcloud-aio-nextcloud: condition: service_started required: false image: ghcr.io/nextcloud-releases/aio-apache:latest user: "33" init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 ports: - 100.70.0.2:41443:41443 # - ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/tcp # - ${APACHE_IP_BINDING}:${APACHE_PORT}:${APACHE_PORT}/udp environment: - NC_DOMAIN - NEXTCLOUD_HOST=nextcloud-nextcloud - APACHE_HOST=nextcloud-apache - COLLABORA_HOST=nextcloud-collabora - TALK_HOST=nextcloud-talk - APACHE_PORT - ONLYOFFICE_HOST=onlyoffice-documentserver - TZ=${TIMEZONE} - APACHE_MAX_SIZE - APACHE_MAX_TIME=${NEXTCLOUD_MAX_TIME} - NOTIFY_PUSH_HOST=nextcloud-notifypush - WHITEBOARD_HOST=nextcloud-whiteboard - HARP_HOST=nextcloud-harp - AIO_LOG_LEVEL # added 2026-05-15 volumes: - nextcloud_aio_nextcloud:/var/www/html:ro - nextcloud_aio_apache:/mnt/data:rw restart: unless-stopped read_only: true tmpfs: - /var/log/supervisord - /var/run/supervisord - /usr/local/apache2/logs - /tmp - /home/www-data cap_drop: - NET_RAW networks: - nextcloud container_name: nextcloud-apache # nextcloud-aio-database: # image: ghcr.io/nextcloud-releases/aio-postgresql:latest # user: "999" # init: true # healthcheck: # start_period: 0s # test: /healthcheck.sh # interval: 30s # timeout: 30s # start_interval: 5s # retries: 3 # expose: # - "5432" # 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 # shm_size: 268435456 # read_only: true # tmpfs: # - /var/run/postgresql # cap_drop: # - NET_RAW nextcloud-aio-nextcloud: depends_on: # nextcloud-aio-database: # condition: service_started # required: false nextcloud-aio-redis: condition: service_started required: false nextcloud-aio-fulltextsearch: condition: service_started required: false nextcloud-aio-imaginary: condition: service_started required: false image: ghcr.io/nextcloud-releases/aio-nextcloud:latest init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 expose: - "9000" - "9001" volumes: - nextcloud_aio_nextcloud:/var/www/html:rw - ${NEXTCLOUD_DATADIR}:/mnt/ncdata:rw # - ${NEXTCLOUD_MOUNT}:${NEXTCLOUD_MOUNT}:rw - /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro #modified environment: - NEXTCLOUD_HOST=nextcloud-nextcloud - POSTGRES_HOST=postgres # modified - POSTGRES_PORT=5432 - POSTGRES_PASSWORD=${DATABASE_PASSWORD} - POSTGRES_DB=nextcloud # modified - POSTGRES_USER=nextcloud - REDIS_HOST=nextcloud-redis - REDIS_PORT=6379 - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} - APACHE_HOST=nextcloud-apache - APACHE_PORT - NC_DOMAIN - ADMIN_USER=admin - ADMIN_PASSWORD=${NEXTCLOUD_PASSWORD} - NEXTCLOUD_DATA_DIR=/mnt/ncdata - OVERWRITEHOST=${NC_DOMAIN} - OVERWRITEPROTOCOL=https - TURN_SECRET - SIGNALING_SECRET - ONLYOFFICE_SECRET - NEXTCLOUD_MOUNT - CLAMAV_ENABLED - CLAMAV_HOST=nextcloud-aio-clamav - ONLYOFFICE_ENABLED - COLLABORA_ENABLED - COLLABORA_HOST=nextcloud-aio-collabora - TALK_ENABLED - ONLYOFFICE_HOST=onlyoffice-documentserver - UPDATE_NEXTCLOUD_APPS - TZ=${TIMEZONE} - TALK_PORT - IMAGINARY_ENABLED - IMAGINARY_HOST=nextcloud-imaginary - PHP_UPLOAD_LIMIT=${NEXTCLOUD_UPLOAD_LIMIT} - PHP_MEMORY_LIMIT=${NEXTCLOUD_MEMORY_LIMIT} - FULLTEXTSEARCH_ENABLED - FULLTEXTSEARCH_HOST=nextcloud-fulltextsearch - FULLTEXTSEARCH_PROTOCOL=http - FULLTEXTSEARCH_PORT=9200 - FULLTEXTSEARCH_USER=elastic - FULLTEXTSEARCH_INDEX=nextcloud-aio - 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} - INSTALL_LATEST_MAJOR - TALK_RECORDING_ENABLED - RECORDING_SECRET - TALK_RECORDING_HOST=nextcloud-aio-talk-recording - FULLTEXTSEARCH_PASSWORD - REMOVE_DISABLED_APPS - IMAGINARY_SECRET - WHITEBOARD_SECRET - WHITEBOARD_ENABLED - AIO_LOG_LEVEL # added 2026-05-15 stop_grace_period: 600s restart: unless-stopped cap_drop: - NET_RAW networks: - nextcloud - postgres container_name: nextcloud-nextcloud nextcloud-aio-notify-push: image: ghcr.io/nextcloud-releases/aio-notify-push:latest user: "33" init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 expose: - "7867" volumes: - nextcloud_aio_nextcloud:/var/www/html:ro environment: - NEXTCLOUD_HOST=nextcloud-nextcloud - POSTGRES_HOST=postgres - REDIS_HOST=nextcloud-redis - TZ=${TIMEZONE} - AIO_LOG_LEVEL # added 2026-05-15 restart: unless-stopped read_only: true cap_drop: - NET_RAW networks: - nextcloud - postgres container_name: nextcloud-notifypush nextcloud-aio-redis: image: ghcr.io/nextcloud-releases/aio-redis:latest user: "999" init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 expose: - "6379" environment: - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} - TZ=${TIMEZONE} - AIO_LOG_LEVEL # added 2026-05-15 volumes: - nextcloud_aio_redis:/data:rw restart: unless-stopped read_only: true cap_drop: - NET_RAW networks: - nextcloud container_name: nextcloud-redis # nextcloud-aio-onlyoffice: # image: ghcr.io/nextcloud-releases/aio-onlyoffice:latest # init: true # healthcheck: # start_period: 60s # test: /healthcheck.sh # interval: 30s # timeout: 30s # start_interval: 5s # retries: 9 # expose: # - "80" # environment: # - TZ=${TIMEZONE} # - JWT_ENABLED=true # - JWT_HEADER=AuthorizationJwt # - JWT_SECRET=${ONLYOFFICE_SECRET} # volumes: # - nextcloud_aio_onlyoffice:/var/lib/onlyoffice:rw # restart: unless-stopped # # profiles: # # - onlyoffice # cap_drop: # - NET_RAW # networks: # - nextcloud # container_name: nextcloud-onlyoffice nextcloud-aio-imaginary: image: ghcr.io/nextcloud-releases/aio-imaginary:latest user: "65534" init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 expose: - "9000" environment: - TZ=${TIMEZONE} - IMAGINARY_SECRET - AIO_LOG_LEVEL # added 2026-05-15 restart: unless-stopped cap_add: - SYS_NICE cap_drop: - NET_RAW # profiles: # - imaginary read_only: true tmpfs: - /tmp networks: - nextcloud container_name: nextcloud-imaginary nextcloud-aio-fulltextsearch: image: ghcr.io/nextcloud-releases/aio-fulltextsearch:latest init: false healthcheck: start_period: 60s test: /healthcheck.sh interval: 10s timeout: 5s start_interval: 5s retries: 5 expose: - "9200" environment: - TZ=${TIMEZONE} - ES_JAVA_OPTS=${FULLTEXTSEARCH_JAVA_OPTIONS} - bootstrap.memory_lock=false - cluster.name=nextcloud-aio - discovery.type=single-node - logger.level=WARN - http.port=9200 - xpack.license.self_generated.type=basic - xpack.security.enabled=false - FULLTEXTSEARCH_PASSWORD - AIO_LOG_LEVEL # added 2026-05-15 volumes: - nextcloud_aio_elasticsearch:/usr/share/elasticsearch/data:rw restart: unless-stopped # profiles: # - fulltextsearch cap_drop: - NET_RAW networks: - nextcloud container_name: nextcloud-fulltextsearch nextcloud-aio-whiteboard: image: ghcr.io/nextcloud-releases/aio-whiteboard:latest user: "65534" init: true healthcheck: start_period: 0s test: /healthcheck.sh interval: 30s timeout: 30s start_interval: 5s retries: 3 expose: - "3002" tmpfs: - /tmp environment: - TZ=${TIMEZONE} - NEXTCLOUD_URL=https://${NC_DOMAIN} - JWT_SECRET_KEY=${WHITEBOARD_SECRET} - STORAGE_STRATEGY=redis - REDIS_HOST=nextcloud-redis - REDIS_PORT=6379 - REDIS_HOST_PASSWORD=${REDIS_PASSWORD} - BACKUP_DIR=/tmp - AIO_LOG_LEVEL # added 2026-05-15 restart: unless-stopped read_only: true cap_drop: - NET_RAW networks: - nextcloud container_name: nextcloud-whiteboard volumes: nextcloud_aio_apache: name: nextcloud_aio_apache # 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_redis: name: nextcloud_aio_redis nextcloud_aio_nextcloud_data: name: nextcloud_aio_nextcloud_data networks: nextcloud: name: "nextcloud" postgres: name: "postgres" external: true