====== 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