# Receta Nextcloud

**Nextcloud** es una plataforma de almacenamiento tipo nube de fotos, datos y archivos. permite una gran personalización a través de la instalación de apps o módulos.
Más información en https://nextcloud.com
## INSTALACIÓN SERVICIO
::::success
**Iniciamos creando la plataforma a partir de la receta**
```bash=
abra aplicacion nueva nextcloud
```
**Nos va a realizar preguntas , las líneas que empiezan con ? son la pregunta y con > nuestra respuesta.**
```bash=
? Especifica un 🌐 nombre de dominio (DNS) para la aplicación
> $aplicacion.$huerta.abyaya.la
```
**Creamos los secretos (contraseñas) necesarios y guardamos en algún lugar seguro la información:**
```bash=
abra aplicacion secreto generar $aplicacion.$huerta.abyaya.la --todos
```
**Y desplegamos la aplicación nexcloud!**
```bash=
abra aplicacion desplegar -D $aplicacion.$huerta.abyaya.la
```
::::
Ahora podremos visitar con un navegador web nuestro servicio desplegado en:
https://$aplicacion.$huerta.abyaya.la
**Usuario inicial**
Utilizaremos el usuario "**admin**" y la constraseña que **generamos unos pasos atrás**. Con esto hemos finalizado la instalación de una instancia Nextcloud
---
## CONFIGURACIONES POSTERIORES
:::info
Para acceder al **archivo de configuración** de la instancia que nos proporciona el entorno abra, ejecutamos:
:::
```bash=
abra aplicacion configurar $aplicacion.$huerta.abyaya.la
```
Si bien la receta de Nextcloud hace casi todo por nosotras, aún será necesario hacer pequeños ajustes de configuración por aquí y allá para que nuestra plataforma funcione de la mejor manera. Los pasos siguientes son opcionales pero te recomendamos seguirlos.
___
### 0. Aumentar tamaño de subida de archivos
:::info
Por defento una instancia nextcloud viene configurada para aceptar archivo de un **máximo tamaño de 512M**, si quieres aumentar el tamaño de recepción de archivos, debes hacer lo siguiente:
:::
```bash=
abra aplicacion configurar $aplicacion.$huerta.abyaya.la
```
Adentro del archivo de configuración buscamos por
```PHP_UPLOAD_LIMIT=512MB```
Y lo modificamos al tamaño que necesites, yo lo puse en 20G
```bash=
PHP_MEMORY_LIMIT=1G
PHP_UPLOAD_LIMIT=20G
```
- **Guardamos los cambios** y cerramos el documento
Luego de esto hay que **plegar** y **desplegar** la aplicación
```bash=
abra aplicacion plegar $aplicacion.$huerta.abyaya.la
abra aplicacion desplegar -D $aplicacion.$huerta.abyaya.la
```
:::success
Y veremos en sus configuraciones del sistema que el límite aumentó
:::

___
### 1. Dar de alta una cuenta de correo
:::info
Dentro de una instancia nextcloud necesitamos dar de alta una cuenta de correo, para que pueda **enviar los correos de recuperación de contraseña, avisos de calendario** y otras comunicaciones.
:::
- Primero debemos darle al usuario **admin** un correo para recibir las comunicaciones. Vamos al ícono de usuaria y seleccionamos **Configuración Personal**.

- Luego en **Correo electrónico** agregamos un correo personal al cual tengamos acceso.

- Nos solicitará la **contraseña** de nuestra usuaria **admin**
Ahora que hemos configurado el correo de nuestra usuaria, necesitamos un correo distinto, uno propio de la aplicación de **Nexcloud** para que lo use en sus comunicaciones.
Te recomendamos crear un **correo exclusivo para esta función** y en este caso utilizaremos una cuenta de correo de Disroot.org, donde puedes obtener una cuenta gratuita fácilmente.
- Ahora vamos a **Configuración de administración**

- Y luego a

- En **Servidor de correo electrónico** se completa de la siguiente manera. Recuerda usar el usuario y la contraseña del correo que acabas de crear para esta función.
```bash
Modo de envío: SMTP
Encripción: Ninguno/STARTTLS
De la dirección: correo_nuevo @ disroot.org
Dirección del servidor: disroot.org : 587
Credenciales: correo_nuevo@disroot.org "Contraseña del correo nuevo"
```
Ten encuenta que este ejemplo está hecho con un correo de disroot. Puedes utilizar otro proveedor de correo pero tienes que ajustar los datos. **Usuario, Contraseña, Dirección del servidor y Puerto**.

:::success
- Para comprobar que funciona selecciona **Guardar** y posteriormente **Enviar correo electrónico**. Si todo está bien recibirás un correo de confirmación en el correo del usuario admin.
:::
___
### 2. Activar App de Documentos Colaborativos (OnlyOffice)
:::info
Dentro de una instancia nextcloud podemos tener nuestra propia ofimática Only Office (procesador de texto, planilla, presentaciones, etc) que podemos utilizar colaborativamente y en línea. Para ello debemos seguir los siguientes pasos:
:::
- Primero desplegaremos un OnlyOffice en nuestra huerta
```bash=
abra aplicacion nueva onlyoffice
```
- Escogemos un nombre para la aplicación:
```bash=
? Especifica un 🌐 nombbash=re de dominio (DNS) para la aplicación
$aplicacion.$huerta.abyaya.la
```
- Abrimos su archivo de configuraciones
```bash=
abra aplicacion configurar $aplicacion.$huerta.abyaya.la
```
- Y descomentamos las siguientes líneas para activar al uso del secreto JWT.
```bash=
COMPOSE_FILE=compose.yml:compose.jwt.yml
SECRET_JWT_SECRET_VERSION=v1
```
- Generamos todos los secretos de la aplicación. De los secretos generados es imporate tomar nota de **jwt_secret** ya que lo necesitaremos en un paso posterior
```bash=
abra aplicacion secreto generar $aplicacion.$huerta.abyaya.la --todos
┏━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ NOMBRE ┃ VALOR ┃
┣━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ jwt_secret ┃ lemon-showpiece-harmonica-epidemik-mauva-navigate ┃
┃ db_password ┃ unclad-polony-surcer-rewoke-caldian-uninstall ┃
┗━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
```
- Y desplegamos el OnlyOffice
```bash=
abra aplicacion desplegar -D $aplicacion.$huerta.abyaya.la
```
:::success
Podemos comprobar que funcione la aplicacion de OnlyOffice visitando la web:
https://$aplicacion.$huerta.abyaya.la
:::
A continuación haremos realizaremos configuraciones en nuestra aplicación de **Nextcloud**
```bash=
abra aplicacion configurar $aplicacion.$huerta.abyaya.la
```
- Y descomentamos las siguientes líneas que hacen referencia al servicio. Importante es agregar la dirección web de nuestra aplicación de OnlyOffice recién creada en la línea:
ONLYOFFICE_URL=https://
```bash=
COMPOSE_FILE="$COMPOSE_FILE:compose.onlyoffice.yml"
ONLYOFFICE_URL=https://$aplicacion.$huerta.abyaya.la
APPS="$APPS onlyoffice"
SECRET_ONLYOFFICE_JWT_VERSION=v1
```
- Ahora insertaremos el secreto **jwt_secret** del OnlyOffice en nuestra aplicación de **Nextcloud**. Para ello en el comando reemplazamos **$jwt_secret** por la contraseña que tomamos nota en el paso anterior:
```bash=
abra aplicacion secreto insertar $aplicacion.$huerta.abyaya.la onlyoffice_jwt v1 $jwt_secret
```
- Y finalmente instalamos el plugin de OnlyOffice en nuestra aplicación de **Nextcloud**
```bash=
abra aplicacion ejecutar $aplicacion.$huera.abyaya.la app install_onlyoffice
```
:::success
Ahora vamos a la administración gráfica de nuestra instancia de **Nextcloud** 
y en  y luego en 
Deberíamos ver algo como esto. Si la url y la constraseña **jwt_secret** no aparecen, las agregamos y damos click en **guardar**. Con ello ya se activará la capaciadad de generar documentos colaborativos.

:::
---
### 2. Actualizar todos los plugins o aplicaciones de Nextcloud
:::info
Con el siguiente comando se actualizaran todos los plugins de tu instancia de **Nextcloud**, esto tomará un tiempo en ejecutarse.
:::
```bash=
abra aplicacion ejecutar $aplicacion.$huerta.abyaya.la app run_occ '"app:update --all"'
```
---
### 3. Forzar el idioma de la instancia
:::info
Por defecto nuestra instancia de Nextcloud viene en inglés, y será labor de cada usuaria cambiar al idioma correspondiente. A veces esto puede ser un poco complicado sobre todo para usuarias nuevas. La opción que tenemos es forzar un idioma en toda la plataforma, con ello todas las usuarias tendrán el mismo idioma por defecto, sin posibilidad de cambiarlo.
:::
- Para forzar el idioma español en la instancia, ejecutamos el siguiente comando desde nuestra terminal de trabajo:
```bash=
abra aplicacion ejecutar $aplicacion.$huerta.abyaya.la app run_occ '"config:system:set force_language --value="es""'
```
---
### 4. Encriptación de los archivos
:::info
Para mayor seguridad de la plataforma la instancia de Nextcloud puede **encriptar automáticamente cada archivo que subas**. Tomará más recursos de tu hardware pero aumenta la seguridad de tus usuarias. Para ello puedes revisar el siguiente video a partir del **minuto 39**.
:::
<iframe title="Huertas Digitales: Introducción a la plataforma Nextcloud" width="560" height="315" src="https://wacha.punks.cc/videos/embed/b7fb1c8e-2c4a-4873-9c91-3209867e7729" frameborder="0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups"></iframe>
---
### 5. Personalizar carpetas de inicio
:::info
Cada vez que se crea una usuaria nueva en nuestra instancia de Nextcloud, esta viene con un serie de archivos y carpetas de pruebas. Si no queremos que estas carpetas y archivos aparezcan, o si quieres que aparescan unos de tu elección podemos hacerlo. Sigamos lossiguientes pasos.
:::
- Primero crearemos en el servidor una carpeta llamada `skel` donde pondremos los archivos y carpetas que queremos que tengan las usuarias al iniciar en la plataforma por primera vez. Podemos dejarla vacía y así las usuarias iniciarán sin archivos o carpetas.
ingresamos por ssh a la huerta:
```bash=
ssh $usuaria@$huerta.abyaya.la
```
```bash=
sudo mkdir /var/lib/docker/volumes/$aplicacion_huerta_abyaya_la_nextcloud/_data/skel/
```
- En este momento puedes agregar archivos o carpetas dentro de `skel` si así lo deseas.
Ahora le daremos la propiedad de esa carpeta al usuario `www-data`, que es el que utiliza Nextcloud para funcionar.
```bash=
sudo chown -R www-data:www-data /var/lib/docker/volumes/$aplicacion_huerta_abyaya_la_nextcloud/_data/skel/
sudo chmod -R 755 /var/lib/docker/volumes/$aplicacion_huerta_abyaya_la_nextcloud/_data/skel/
```
- Ahora ejecutaremos el siguiente comando para decirle a la instancia de nextcloud que la carpeta por defecto de inicio para las usuarias nuevas sea la que acabamos de crear (`skel`):
Ojo que en este comando,<code style="background-color:#f5f5f5; padding:2px 8px; color:black;">
<span style="color:red;">$aplicacion</span>.<span style="color:red;">huerta</span>.abyaya.la
</code>aparece dos veces, pero la segunda no está marcado en rojo
```bash=
abra aplicacion ejecutar $aplicacion.$huerta.abyaya.la app run_occ '"config:system:set skeletondirectory --value="/var/lib/docker/volumes/$aplicacion_$huerta_abyaya_la_nextcloud/_data/skel/""'
```
- Con eso ya hemos definido la carpeta de incio, todo lo que ella contenga será con lo que inicie cada usuaria de la instancia.
---