Nextcloud es todo un entorno de trabajo. Es algo más que una nube, pero sobre todo es el uso que se le suele dar. Al principio lo usaba como nube, con sincronización automática con mi PC, mi tablet y mi móvil. Poco a poco he ido usando más cosas, como el calendario y las notas. Se trata de tener tu propia nube, con la capacidad que quieras, en tu red local o en internet. Hay aplicaciones para PC, Android e iOS. Lo que es un poco complicado es instalar el servidor. Aquí dejo unas notas para instalar Nextcloud desde cero.
Para ello me he basado en los siguientes tutoriales y páginas web:
Probablemente se me olvida algún otro sitio.
Para elegir las versiones correctas, tanto de PHP como de Nextcloud echamos un vistazo a esta wiki. Aquí viene una matriz de compatibilidad. En el pasado me dió quebraderos de cabeza el instalar una versión de PHP no compatible.
| Nextcloud Version | Supported PHP Versions |
|---|---|
| 30 | 8.1, 8.2, 8.3 |
| 29 | 8.0, 8.1, 8.2, 8.3 |
| ... | ... |
| 26 | 8.0, 8.1 , 8.2 |
| ... | ... |
Voy a instalar la versión 26, que ya soporta PHP 8.2, que es la versión de PHP que instalaremos. Aun así, instalar una posterior será tan simple como cambiar la versión a descargar y descomprimir... ¡pero eso será el último paso!
Vamos a empezar.
Tedremos que tener:
Usaremos el Raspberry Pi Imager. Antes de cargar la imagen del SO en la micro SD, se puede configurar usuario, contraseña y el acceso a Wifi. Te permite hacerlo una vez seleccionas el SO. Con mis manías, prefiero descargarme la última versión del SO de la página oficial de Raspberry Pi. Yo instalé la versión 12 (64bits). La Lite para estas aplicaciones es preferible, ya que no requerimos entorno gráfico y será más ligera.
La primera vez que insertamos la SD en la Raspeberry Pi y la encendemos, deberemos introducir el nombre y contraseña que indicamos en el Imager. Con raspi-config podemos terminar de configurar varias cosas:
Accedemos:
sudo raspi-cofig
Es recomendable poner una IP fija. Aquí se puede ver cómo, además de como configurar el Wifi: Raspberry para torpes
A partir de aquí podemos continuar en remoto por SSH, que suele más cómodo; Puedes hacerlo todo desde tu PC, consultando al mismo tiempo páginas web, haciendo "copy-paste"... Por cierto, para copiar algo y pegarlo en PuTTY, basta con hacer click derecho sobre la consola de PuTTY.
Podría hacer falta también configurar servidores DNS. Por si acaso:
sudo nano /etc/resolv.conf
Se incluyen estos:
nameserver 208.67.222.222
nameserver 208.67.220.220
Se cierra nano (Ctrl+X) guardando.
Actualizamos todo.
sudo apt update
sudo apt upgrade
Ahora puedes conectar el disco duro, si no lo tenías ya conectado. En principio vamos a formatearlo, en formato ext4 (óptimo para uso con Linux). Si lo tienes ya con una partición ext4, puedes saltarte este paso.
Para averiguar la unidad que corresponde al disco duro: lsblk.
Vamos a gestionar las particiones:
sudo fdisk /dev/sda
Para verificar las particiones, comando 'p':
Command (m for help): p
Disk /dev/sda: xxx GB, xxx bytes
Usamos el comando 'd' para borar la partición existente. después otra vez 'p', para comprobar que desaparació.
Usaremos 'n' para crear una partición nueva, 'p' para partición primaria, Intro par "default to partition 1", Intro para elegir "first sector" e Intro de nuevo para "last sector". Esto usará el disco entero para la nueva partición creada. Eso no significa que Nextcloud vaya a usarlo. Más adelante se podrá elegir un directorio concreto.
Otra vez el comando 'p' para ver las partición creada. Algo así deberías ver:
Command (m for help): p
Device Boot Start End Blocks Id System
/dev/sda1 2048 234441647 117219800 83 Linux
Los cambios aun requieren ser escritos en la lista de particiones, así que usamos comando 'w' para escribir y salir.
Ahora formatearemos la partición:
mkfs.ext4 /dev/sda1
Llevará un buen rato, dependiendo del tamaño del disco. Cuando termine crearemos la carpeta donde vamos a tener nuestros archivos:
mkdir /media/hdd
La montamos:
mount /dev/sda1 /media/hdd
Para que esto sea permanente editamos el fichero `/etc/fstab´
sudo nano /etc/fstab
Añadimos la siguiente línea:
/dev/sda1 /media/hdd ext4 defaults, noatime 0 1
Reinicinamos:
sudo reboot
Instalamos apache2:
sudo apt-get install apache2
Puedes comprobar que está instalado, poniendo en un navegador la dirección IP de la raspberry o el nombre de host de la raspberry: http://192.168.xx.yy
Con el siguiente comando:
sudo apt install -y php8.2-common php8.2-fpm php8.2-cli php8.2-curl php8.2-intl php8.2-mysql php8.2-gd php8.2-sqlite3 php8.2-mbstring php8.2-zip php8.2-readline php-pear imagemagick php-imagick
Para Apache, además necesitamos:
sudo apt install php libapache2-mod-php php-mysql
Podemos chequear con php -v, debería aparece la versión 8.2...
Para comprobar la instalación: php -i.
Para poder probar, conviene modificar la configuración de Apache ya que, por defecto, si encuentra un archivo ‘index.html’, lo priorizará sobre un ‘index.php’. Querremos que el comportamiento sea el contrario, por eso lo vamos a modificar. Para hacer esto, hacemos:
sudo nano /etc/apache2/mods-enabled/dir.conf
En el fichero encotraremos algo como esto:
<IfModule mod_dir.c>
DirectoryIndex index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>
Lo modificamos moviendo ‘index.php’ a la izquierda,
<IfModule mod_dir.c>
DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm
</IfModule>
Para ver que PHP está funcionando correctamente, vamos a crear un archivo simple:
sudo nano /var/www/html/info.php
Incluimos lo siguiente:
<?php
phpinfo();
?>
Cerramos guardando.
Reiniciamos Apache:
sudo systemctl restart apache2
y vemos el resultado del archivo que creamos en el navegador, en la direción http://192.168.xx.xx/info.php
Si vemos algo así, está hecho:

En este paso instalamos mariaDB.
Escribimos:
sudo apt install mariadb-server
A continuación:
sudo mysql --user=root mysql
Cambiará el aspecto de la consola, al interfaz de gestión de bases de datos. Vamos a crear la base de datos que Nextcloud utilizará, con un usuario nuevo.
Primero creamos el usuario:
create user 'USUARIO'@'localhost' identified by 'CONTRASEÑA';
Cambia lo que está en mayúsculas por tu nombre de usuario, y la contraseña que consideres. Después creamos la base de datos, con el nombre que quieras, por ejemplo:
create database nextclouddb;
Y le concedemos derechos de uso al usuario que acabamos de crear con:
grant all privileges on nextclouddb.* to 'USUARIO'@'localhost' with grant option;
Por último, recargamos los privilegios de MariaDB con flush privileges y salimos con exit.
Para hacer mejoras en la seguiridad de la base de datos:
sudo mysql_secure_installation
Puedes dejar en blanco la contraseña de root. Es buena idea eliminar usuarios anónimos, deshabilitar el acceso de root remoto y eliminar la BBDD de prueba:
By default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Vamos al directorio que usa Apache por defecto para las páginas web:
cd /var/www/html
Vemos lo que hay con ´ls´:
ls
Es buena idea borrar lo que haya, por ejemplo en mi caso había dos ficheros:
sudo rm ./index.html
sudo rm ./info.php
Descargamos la versión que consideremos, en este ejemplo la versión 26.0.13:
sudo wget https://download.nextcloud.com/server/releases/nextcloud-26.0.13.zip
Bastaría con cambiar la versión. Se puede ir a https://download.nextcloud.com/server/releases y ver todas las que hay.
Descomprimimos en la misma carpeta en la que estamos:
sudo unzip nextcloud-26.0.13.zip
Cambiamos los permisos del directorio y todo su contenido, usando la siguiente orden:
sudo chown -R www-data:www-data nextcloud
Para que nextcloud pueda usar el disco duro, hacemos lo mismo con el directorio que vamos a utilizar para almacenar los archivos:
sudo chown -R www-data:www-data /media/hdd
Ya estaría. Ya podemos ir a la página de inicio: http://192.168.xx.yy/Nextcloud
Deberemos introducir el nombre del primer usuario (y administrador) y la contraseña que vamos a utilizar.
Después rellenamos los datos de la base de datos que configuramos previamente.
Puede que cuando termine de un error. Volvemos a cargar la página y ya accedemos a Nextcloud.
A partir de ahora, se trata de ir viendo los diferentes menús. Aunque ya es perfectamente funcional, hay algunos mensajes de error y cosas que mejorar. Aquí puede ver lo más importante: https://polkillas.net/blog/blog/2020/07/24/nextcloud-19-la-raspberry-pi-afinando-nextcloud/