====== Instalación de NextCloud en un NAS Synology con Docker ====== 4-dic-2023 * Páginas de internet * [[https://mariushosting.com/synology-how-to-install-nextcloud-using-docker/|Synology: How to Install Nextcloud Using Docker]] * [[https://jakupovic.org/wiki/syno-docker-nextcloud/|Guide for installing Nextcloud on a Synology NAS using docker]] * Videos * [[https://youtu.be/ytqHJqf7j9s|Instalar Nextcloud usando docker compose]] * [[https://youtu.be/V1tA858WiKw|How to Set Up Nextcloud on a Synology NAS! (Tutorial)]] 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: * Tenemos [[doc:tec:sis:docker:dsm:portainer:inicio|instalado Portainer]], asegurándonos de tener instalada la [[https://mariushosting.com/synology-how-to-update-portainer/|última versión]]. * Tenemos un [[https://mariushosting.com/synology-how-to-add-wildcard-certificate/|certificado comodín]] de synology.me. **Pasos a seguir** - Ir a ''Panel de control'' > ''Portal de inicio de sesión'' > Pestaña ''Avanzado'' > clic en ''Proxy inverso'' > clic en ''Crear''. - Aparecerá la ventana de reglas del proxy inverso, debiendo poner: - Pestaña ''General'' - Nombre del proxy inverso: Nextcloud - Fuente - Protocolo: HTTPS - Hostname: nextcloud.mi_nombre.myds.me - Puerto: 443 - Marcar ''Enable HSTS'' - Perfil de control de acceso: No configurado - Destino - Protocolo: HTTP - Hostname: localhost - Puerto: 8082 - Pestaña ''Encabezado personalizado'' - Clic en ''Crear'' > clic en WebSocket > clic en ''Guardar''. - Panel de control > Red > pestaña ''Conectividad'' > marcar ''Habilitar HTTP/2'' > clic en ''Aplicar''. - Panel de control > Seguridad > pestaña ''Avanzado'' > marcar ''Habilitar compresión HTTP'' > clic en ''Aplicar''. - Ir a File Station y abrir la carpeta acoplable de docker. Dentro crear una carpeta llamada ''nextcloud''. **No usar mayúsculas** - Crear dentro de esa carpeta ''nextcloud'' las siguientes carpetas * ''config'' * ''custom_apps'' * ''data'' * ''db'' * ''html'' * ''redis'' * ''themes'' - Descargar el fichero ''[[https://mariushosting.synology.me/sharing/O0Btc8d6Q|my.cnf]]'' y copiarlo dentro de la carpeta ''db''. - Concretar permisos de lectura y escritura en la carpeta ''nextcloud'' que se creó. Para ello: - Hacer clic derecho en ella desde ''File Station'' e ir a ''Propiedades'' > Pestaña ''Propiedades'' - Pestaña ''Permisos'' > clic en ''Opciones avanzadas'' > clic en ''Hacer explícitos los permisos heredados'' - Seleccionar ''Todos (Everyone)'' > pestaña ''Editar'' > Marcar todos los permisos de lectura y escritura > clic en ''Finalizado'' - A continuación, en la ventana actual marcar ''Aplicar a esta carpeta, subcarpetas y archivos'' > clic en ''Guardar'' - Iniciar sesión en Portainer. En la barra lateral izquierda de Portainer, hacer clic en ''Stacks'' > clic en ''+ Add stack'' - En el campo Nombre: ''nextcloud'' - 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 [[https://timezone.mariushosting.com/|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. - 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