Una de las cosas más útiles que puedes hacer con una Raspberry Pi es instalar Nextcloud. Es el servicio al que mas uso le estoy dando en mi Raspberry Pi, sin duda alguna. Se trata de un servicio que convierte tu equipo en una nube tipo Dropbox o Google Drive pero vitaminado ya que se le pueden ir añadiendo aplicaciones para multitud de utilidades como calendario, notas, marcadores, tareas, contactos, biblioteca musical, etc… Además conseguimos tener el control de nuestros datos y no se los prestamos a terceras empresas para que les saquen partido debilitando nuestra privacidad. Y, por supuesto, como todo en éste blog es Software Libre. ¿Qué más se puede pedir?
Para poder instalar NextCloud en la Raspberry Pi, primero tienes que haber instalado el servidor web apache, el gestor de bases de datos MariaDB, el intérprete de PHP y es altamente recomendable tener también instalado PHPMyAdmin. Opcionalmente, si quieres tener varias webs en dominios diferentes, por ejemplo una dirección para tu blog y otra diferente para NextCloud, también debes configurar apache para varios dominios.
Una vez comprobado que ya tienes todo lo anterior listo ya puedes empezar con la tarea de instalar NextCloud. Los pasos que voy a ir explicándote están probados en mi propia Raspberry Pi con Raspbian 9 Stretch y con Raspbian 10 Buster y puedo garantizar que funcionan, pero seguramente también son válidos para Debian, Ubuntu, Linux Mint y cualquier derivado de Debian.
En mi caso lo voy a hacer en un dominio creado como te he explicado en el artículo de los multidominios llamado nube.duckdns.org, directamente en el directorio raiz. Pero puedes hacerlo en el dominio y en la carpeta que tu quieras. Simplemente adapta las instrucciones a tu gusto.
Descargar NextCloud
Empieza situándote en la carpeta donde quieres instalar NextCloud:
cd /var/www/html/nube.duckdns.org
Descarga el script de instalación y cambia su propietario para que lo pueda gestionar el servidor web.
wget https://download.nextcloud.com/server/installer/setup-nextcloud.php sudo chown www-data:www-data setup-nextcloud.php
Instala el paquete php-curl. Es posible que ya lo tengas instalado, pero por si acaso compruébalo:
sudo apt install php-curl
Creación de la carpeta de datos
Los datos que vayas a guardar dentro de tu nube de NextCloud se almacenarán en una carpeta. Es muy recomendable por motivos de seguridad que esa carpeta se encuentre fuera de las carpetas visibles desde Internet, es decir fuera de /var/www/html/
Vamos a crear esa carpeta dentro del home de tu usuario de Raspbian y a darle permisos para que el usuario que utiliza el servidor web pueda acceder y guardar los archivos en ella.
cd mkdir NextCloudData sudo chown www-data:www-data NextCloudData
Preparar la base de datos
NextCloud necesita un base de datos para poder funcionar. Voy a explicarte como crear el usuario y la base de datos necesaria utilizando PhpMyAdmin. Si no lo tienes instalado te recomiendo que lo hagas o tendrás que hacerlo desde la consola de mysql. Un poco mas abajo te pongo las instrucciones que deberían de funcionar.
Accede a la página de entrada de PhpMyAdmin e identíficate con tu usuario y contraseña de PhpMyAdmin.

Haz clic en el apartado «Cuentas de usuarios» que se encuentra situado en la parte de arriba.

Pulsa en «Agregar cuenta de usuario«.

Rellena los datos, por ejemplo:
- Nombre de usuario: nextcloud
- Nombre del Host: Local (localhost)
- Contraseña: una contraseña segura (apúntala, la necesitarás en el proceso de configuración de NextCloud)
- Debe volver a escribir: la misma contraseña segura
Marca la casilla «Crear base de datos con el mismo nombre y otorgar todos los privilegios.»

Desplázate hasta abajo del todo y pulsa el botón «Continuar».

Y con esto ya tendrás creada la base de datos y el usuario para NextCloud.
Si no tienes PhpMyAdmin instalado y no lo quieres instalar, puedes probar a crear el usuario y la base de datos con las siguientes instrucciones.
AVISO: no he comprobado que funcione. Es la salida que ofrece PhpMyAdmin al seguir los pasos. Debería funcionar pero no lo puedo garantizar.
sudo mysql -u root CREATE USER 'nextcloud'@'localhost' IDENTIFIED VIA mysql_native_password USING 'contraseña'; GRANT USAGE ON *.* TO 'nextcloud'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0; CREATE DATABASE IF NOT EXISTSnextcloud
; GRANT ALL PRIVILEGES ONnextcloud
.* TO 'nextcloud'@'localhost';
Instalar NextCloud en Raspberry Pi
Desde el navegador dirígete a la dirección del archivo del script de instalación que habías descargado antes, por ejemplo:
http://dominio o ip de la raspberry/setup-nextcloud.php

Pulsa el botón Next para que comience la instalación. Lo primero que hará será comprobar las dependencias por si tienes que instalar algún paquete extra.

En este caso dice que todas las dependencias están encontradas por lo que no es necesario instalar nada aparte. Ahora pide que escribas el directorio donde quieres que se instale NextCloud. Si lo quieres instalar en el directorio donde ya estás situado escribe simplemente un punto (.) y pulsa Next. Tras unos segundos o minutos aparecerá la siguiente pantalla.

El primer paso de la instalación se ha completado de forma satisfactoria. Pulsa el botón Next para continuar.
Configuración inicial
Rellena los datos que pide:
- Nombre de usuario: el que quieras tener para NextCloud
- Contraseña: Una contraseña segura para acceder a NextCloud
- Carpeta de datos: /home/usuario/NextCloudData (la que habías creado antes).
- Usuario de la base de datos: nextcloud
- Contraseña de la base de datos: la que le pusiste al crear la base de datos
- Nombre de la base de datos: nextcloud
- Host de la base de datos: localhost
La casilla «Instalar las aplicaciones recomendadas» la puedes dejar marcada o desmarcarla para instalar tu después las aplicaciones que quieras. Si la dejas marcada instalará las aplicaciones Calendario, Contactos y Correo. Las aplicaciones OnlyOffice y Talk darán error ya que no están preparadas para funcionar en procesadores ARM como el que tiene la Raspberry Pi. Si lo estás instalando en una máquina con procesador x86 como el de cualquier ordenador normal no debería de dar problemas.
Una vez que tengas todos los datos introducidos pulsa el botón «Completar la instalación»


Una vez completada la instalación verás la siguiente pantalla.


Y con esto habrás conseguido instalar NextCloud en la Raspberry Pi. Ha sido una tarea larga, pero los pasos son claros. Te aseguro que vale la pena ya que le podrás sacar mucho partido.
Hay otros métodos para instalarlo más sencillos usando Docker pero eso lo dejaremos para próximos artículos.
Estupendo artículo!! Aunque me preguntaba de qué forma se le puede añadir mas unidades de almacenamiento y asociarlas a NextCloud. Por ejemplo un USB o HDD.
Muchas gracias!
Hola Pablo, poner un almacenamiento externo se podría si configuras la carpeta de datos de NextCloud en él, pero irían todos los datos a él.
Si lo que quieres es tener los datos en la unidad principal y a parte añadirle un disco externo conectado por USB no estoy seguro de que se pueda hacer. Puedes mirar la Aplicación/Plugin «External storage support». En principio está pensada para acceder a carpetas/unidades compartidas en red, pero puede que también funcione para lo que quieres. Ya te digo que no lo he probado, no te sé decir.
Un saludo y gracias por tu comentario.
Muy útil el artículo, muchas gracias por compartirlo.
Estoy intentando seguirlo pero una vez que termina la instalación no consigo acceder a la página de configuración inicial. Estoy utilizando un dominio que he conseguido a través de la página noip.com, por lo que dentro de la ccarpeta /var/www/html tengo creada la carpeta con el nombre del dominio. Dentro de ella es donde he instalado Nextcloud, es decir, dentro de la carpeta /var/www/html/{my-dominio}/nextcloud. También tengo crado el fichero .conf dentro de /etc/apache2/sites-availables, con nombre {mi-dominio}.conf, con los valores
ServerAlias {my-dominio}
ServerName {my-dominio}
ServerAdmin pi@{my-dominio}
DocumentRoot /var/www/html/{my-dominio}
¿Qué se me puede estar escapando?
Muchas gracias de antemano.
Un saludo.
Hola Raul. Gracias por comentar.
Es difícil adivinar qué es lo que está fallando, pero vamos a intentarlo.
Lo primero que habría que saber es si están intentando acceder desde la red local o desde fuera.
Te sugiero que pruebes ambos casos y ver si de alguna de las dos formas funciona.
Un saludo.
Hola de nuevo,
No consigo acceder desde fuera. Si lo hago desde local accedo sin problemas.
Un saludo.
Hola de nuevo, Raul.
Supongo que desde dentro de tu red accedes al NextCloud con la IP y desde fuera con el dominio de noip.
Si es así puede que el problema sea que no tienes añadido el dominio a la lista de dominios permitidos de NextCloud.
Para añadirlo tienes que editar el archivo config/config.php y buscar la sección «trusted_domains» y dejarlo tal que así:
‘trusted_domains’ =>
array (
0 => ‘dominio.noip.com’,
1 => ‘192.168.1.6’,
),
Lógicamente cambiando el dominio por el tuyo y la ip por la tuya interna.
A ver si con eso lo consigues arreglar.
¡Salut!
Hola! Lo primero de todo mil gracias por el artículo! es de gran utilidad y me ha servido perfectamente.
He llegado hasta el final pero creo que hay algo que se me escapa.
Tengo ya todo correctamente instalado y accedo al dashboard de nextcloud poniendo en un navegador en otra maquina de mi red local la ip que le tengo asignada a la raspberry. Pero el problema me viene a la hora de poner la direccion que he creado en duckdns, he seguido tu tutorial de configurar apache en varios dominios y he configurado el de la nube de nextcloud (solo he creado ese) tal y como indicas, pues a la hora de poner la direccion creada me apunta directamente a mi router (que tiene la direccion por defecto de todas las redes locales)
Se me escapa algo mas para que mi raspberry apunte a la direccion de duckdns?
Muchas gracias de nuevo y un saludo
Javi
Hola Javier. Gracias por los halagos ☺️
No me queda claro si el problema lo tienes accediendo desde la red local o desde fuera.
Si es desde la red local es normal que te pase eso. Hay varias formas de solucionarlo. Puedes editar el archivo hosts diciéndole al equipo que cuando pongas la URL del dominio te vaya a la IP de la Raspberry Pi. O puedes activar una opción llamada NAT Loopback que tienen algunos routers. O puedes instalar un servidor de DNS en tu red que redirija el dominio a la IP de la Raspberry Pi. Esto último yo lo he hecho con Pi Hole que es un bloqueador de publicidad pero que incluye un servidor DNS.
Si es desde fuera de tu red tienes que redirigir los puertos 80 y 443 a la IP de tu Raspberry Pi. Es lo que comúnmente se llama abrir los puertos.
Espero que te sirva. Un saludo.
Hola! Muchas gracias por la rapidez!
El problema de que vaya al router es desde dentro de mi red, en un equipo distinto. Pruebo a intentar acceder desde fuera( por ejemplo mi móvil, solo conectado a datos) y no llega a cargar ninguna pagina, agota el tiempo de espera.
Vale, intentaré hacer alguno de los pasos que dices, algun tutorial que me recomiendes para seguir? Soy totalmente nuevo y sin una guía la verdad me cuesta ir avanzando.
La apertura de puertos para acceder desde otra red externa la tendré que hacer independientemente de instalar un servidor DNS o pihole en mi raspberry?
Muchas gracias por todo y un saludo!
Muchas gracias de nuevo, y un saludo
Perdona, pero me surgen mas dudas con lo que me has comentado, asique sigo preguntando, jejejeje.
Voy a intentar hacerlo con pihole, asique te hago alguna pregunta de la instalación.
Cuando me pregunta si quiero instalar un servidor web, le digo que no verdad? como ya hemos instalado apache y todo para el nextcloud no creo que haga falta, pero no estoy seguro si pihole necesita el suyo propio.
Cuando me pide seleccionar mi proveedor de dns, ahi tengo que seleccionar duckdns que es donde tengo creado mi dominio verdad? aparece en la lista duckdns, no estoy seguro de ello.
Posteriormente entiendo que una vez instalado pihole, tengo que ir a mi router y poner la ip de la raspberry en la lista de servidores dns para que pase por ahi el trafico de datos no?
Mi ultima pregunta, es, una vez realizada esta instalacion y cambiado el servidor dns en el router, si pongo mi direccion de duckdns ya estaría entrando en el dashboard de nextcloud? Y me surge la duda también de como entrar en el dashboard de pihole, suponiendo que ambos estan en la misma dirección verdad?
Y por ultimo, he de isntalar pihole en algun directorio en concreto de la raspberry o se instalará el mismo en raiz?
Perdon por el batiburrillo de preguntas, pero estoy algo perdido!
De nuevo muchísimas gracias y un saludo
Buf… demasiadas preguntas… vamos a ver si yendo por partes lo consigues.
Lo primero que intentaría que yo creo que es la parte más fácil es que funcione accediendo desde fuera de tu red.
Simplemente entra en la configuración de tu router y redirige los puertos TCP 80 y 443 a la IP de tu Raspberry Pi.
Se supone que el dominio duckdns.org ya lo tienes apuntando a tu IP pública y que tu conexión de internet no está en CG-NAT.
Una vez hecho eso, accede desde el navegador del móvil usando datos al dominio de duckdns.org y debería de aparecerte tu NextCloud.
Cuando consigas esto seguimos con la configuración en la red local si te parece.
Hola de nuevo! Mil gracias por la paciencia!
Efectivamente, en cuanto he abierto ambos puertos, he intentado acceder desde el movil con el uso de datos con mi direccion duckdns y ya entra perfectamente! Me da un mensaje nextcloud diciendome que es un acceso a traves de un dominio del que no se confía y me dice que si soy administrador edite la configuracion de trusted domains en config.php, pero nose que tendría que poner ahí para que me deje entrar desde cualquier equipo. Entiendo que esto es un problema menor, asique lo mas importante está hecho!
Si te parece comentame lo de la red local y si sabes algo de este mensaje con lo de trusted domains.
De nuevo mil gracias y un saludo!
Vale, vamos con lo de trusted_domains.
Tienes que editar el archivo /var/www/html/tudominio/config/config.php y buscar unas lineas que pondrá algo así:
'trusted_domains' =>
array (
0 => '192.168.1.15',
),
Tienes que añadir ahí otra linea con tu dominio de duckdns y quedaría algo así:
'trusted_domains' =>
array (
0 => '192.168.1.15',
1 => 'tudominio.duckdns.org',
),
Dime si con esto se ha resuelto y pasamos a lo complicado, conseguir que funcione con el mismo dominio en local.
Jope, no sabes lo que te lo agradezco!
Ya me funciona perfectamente el acceso desde fuera, que maravilla, mil gracias!
Si te parece vamos a por la siguiente parte del tutorial para entrar en local!
Ahora otra dudilla, si yo instalo pihole ahora, podria entrar a el desde el la misma dirección? como diferencia la pi entre los distintos servicios que tengo instalados en ese dominio?
Muchass gracias de nuevo y un saludo!
Venga, como te dije en un comentario anterior tienes tres opciones. Por orden de dificultad son las siguientes:
– Si sólo vas a acceder a tu NextCloud desde ordenadores, sería modificar el archivo hosts que en el caso de GNU/Linux se encuentra en la ruta /etc/hosts. Y añadirías una linea como esta:
192.168.1.15 dominio.duckdns.org
Lógicamente cambiado la IP por la de la Raspberry Pi y el dominio por el que tengas.
– Si tu router tiene una opción llamada «NAT Loopback» la activas y ya está. Esta opción nunca la he probado porque los routers que he tenido hasta ahora no la tenían o no la encontraba. En el que me han puesto hace unos días la tiene pero no la he probado.
– La más complicada instalar un servidor DNS. Yo esto lo he hecho con Pi Hole que incluye uno.
PiHole se puede instalar de varias formas. Bueno, básicamente dos. De forma nativa o mediante Docker. Yo sólo tengo experiencia haciéndolo mediante Docker así que es la única en la que te puedo ayudar. Primero tendrías que instalar Docker siguiendo las instrucciones que ya publiqué aquí: https://alexpro.sytes.net/como-instalar-docker-en-la-raspberry-pi/
Y ahora te pongo los comandos que usé yo cuando instalé el docker de PiHole.
cd docker
mkdir pihole
cd pihole
docker run -d \
--name pihole \
-p 53:53/tcp -p 53:53/udp \
-p 8081:80 \
-p 4430:443 \
-e TZ="Europe/Madrid" \
-v "$(pwd)/etc-pihole/:/etc/pihole/" \
-v "$(pwd)/etc-dnsmasq.d/:/etc/dnsmasq.d/" \
--dns=127.0.0.1 --dns=1.1.1.1 \
--restart=unless-stopped \
pihole/pihole:latest
Las últimas lineas, desde «docker run -d» hasta «pihole/pihole:latest» son todas un sólo comando por lo que tienes que escribirlo entero o copiarlo y pegarlo de una sola vez y darle a Enter.
Para acceder a la interfaz tienes que ir a la dirección http://192.168.1.15:8081/admin cambiando por la IP de tu Raspberry Pi. No te olvides del «admin» final porque si no no funciona.
Luego en la interfaz de PiHole buscas la opción «Local DNS Records» y rellenas las dos casillas «Domain» con el dominio de duckdns.org e «IP Adress» con la IP de tu Raspberry Pi.
También tendrás que cambiar el servidor DNS que utilizas. Esto lo puedes hacer en la configuración de tu Router para que automáticamente lo cojan todos los dispositivos de tu red o en cada dispositivo la configuración de tu conexión.
Con todo esto ya tendrías todo listo. Como ves no es algo simple pero dedicándole tiempo se puede llegar a hacer.
Suerte y ya contarás si lo consigues o tienes algún problema.
Saludos.
Genial! Ha salido todo perfecto! Ya accedo sin problema desde mi red local a mi nube con la direccion dns! Creo que pihole todavia no esta funcionando bien bloqueando la publi, nose si es por que tengo que añadirle listas de bloqueo o algo así, pero vamos que funciona de maravilla ya! Mil gracias por todo no sabes lo que te lo agradezco.
Te he escrito por twitter en el chat por si querias leerme por allí!
Ya me cuentas.
Un saludo y de nuevo mil gracias
Me alegro de que te haya salido todo bien. Ya he visto tu mensaje por Twitter. Te he contestado por allí.
Un saludo y mil «de nadas». 😉
Hola, muy buen articulo. Tengo una pregunta. Como hago para instalar Nextcloud y que todos los archivos que respalde se vayan a un disco duro externo que tengo montado en la Raspberry?
Es decir, se puede instalar Nextcloud en Raspbian pero todos mis archivos (videos, fotos, documentos, etc) se guarden en el disco duro externo ?
Saludos.
Hola Alan, gracias por comentar.
Pues si, es posible. Tienes dos maneras de hacerlo. Cuando creas la carpeta «NextCloudData» la puedes crear en un disco externo y luego al configurar por primera vez le pones la ruta de dicha carpeta que estará en el disco externo. Puede que te tengas que pelear con los permisos, pero con un poco de «lucha» no creo que cueste mucho. De ésta forma todo lo que guardes en tu NextCloud estará en el disco externo.
La otra opción es usar un plugin creo que viene con NextCloud pero no está activado por defecto que se llama «External Storage Support» y te aparecerá un apartado dentro de la configuración donde puedes añadir el disco. Se creará como una carpeta en el «home» de la interfaz del NextCloud y todo lo que guardes en esa carpeta estará en el disco externo. Esta es la opción que yo he usado en alguna ocasión.
Espero que te sea de ayuda. Un saludo.
Hola Alex:
Es dificil ser mas didactico que lo eres tu, pero a pesar de ello debo de ser demasiado nuevo trasteando con la raspberry.
Mi problema consiste a la hora de intentar ejecutar el scrip
http://ipraspberry/setup-nextcloud.php
me sale 404 not found, por favor me puedes echar una mano
Hola Alex:
Gracias a tus guias e insistiendo con mi torpeza he conseguido instalarlo correctamente y me funciona.
Abusando de tu sabiduría me gustaria que hicieras un tutorial para que al acceder sea con un certificado ssl valido como Let’s Encrypt. Desde ya vaya mi agradecimiento por adelantado
Hola Jesús, me alegro de que al final te haya funcionado. Lo del certificado de Let’s Encrypt lo intentaré hacer en un futuro.
Un saludo.