Instalación de NextCloud en un NAS Synology con Docker

Nextcloud es un conjunto de software cliente-servidor para crear y utilizar servicios de alojamiento de archivos. Nextcloud cambió recientemente su nombre a Nextcloud Hub 6 . Es gratuito y de código abierto, lo que significa que cualquiera puede instalarlo y operarlo en sus propios dispositivos de servidor privados. En esta guía paso a paso, mostraremos cómo instalar Nextcloud Hub 6 en el Synology NAS usando Docker & Portainer.

Premisas. Suponemos que:

Pasos a seguir

  1. Ir a Panel de control > Portal de inicio de sesión > Pestaña Avanzado > clic en Proxy inverso > clic en Crear.
  2. Aparecerá la ventana de reglas del proxy inverso, debiendo poner:
    1. Pestaña General
      1. Nombre del proxy inverso: Nextcloud
      2. Fuente
        1. Protocolo: HTTPS
        2. Hostname: nextcloud.mi_nombre.myds.me
        3. Puerto: 443
        4. Marcar Enable HSTS
        5. Perfil de control de acceso: No configurado
      3. Destino
        1. Protocolo: HTTP
        2. Hostname: localhost
        3. Puerto: 8082
    2. Pestaña Encabezado personalizado
      1. Clic en Crear > clic en WebSocket > clic en Guardar.
  3. Panel de control > Red > pestaña Conectividad > marcar Habilitar HTTP/2 > clic en Aplicar.
  4. Panel de control > Seguridad > pestaña Avanzado > marcar Habilitar compresión HTTP > clic en Aplicar.
  5. Ir a File Station y abrir la carpeta acoplable de docker. Dentro crear una carpeta llamada nextcloud. No usar mayúsculas
  6. Crear dentro de esa carpeta nextcloud las siguientes carpetas
    • config
    • custom_apps
    • data
    • db
    • html
    • redis
    • themes
  7. Descargar el fichero my.cnf y copiarlo dentro de la carpeta db.
  8. Concretar permisos de lectura y escritura en la carpeta nextcloud que se creó. Para ello:
    1. Hacer clic derecho en ella desde File Station e ir a Propiedades > Pestaña Propiedades
    2. Pestaña Permisos > clic en Opciones avanzadas > clic en Hacer explícitos los permisos heredados
    3. Seleccionar Todos (Everyone) > pestaña Editar > Marcar todos los permisos de lectura y escritura > clic en Finalizado
    4. A continuación, en la ventana actual marcar Aplicar a esta carpeta, subcarpetas y archivos > clic en Guardar
  9. Iniciar sesión en Portainer. En la barra lateral izquierda de Portainer, hacer clic en Stacks > clic en + Add stack
  10. En el campo Nombre: nextcloud
  11. En el editor web copiar y pegar el siguiente código del script:
    version: '3.9'
    services:
      mariadb:
        container_name: Nextcloud-DB
        image: mariadb:jammy
        security_opt:
          - no-new-privileges:true
        user: 1026:100
        command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW --innodb-read-only-compressed=OFF
        volumes:
          - /volume1/docker/nextcloud/db:/var/lib/mysql:rw
          - /volume1/docker/nextcloud/db:/etc/mysql/conf.d:rw
        environment:
          - MYSQL_ROOT_PASSWORD=rootpass
          - MYSQL_PASSWORD=pepedato
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - TZ=Europe/Madrid
        restart: on-failure:5
          
      redis:
        image: redis
        container_name: Nextcloud-REDIS
        hostname: nextcloudredis
        user: 1026:100
        healthcheck:
         test: ["CMD-SHELL", "redis-cli ping || exit 1"]
        volumes:
          - /volume1/docker/nextcloud/redis:/data:rw
        environment:
          TZ: Europe/Madrid
        restart: on-failure:5
          
      nextcloud:
        container_name: Nextcloud
        ports:
          - 8082:80
        depends_on:
          mariadb:
           condition: service_started
          redis:
           condition: service_healthy
        environment:
          - REDIS_HOST=nextcloudredis
          - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.yourname.synology.me 192.168.1.18
          - TRUSTED_PROXIES=nextcloud.yourname.synology.me 192.168.1.18
          - OVERWRITEHOST=nextcloud.yourname.synology.me
          - OVERWRITEPROTOCOL=https
          - MYSQL_PASSWORD=pepedato
          - MYSQL_DATABASE=nextcloud
          - MYSQL_USER=nextcloud
          - MYSQL_HOST=mariadb
        healthcheck:
         test: curl -f http://localhost:80/ || exit 1
        volumes:
          - /volume1/docker/nextcloud/html:/var/www/html:rw
          - /volume1/docker/nextcloud/custom_apps:/var/www/html/custom_apps:rw
          - /volume1/docker/nextcloud/config:/var/www/html/config:rw
          - /volume1/docker/nextcloud/data:/var/www/html/data:rw
          - /volume1/docker/nextcloud/themes:/var/www/html/themes:rw
        image: nextcloud
        restart: on-failure:5
        
      cron:
       image: nextcloud:apache
       container_name: Nextcloud-CRON
       restart: always
       volumes:
         - /volume1/docker/nextcloud/config:/var/www/html/config:rw
         - /volume1/docker/nextcloud/html:/var/www/html:rw
         - /volume1/docker/nextcloud/custom_apps:/var/www/html/custom_apps:rw
         - /volume1/docker/nextcloud/data:/var/www/html/data:rw
       entrypoint: /cron.sh
       depends_on:
        mariadb:
           condition: service_started
        redis:
           condition: service_started
    

    Donde:

    • En la línea user: 1026:100 1026 is my personal UID value and 100 is my personal GID value. You have to type in your own values.
    • En la línea TZ: Europe/Madrid se pondrá la zona horaria de donde estemos.
    • En las líneas MYSQL_PASSWORD=pepedato, pepedato es un ejemplo de password.
    • En las líneas
      • - NEXTCLOUD_TRUSTED_DOMAINS=nextcloud.yourname.synology.me 192.168.1.18
      • - TRUSTED_PROXIES=nextcloud.yourname.synology.me 192.168.1.18
      • - OVERWRITEHOST=nextcloud.yourname.synology.me
      • nextcloud.yourname.synology.me es un ejemplo de nuestra dirección URL para manejar NextCloud.
      • 192.168.1.18 es un ejemplo de la IP local de nuestro NAS, y va separada por un espacio de la dirección URL.
  12. Nos desplazamos hacia abajo en la página hasta que ver el botón llamado Implementar la pila, Deploy the stack > Clic en él. El proceso de instalación puede llevar varios minutos, dependerá de la velocidad de la conexión a Internet. Si todo va bien, veremos el mensaje Success, Stack implementado correctamente en la parte superior derecha de la pantalla. FIXME
  • doc/tec/sis/docker/dsm/nextcloud/inicio.txt
  • Última modificación: 2024/04/18 11:34
  • por fepg