Como crear un servidor Nextcloud

From La wiki de la privacidad
Jump to navigation Jump to search

Preparación e Instalación

En esta guía veremos como instalar Nextcloud 18.0 en una Raspberry Pi 4 con Ubuntu Server 18.04LTS o 19.10, además aprenderemos muchas nuevas cosas sobre Linux si somos usuarios noveles. Este proceso es exactamente igual en cualquier dispositivo, aún que podría contener ciertas variaciones según la “distro” o futuras versiones.

Deberemos tener una instalación de Ubuntu Server en una Raspberry Pi 4 o en otro dispositivo para poder seguir correctamente esta guía. Supondré que esto ya esta hecho. Si no sabes como conseguir esto consulta: Esta página. Encontrarás la descarga, y más abajo las instrucciones de instalación.

Debes saber que esta es una versión ESPECIFICA de Ubuntu Server para Raspberry Pi 3 y 4. Si lo estás instalando en otro dispositivo descarga la versión correspondiente des de la página oficial de Ubuntu.

Una vez dentro de nuestro servidor (¡Todos estos comandos se ejecutan en la terminal del servidor!), ya sea por SSH o Localmente (conectando la Raspberry a una pantalla y controlarla con un teclado, por ejemplo), actualizaremos todos los paquetes. Esto puede tardar un rato según nuestro internet. Deberemos ejecutar los siguientes comandos:

CADA LÍNEA ES UN COMANDO DIFERENTE. EJECUTAR LINEA POR LINEA EN LA TERMINAL

sudo apt update
sudo apt upgrade

El comando sudo nos eleverá nuestros privilegios a los del usuario root (el usuario administrador). Apt es una aplicación usada para gestionar los paquetes en distribuciones basadas en Debian, como Ubuntu. El comando update actualiza y busca novedades en los repositorios. El comando upgrade instala estas nuevas actualizaciones encontradas.

A continuación empezaremos a instalar todos los programas que Nextcloud necesita para funcionar. Esto lo haremos usando apt también y su instrucción install, que busca en los repositorios disponibles e instala los paquetes. Se puede usar indistintamente apt y apt-get. Aún que apt es la versión nueva para gestionar los paquetes y es más informativa.

sudo apt install apache2 mariadb-server php7.3 libapache2-mod-php7.3
sudo apt install php7.3-zip php7.3-xml php7.3-gd php7.3-json php7.3-mysql php7.3-curl php7.3-mbstring
sudo apt install sqlite php7.3-sqlite3 php7.3-intl php-imagick php7.3-xml php7.3-zip wget

Una vez instalados todos los paquetes, vamos a reiniciar apache2. Apache será el software que usará nuestro servidor web para funcionar y servir Nextcloud.

sudo service apache2 restart

Ahora ya si que si. Vamos a instalar Nextcloud. Para esto será necesario descargar el archivo .zip de la página oficial de Nextcloud. Tenemos dos opciones: descargarlo a través de su web en un ordenador y luego mandarlo a través de scp al servidor (usa esta opción solo si quieres aprender sobre scp buscando en internet). O usar una forma más comoda y senzilla que es wget o curl. Estos dos programas nos permiten descargar contenido de internet a través de la terminal a partir de una url. Para hacerlo con wget debemos, estando en el directorio home (ejectuar pwd para ver en qué directorio nos encontramos y verificar que estamos en /home/ubuntu [o el usuario que sea]) ejecutar:

wget https://download.nextcloud.com/server/releases/nextcloud-18.0.0.zip

En este caso estamos descargando la versión 18.0.0, la ultima en el momento de escribir esto. Es posible que exista una versión más nueva. Puedes compbrobarlo en: Esta página

Ahora deberemos extraer el paquete .zip que acabamos de descargar. Para hacer eso deberemos usar la herramienta unzip. Es muy posible que debamos instalar esta herramienta:

sudo apt install unzip
unzip nextcloud-x.y.z.zip

Esto nos debería haber creado una carpeta en el directorio home. Esta carpeta se llama nextcloud y contiene la instalación de nextcloud lista para su uso. Podemos comprobar que esta carpeta ha sido creada con el comando ls que sirve para listar el directorio actual (o otros directorios si los especificamos con ls /path/to/dir).

Una vez verificado que la carpeta nextcloud ha sido creada, debemos copiar la carpeta en la raíz del directorio de nuestro servidor web, para poder acceder a este. Para esto usaremos el compando cp (copy). El comando cp sirve para copiar archivos y carpetas, pero debes saber que para copiar carpetas (directorios) deberemos usar el “flag” (Así se le llaman a las opciones especificadas con “-” a continuación de un comando) -r. Este flag permite copiar un directorio de forma recursiva (con todos sus contenidos internos). Nunca podremos copiar un directorio sin el flag “-r” ya que en GNU/Linux un directorio siempre contiene dos archivos ocultos: uno que lo redirecciona a él mismo (".") y otro que lo redirecciona a su carpeta padre (".."). Podemos ver esto ejecutando "ls -al" en un directorio, esto nos permitirá ver los archivos ocultos (en GNU/Linux un fichero oculto empieza por ".", es decir ".fichero.txt" seria un ficher txt oculto). Por ese motivo, un directorio aún que esté vacio, va a necesitar una copia recursiva. Ejecutaremos:

cp -r nextcloud /var/www/html

Ya tenemos Nextcloud instalado y listo, pero antes faltan algunas cosas. Ahora debemos crear la carpeta dónde se guardarán nuestros datos. Aquí no será donde almacenaremos los datos definitivamente, ya que en una SD no es el lugar más adecuado ni tendríamos espacio suficiente (La raspberry precisa instalar su SO en una tarjeta SD y normalmente son de 16G o 32G), además estaria contenido en el directorio web y esto es menos seguro. Más adelante en esta misma guía se cubre como trasladar la carpeta de datos a un disco duro externo. Para crear una carpeta en GNU/Linux usamos el comando mkdir (Make directory).

sudo mkdir var/www/html/nextcloud/data

Ahora debemos cambiar los permisos de las carpetas para que el usuario que controla el servidor y que es controlado por apache (www-data) pueda leer, escribir y ejecutar (los 3 permisos de Linux). El permiso leer permite ver los archivos, el permiso escribir permite modificar estos archivos y el de ejecutar permite ejecutar archivos ejecutables (programas, scripts...). Para los directorios los dos primeros funcionan igual: leer para listar los directorios (ls) y escribir para crear archivos y borrarlos. El de ejecución permite el acceso al directorio ya que los directorios son tratados como archivos (especiales) ejecutables. Para cambiar los permisos debemos hacerlo con la cuenta de administrador o root (usaremos sudo), y el comando que permite hacer el cambio es chmod.

chmod funciona de la siguiente forma: despúes del comando deberemos especificar los permisos para el propietario, los permisos para el grupo (grupo usuarios, administradores...) que pertenece el archivo y finalmente los permisos para otros que serían todos los usuarios que no están en el grupo del archivo ni son propietarios. Esto se puede especificar de varias formas. Al ser 3 categorias de permisos (owner, group y others) y 3 permisos (lectura, escritura y ejecució o r, w, x) se especifica con 9 bits (tres por categoria). Cada bit del grupo de 3 especifica un permiso siendo: rwx y cada grupo de 3 bits especifica una categoria (propietario, grupo y otros). Por ejemplo:

111 101 000 = El propietario tiene todos los permisos (rwx). El grupo tiene el permiso de lectura y ejecución (r-x) y los "otros" no tienen ningún permiso (---).

Este número (111 101 000) al estar en binario, podemos traducirlo a decimal. Se traduce caga grupo de 3 a decimal y quedaría como: 111=7 101=5 000=0. Es decir, estos permisos en decimal serían 7 5 0.

Ahora que ya sabemos un poco más vamos a dar los permisos correctos a la carpeta de datos:

sudo chmod 750 /var/www/html/nextcloud/data

También debemos cambiar el propietario de la carpeta donde se encuentra nextcloud, ya que lo hemos movido como el usuario root y debe pertenecer al usuario www-data (el usuario del servidor). Para cambiar el propietario se usa el comando chown. El flag “-R” se usa, como en cp, para hacerlo recursivamente para todos los directorios, archivos y subdirectorios. A continuación especificamos nuevopropietario:nuevogrupo (www-data:www-data) y finalmente el directorio en cuestión:

sudo chown -R www-data:www-data /var/www/html/nextcloud/


Nextcloud ya está listo para empezar a usarse. Pero primero deberemos configurar la cuenta de administrador. Es importante que, si piensas en hacer público el acceso a Nextcloud (usarlo des de fuera de un internet local), uses una contraseña fuerte. Apúntala porque es importante. No te olvides de ella.

Para hacer esto primero debemos descubrir la dirección IP de nuestro servidor. Para esto en la terminal vamos a escribir:

ip addr

Esto nos mostrará las interfaces (wifi, ethernet y loopback) de nuestro dispositivo. Normalmente la interfaz ethernet se llama "eth0". Debemos mirar la que está conectada a internet (si estamos usando wifi o cable). Allí buscaremos nuestra IP. Tendrá una forma parecida a “192.169.x.x”. Por ejemplo un resultado de ejecutar ip addr en la terminal sería el siguiente:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
   link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
   inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
   inet6 ::1/128 scope host 
      valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
   link/ether --:a6:--:50:--:dd brd ff:ff:ff:ff:ff:ff
   inet 192.168.1.30/24 brd 192.168.1.255 scope global eth0
      valid_lft forever preferred_lft forever
   inet6 fe80::dea6:32ff:fe50:11dd/64 scope link 
      valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
   link/ether dc:--:--:--:--:de brd ff:ff:ff:ff:ff:ff

En negrita he marcado la dirección ip, en mi caso, de la Raspberry Pi. Yo, estoy conectado por cable al router, por lo que mi interfaz es eth0.

Ahora des de un navegador cualquiera navegaremos a la dirección:

192.168.x.x/nextcloud

Ahora se te dará la bienvenida en una pantalla azul, aquí tienes que escribir el nombre de usuario y la contraseña que pretendes utilizar para la cuenta de administrador. Una vez satisfecho, pulsa el botón "Finalizar la configuración", ten en cuenta que esto puede tardar varios minutos en completarse.

¡Felicidades ya tienes Nextcloud configurado y listo para usar localmente!

Configuraciones posteriores a la instalación

Aquí se explican algunas configuraciones posteriores, se aplican algunas mejoras y se solucionan algunos errores.

Configurar un almacenamiento externo

Para esto deberás usar un disco duro externo. Recomendablemente tendría que ser uno de bajas revoluciones ya que tienen una vida útil mas larga. Para esto debe ser un disco duro dedicado a servidor (NAS) por ejemplo. Aúnque tampoco deberías tener problemas por usar otros discos duros.

-- A continuación se explica como particionar un disco, si eres novel en Linux esto es muy importante que lo leas ya que te será muy util. Si ya tienes integrado y entiendes el sistema de particiones, montado, dispositivos, etc de Linux puedes saltartelo --

Preparación del disco

Primero deberemos enchufar nuestro disco duro en la Raspberry o dispositivo. Esperaremos unos 5 segundos y miraremos si el dispositivo ha sido detectado. Esto lo haremos con el comando:

lsblk

Este comando va a darnos una lista de los dispositivos que tenemos conectados. En Linux los Discos duros y USB que enchufamos se les llama dispositivos (devices). Los dispositivos se situan en /dev/sdX dónde X puede ser (a, b, c…, z, aa, bb…, zz) a medida que vamos conectando. Así que deberíamos ver un dispositivo /dev/sdX con una capacidad en Gigas igual a la del dispositivo que hemos enchufado en esta lista. Debemos anotar o recordar dónde se situa este dispositivo: su /dev/sdX.

Una partición contiene un sistema de ficheros. Es decir, podemos ver un dispositivo como un almacén vacío, sin armarios. Una partición sería un armario, pero estos armarios no tienen nada para guardar y clasificar las cosas dentro. El sistema de ficheros serían los estantes y compartimentos dentro del armario que finalmente nos permitirian guardar cosas.

Además en GNU/Linux todo cuelga de la carpeta raíz (root) que tiene el nombre de: /. La carpeta raíz contiene todo el esquema y jerarquía de directorios del sistema. Todo lo que no se encuentre dentro de esta jerarquía (colgante de la raíz) no será visible. Para visualizar la jerarquía a la que me refiero, consulta esta imágen (que también puedes ver al final de esta explicación). Cuando conectamos un dispositivo (Disco duro, USB…) este no se muestra en nuestra jerarquía: no está integrado dentro de

/ y por lo tanto no lo podemos ver. Para verlo deberemos montar este dispositivo en un punto dentro de nuestra carpeta raíz (punto de montaje o mountpoint). Básicamente lo que hacemos al montar es coger el sistema de ficheros de una partición (/dev/sdX1) del dispositivo (/dev/sdX) y la integramos dentro de la jerarquía de nuestra carpeta raíz. 

Esto puede resultar un poco lioso, pero es esencial entender estos conceptos para entender como funcionan los dispositivos externos en GNU/Linux. Voy a resumir:

Un dispositivo es un almacén vacio. Para poder usarlo debe tener almenos una partición (que puede ocupar el total su tamaño), es decir debemos meter al menos un armario dentro, que puede ser gigante, para poder usar este almacén. Estas particiones (o partición) por si solas no sirven para nada, necesitan tener un sistema de ficheros. El sistema de ficheros especifica como se guardarán, modificarán y borrarán los archivos. Es decir, debemos meter estantes y compartimentos dentro del armario para poder usarlo. Además esta partición y su sistema de archivos, para ser accesible des de nuestro sistema de archivos, es necesario que sea montada (Debemos montar el armario y sus estantes ya que sinó no podremos usarlos). Es decir debemos integrar esta partición y su sistema de ficheros dentro de la jerarquía de nuestra carptea raíz para poder ver sus contenidos. Esto último podemos verlo como si cogieramos el sistema de ficheros de la partición del dispositivo y lo integrasemos dentro de nuestro sistema de ficheros basado en la carpeta raíz.

Hirearchy.png

Es posible que si tu disco viene particionado, al ejecutar lsblk veas un esquema debajo del dispostivio /dev/sdX con /dev/sdX[1-4]: estas son las particiones del disco. Si ves que tu disco tiene una partición, y que en la columna "Mountpoint" se especifica alguna ruta (es la ruta, dentro de la carpeta raíz donde hemos montado el sistema de ficheros de la partición para poder verlo) como en el ejemplo (negrita):

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 14,6G  0 disk 
└─sda1        8:1    0 14,6G  0 part /ruta/al/punto-de-montaje

Esto significa que la partición está montada en ese mountpoint (es probable que la partición no esté montada y por lo tanto no tenga mountpoint, entonces el siguiente paso no es necesario). Si es así, será necesario desmontar la partición para los siguietes pasos. Para desmontar usaremos el siguiente comando (en mi caso usaré /dev/sda1).

sudo umount /dev/sda1

Una vez entendido esto, vamos a borrar cualquier partición que tenga nuestro disco (¡Perderemos los datos!) y crearemos una nueva partición dentro de nuestro disco (dispositivo). Esto lo hacemos para entender esto que acabamos de explicar. Para modificar, crear y borrar particiones de un disco se usa la herramienta fdisk. Esto en un principio puede dar un poco de miedo, pero es muy sencilla en realidad.

Es importante notar la diferencia entre dispositivo (el almacén en si: /dev/sdX) y la partición (los armarios: /dev/sdX1...5).

Así que ejecutaremos:

sudo fdisk /dev/sdX

Estamos ejecutando el comando fdisk sobre el dispositivo (¡No la partición!) /dev/sdX. Esto nos llevará a la interfaz de consola de fdisk. Fdisk funciona a través de instrucciones que son letras. La letra "m" nos mostrará un menú de ayuda con todas las instrucciones. Esto es lo primero que deberíamos hacer siempre en cualquier nuevo programa. Ver las ayuda o el manual (usando "man <comando>").

Para empezar, vamos a ver la lista de particiones del disco con la letra "p" (partitions). Esto nos sacará varias líneas de información sobre el disco primero (asegurate con esto que estas trabajando con el disco que toca), y al final las particiones. Si no tenemos particiones no nos aparecerá nada. El idioma depende del idioma del sistema. Si tenemos alguna partición veremos algo tal que así:

Disco /dev/sdb: 14,61 GiB, 15669919744 bytes, 30605312 sectores
Modelo de disco: Cruzer Blade    
Unidades: sectores de 1 * 512 = 512 bytes
Tamaño de sector (lógico/físico): 512 bytes / 512 bytes
Tamaño de E/S (mínimo/óptimo): 512 bytes / 512 bytes
Tipo de etiqueta de disco: dos
Identificador del disco: 0x00000000
Disposit.  Inicio Comienzo    Final Sectores Tamaño Id Tipo
/dev/sdb1               32 30605311 30605280  14,6G 83 Linux

En este caso tengo una partición en mi disco USB (que estoy usando para ilustrar esta guía). La partición es /dev/sdb1, es decir la Partición 1 del dispositivo /dev/sdb. Al final de la línea en negrita, vemos el "Tipo" esto nos marca qué sistema de ficheros estamos usando.

Entonces, ahora procederemos a eliminar esta partición. Para esto usaremos la letra "d" (delete). En caso de tener una sola partición la borrará automáticamente. Si tenemos más deberemos especificar qué particion (0-X) queremos borrar. Las borraremos todas.

Una vez estén todas borradas, podemos opcionalmente volver a consultar la lista (tabla) de particiones con "p". Ahora ya no deberíamos tener ninguna partición. Lo siguiente es crear una nueva partición y para esto usaremos "n" (new).

Al empezar la creación, nos preguntará si queremos que la partición sea primaria o extendida. Esto es un largo tema que podeis consultar en internet si teneis curiosidad. Resumiendo, una partición primaria es la tradicional y podemos tener hasta 4. Una extendida es una "partición de particiones". En este caso queremos y seleccionaremos partición primaria. Seguidamente nos preguntará que número queremos asignar a la partición que estamos creando; es recomendable seguir el orden así que escogeremos el "1". Ahora nos pide el primer sector, en este paso pulsaremos intro sin poner nada (nos seleccionará el primer sector de espacio disponible). Ahora nos pide el ultimo sector, aquí especificamos el espacio que queremos que ocupe esta partición des de ese primer sector. Si lo dejamos en blanco y pulsamos intro ocupará todo el espacio disponible. Haremos esto.

La partición ya esta creada. Es de tipo Linux es decir usará un sistema de ficheros que se llama ext4. Te recomiendo buscar y consultar información sobre cualquier término que no te quede claro.

Para acabar y hacer efectivos estos cambios debemos escribirlos. Para esto usaremos w (write).

Perfecto. Ahora ya tenemos nuestra nueva partición, y deberíamos ser capaces de verla usando lsblk. Ya tenemos nuestra partición, pero esto no está listo ya que aún no hemos creado ningún sistema de ficheros, de momento solo hemos especificado el tipo que usaremos. Para crear el sistema de ficheros debemos usar (sobre la partición y no el dispositivo):

sudo mkfs.ext4 /dev/sdX1

El comando mkfs (make filesystem) nos crea un sistema de ficheros en una partición (¡La partición debe estar desmontada!). Para especificar qué sistema de ficheros queremos lo hacemos con un ".<sistema_de_ficheros>" detrás del comando (ext4 en nuestro caso). Finalmente especificamos la partición donde queremos crearlo.

Por ultimo solo nos queda montar el disco para poder usarlo. Esto se hace de forma muy sencilla. Primero debemos crear el directorio (carpeta) que será nuestro punto de montaje. En Ubuntu normalmente los dispositivos se montan en la carpeta "/media". Así que crearemos un directorio dentro de esta carpeta para montar allí nuestro disco de datos:

sudo mkdir /media/Datos

Ahora podemos montar la partición que hemos creado en ese punto con:

sudo mount /dev/sdX1 /media/Datos

Si ejecutamos lsblk deberíamos ver que nuestra partición esta montada en ese punto. Finalmente ya tenemos nuestro dispositivo (Disco) listo para usar. Además hemos aprendido muchas cosas sobre Linux.

Migración de la carptea de Datos al disco

Primero debemos mover la carpeta data de nextcloud a nuestro disco duro. El comando mv (move) sirve para mover archivos y carpetas de un origen a un destino. Para esto haremos:

mv /var/www/html/nextcloud/data /ruta/a/disco

Ahora deberemos modificar el archivo config.php. Para esto usaremos nano si somos noveles (un editor de texto de terminal muy sencillo):

sudo nano /var/www/html/nextcloud/config/config.php

Dentro de este archivo debemos buscar la directriz datadirectory, y allí especificar el punto de montaje de nuestro disco añadiendo el "/data" final (de la carpeta que acabamos de mover).

datadirectory = /ruta/al/punto-de-montaje/data

Ahora guardamos (Ctrl+O), salimos (Ctrl+X) [en la parte inferior de nano se especifican todos los comandos, ^ = Ctrl]. A continuación es necesario cambiar el propietario del disco (la carpeta del puntjo de montaje) para que sea "www-data" (el usuario del servidor):

sudo chown -R www-data:www-data /media/Datos

Reiniciamos apache con:

sudo service restart apache2

Montaje automático del disco

Esta partición probablemente (si usamos Ubuntu Server en una Rpi) no se montará sola cuando reiniciemos la Raspberrry. Para hacer que se monte automáticamente y no tener que ejecutar el comando mount cada vez que se reinicie.

Para esto linux tiene un fichero llamado fstab (File System Table) que especifica los dispositivos que deben ser montados al arrancar. Así que editaremos este fichero para especificar que queremos que monte nuestro disco en su punto de montaje.

Primero debemos saber que todos los dispositivos tienen su UUID (Universal Unique ID) que los identifica. Así que usaremos este UUID para que el sistema lo detecte y lo monte. Para conocer el UUID de los dispositivos conectados ejecutaremos:

sudo blkid

Que tendrá un resultado similar a este:

/dev/nvme0n1p1: UUID="2C05-FEB2" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="fff17ba5-fdf1-8840-b039-84ac0e3112b0"
/dev/nvme0n1p2: UUID="17bb7d1c-cfae-48dd-bd6e-da7ccbb79333" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="69df7ac7-1c70-054c-8f8c-e5593e32dc18"
/dev/nvme0n1p3: UUID="334896aa-df6a-4cb5-aecf-0a567b9e084b" TYPE="swap" PARTUUID="63967a01-2e53-fa4f-a6d2-b7b1d4107219"
/dev/nvme0n1p4: UUID="973e099e-cbd5-4a7b-a1cf-2f84d2508c0a" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="a7091bb7-89d2-fa41-8918-a110582ceead"
/dev/sda1: LABEL="Media" UUID="d7a48164-f584-421b-82cb-6c2ce1f21228" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="4e484774-01"
/dev/sdb1: LABEL="PEN-16" UUID="f02792da-5b4c-4cd7-87f9-c12d194c4d6b" BLOCK_SIZE="4096" TYPE="ext4"

En mi caso particular busco el UUID de la partición 1 del dispositivo /dev/sdb, que es la que está marcada en negrita. Copiamos el UUID de nuestra partición o lo guardamos de algún modo. Y procedemos a editar el archivo fstab que se encuentra en la carpeta del sistema etc:

sudo nano /etc/fstab

El archivo fstab tiene una sintaxis específica. Debemos añadir la siguiente línea:

UUID=<uuid-de-la-partición>   /ruta/al/punto-de-montaje   <sistema-de-ficheros>    defaults   0   2

Un ejemplo de como quedaría en mi caso:

UUID=f02792da-5b4c-4cd7-87f9-c12d194c4d6b    /media/Datos    ext4    defautls   0    2

Finalmente guardamos y ya estaría listo. La proxima vez que se reinicie nuestro sistema, se montará automaticamente el dispositivo. Es posible que si el dispositivo no está conectado el sistema no se inicie correctamente.

Corrigiendo errores y mejoras

Si iniciamos sesión en nuestro servidor de Nextcloud con la cuenta de administrador y nos vamos a "Settings" > "Administration" > "Overview" podremos ver algunos problemas que nos detecta el propio sistema Nextcloud. A continuación encontrarás algunas soluciones a algunos de estos problemas (la mayoría tienen su solución en los foros de Nextcloud).

Problemas con CalDAV y CardDAV (.well-known)

sudo nano /etc/apache2/sites-enabled/000-default.conf

Añadir al final de todo antes de cerrar el </VirtualHost>

Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav

Lo mismo en

sudo nano /etc/apache2/sites-available/000-default.conf

Limite de memoria PHP

sudo nano /etc/php/7.3/apache/php.ini

Buscar variable: post_max_size Cambiar valor a 1G

buscar variable: memory_limit Cambiar valor a 512M (o más)

Reiniciar Apache

sudo service apache2 restart

Error: Some columns in the database are missing a conversion to big int.

Ejecutar:

sudo -u www-data php /var/www/html/nextcloud/occ db:convert-filecache-bigint

Error: Database missing indexes

Ejectuar:

sudo -u www-data php /var/www/html/nextcloud/occ db:add-missing-indices