Nextcloud - Docker Compose

Hoy quiero traerte mi docker-compose de Nextcloud 30, lo más completo que tengo, espero que te sirva. (no es para usar en local, aunque puedes modificarlo para ello)

¿Que incluye?

  • Mysql
  • Redis
  • Cron
  • Collabora server
  • AppApi (Necesario para instalar las aplicaciones docker de la tienda)
services:
  nextcloud-db:
    image: mariadb:11.4
    container_name: nextcloud-mariadb
    restart: always
    command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW --log_bin_trust_function_creators=true
    volumes:
      - tu-ruta/db:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=contraseñaFuerte
      - MYSQL_PASSWORD=tuContraseña
      - MYSQL_DATABASE=nombreDeTuBaseDeDatos
      - MYSQL_USER=usuarioDeBaseDeDatos

  nextcloud-app:
    image: nextcloud:30.0.2
    container_name: nextcloud-nextcloud
    restart: always
    ports:
      - 8081:80 # Puedes cambiar el 8081 por uno de tu elección, desde aquí se accede a Nextcloud
    volumes:
      - tu-ruta/nextcloud:/var/www/html
    environment:
      - MYSQL_PASSWORD=tuContraseña
      - MYSQL_DATABASE=nombreDeTuBaseDeDatos
      - MYSQL_USER=usuarioDeBaseDeDatos
      - MYSQL_HOST=nextcloud-db:3306
      - REDIS_HOST=nextcloud-redis
      - PHP_MEMORY_LIMIT=2G
      - PHP_UPLOAD_LIMIT=100G # Límite de tamaño de subida de archivo
      - OVERWRITEPROTOCOL=https
      - OVERWRITEHOST=tu.dominio.com
      - OVERWRITECLIURL=https://tu.dominio.com
      - NEXTCLOUD_TRUSTED_DOMAINS=tu.dominio.com
      - VIRTUAL_HOST=tu.dominio.com
      - TRUSTED_PROXIES=172.17.0.0/16 #Si usas Nginx Proxy Manager - Aquí NO debes poner la IP de Nginx Proxy Manager sino de su red padre (por ejemplo, la ip de "Bridge"). Si no utilizas esto, puedes borrar la línea.
    depends_on:
      - nextcloud-collabora
      - nextcloud-db
      - nextcloud-redis
      - nextcloud-appapi
# Descomenta las siguientes dos líneas si tienes una i-GPU de Intel (i-GPU = GPU integrada)
#    devices:
#      - "/dev/dri:/dev/dri" 

  nextcloud-cron:
    image: nextcloud:30.0.2
    container_name: nextcloud-cron
    restart: always
    volumes:
      - tu-ruta/nextcloud:/var/www/html # Debe coincidir con la ruta de nextcloud-app
    entrypoint: /cron.sh
    depends_on:
      - nextcloud-collabora
      - nextcloud-db
      - nextcloud-redis
      - nextcloud-appapi


  nextcloud-collabora:
    image: collabora/code
    container_name: nextcloud-collabora
    restart: always
    environment:
      - domain=subdominio\\.dominio\\.com # Respeta la estructura, es importante.
      - extra_params=--o:ssl.enable=false --o:ssl.termination=true
      - username=mismoUsuarioDeNextcloud
      - password=mismaContraseñaDeNextcloud
      - dictionaries=es_ES es_AR es_MX en_US
    ports:
      - 9981:9980


  nextcloud-redis:
    image: redis:alpine
    container_name: nextcloud-redis
    restart: always
    volumes:
      - tu-ruta/redis:/data

  nextcloud-appapi:
    image: ghcr.io/cloud-py-api/nextcloud-appapi-dsp:v1.3.2
    container_name: nextcloud-appapi-dsp
    hostname: nextcloud-appapi-dsp
    restart: unless-stopped
    privileged: true
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - NC_HAPROXY_PASSWORD=tuContraseña
      - TIMEOUT_SERVER=1800s