Crea tu propia nube con NextCloud
Contenidos
Todos somos conscientes de la comodidad que supone poder tener tus ficheros en cualquier dispositivo, y de que existen múltiples herramientas para acceder y sincronizar ficheros en la nube. Además, la posibilidad de tener tus datos sincronizados con un servidor puede ahorrarnos problemas en caso de robo, destrucción o fallo técnico de algunos de nuestros dispositivos.
Servicios como como Dropbox, Google drive, Microsoft OneDrive, Google Photos y muchas otras tratan de solucionar este problema, poniendo a nuestra disposición un montón de herramientas para trabajar con nuestros datos en la nube. Y es ahí justo donde radica el problema: «en la nube» es un término muy general que significa que estos proveedores saben dónde están tus datos, pero tú no. ¿Qué ocurre si tu contraseña en estos sitios se ve comprometida? ¿Qué ocurre si deciden que el servicio es ahora de pago? Esto último nos ha sucedido en un par de ocasiones
La solución: créate tu propio servidor de datos en tu casa o en un servidor personal. Con un poco de paciencia, podrás instalar un servidor al que puedas acceder desde cualquier lugar del mundo y que te permita tener tus datos a buen recaudo en tu casa.
Antes de nada, una advertencia: las multinacionales que hemos mencionado invierten millones de euros en la experiencia del usuario, y NextCloud es un proyecto de código abierto (open source) mantenido por la comunidad, y que puedes instalarte de forma gratuita. Así que espera justo lo que te prometemos: capacidad de sincronizar tus datos con tu servidor personal y la seguridad de que tú tienes el control de tu información. En el siguiente apartado hablamos un poco más de la filosofía detrás de tomar esta decisión, y evaluamos si esto es para ti. En el futuro planeamos hacer más tutoriales acerca de las funcionalidades que tiene este servidor, y cómo puedes instalar plugins para realizar tareas que hasta hace poco estaban reservadas a usar herramientas de los gigantes del software (aka google, microsoft), como editar de manera colaborativa un documento.
¿Cuáles son las ventajas y desventajas de tener nuestra propia nube?
Permíteme que emplee el término «nube» en este contexto, si bien lo que vas a tener al finalizar este artículo, si decides instalar nextcloud, es un servidor personal en el cual subirás tus fotos y ficheros desde tus dispositivos (teléfono, tablet, ordenador) y al que sólo tendrán acceso tú y las personas que tú decidas. Veamos una serie de consideraciones a tener en cuenta cuando evaluamos si queremos realizar este tipo de proyectos.
El límite del almacenamiento gratuito: por lo general, las herramientas comerciales te dan una cantidad determinada de almacenamiento para que pruebes sus servicios. Superada esa cantidad, te ofrecen una subscripción mensual o anual que te permitirá seguir usando el servicio, o la posibilidad de borrar datos que no necesites. Si con unos pocos gigabytes tienes más que suficiente, o suficiente para la información que quieres tener online, en este apartado ganan las multinacionales. Ten cuidado con las actualizaciones de las políticas, pues algunas empresas cambian sus políticas y dejan de ofrecer algo gratuito, forzándote a cambiar de proveedor o, por simplicidad, a usar sus servicios de pago. Es el ejemplo de flickr, que dejó de dar 1TB gratuíto de almacenamiento de fotos, o google photos, que limitó el almacenamiento «ilimitado» de fotos comprimidas en la nube a partir de Junio de 2021.
El coste del almacenamiento y los servicios: si eres un usuario que tiene solo unos pocos ficheros, podrás trabajar fácilmente con los almacenamientos gratuitos. Sin embargo, si tienes síndrome de diógenes digital, como un servidor, en seguida superarás los límites gratuitos y deberás pagar por el servicio. El coste no suele ser muy elevado, sobre todo si tienes en cuenta la cantidad de servicios que nos dan. Tenemos un artículo sobre el coste de los principales proveedores para que te hagas una idea.
Cautivos de un servicio: existen operadoras, como por ejemplo Telefónica, o empresas tipo Amazon que ofrecen grandes cantidades de almacenamiento a sus clientes. Piénsatelo un poco antes de comprometerte con ellos, pues eso implicará que tengas que seguir usando los servicios de la compañía. Si eres un cliente satisfecho, sin embargo, siempre viene bien poder disfrutar de este tipo de servicios.
Seguridad de tus datos: ¿estás más seguros tus datos en la nube de alguno de estos proveedores, o en un servidor que tú controlas? No respondas antes de valorar lo siguiente: estas compañías invierten millones de euros en seguridad, por lo que tus datos deberían de estar seguros. Seguramente se almacenen en los servidores de manera encriptada y sólo tú accedas a ellos. Sin embargo, en la prensa especializada aparecen con cierta regularidad noticias en las que los datos o las contraseñas de millones de usuarios quedan expuestas a internet. ¿Serás tú uno de ellos?
Privacidad de tus datos: ahora viene la causa principal para montarte tu propio servidor: Si un servicio es gratuito, el producto eres tú. Este chascarrillo se repite en todos los círculos de redes sociales, productos, apps, etc, pues es cierto que las empresas deben ganar dinero. ¿Acceden directamente a tus ficheros? ¿Venden tus datos personales? No es probable salvo que te dediques a la investigación en temas punteros o pertenezcas a un grupo político comprometido, pero sí es probable que algoritmos especializados estén analizando tus patrones de uso, y que estas empresas sí vendan acumulados de datos de sus clientes. Tenemos como ejemplo la publicidad: ¿alguna vez te ha pasado que buscas algo en internet y los días siguientes te bombardean de publicidad con productos y servicios relacionados? Pues eso, que sí usan tus datos. Quizás de forma anónima, y quizás no tengas nada que ocultar, pero… ¿no te parece incómodo que cualquier empleado de esa empresa pueda acceder a tus ficheros?
¿Es realmente lo que quiero hacer?
Siendo francos, este tipo de sistemas requiere de algunos conocimientos avanzados, así que este no es un tutorial para principiantes. Si conoces algo de informática, te gusta trastear con servidores linux y quieres mejorar tus conocimientos a la vez que te preparas una infraestructura que te ayude a mejorar tu privacidad, pues sí, te animamos a que continúes con la instalación. También si perteneces al equipo técnico de una pequeña empresa, pues se puede hacer una evaluación de costes y ver si merece la pena almacenar la información en tus propios servidores por seguridad/privacidad.
Sin embargo, si careces de estos conocimientos avanzados, y salvo que tengas en tus manos un montón de tiempo libre y ganas de aprender, te recomendamos que optes por alguna de las alternativas comerciales. En cualquier caso, si sólo quieres probar, puedes crearte una máquina virtual con virtualbox y realizar la instalación completa ahí. De este modo, no podrás estropear nada en tu equipo y podrás probar sin ningún riesgo a instalarte tu propia nube.
Instalación básica de nextcloud
En este artículo describiremos una instalación básica de nextcloud en un servidor linux en tu casa, que puede ser tu propio ordenador, una raspberry pi, una máquina virtual, etc. Nuestro plan es realizar la instalación y pruebas de la forma más sencilla posible. Existen múltiples formas de realizar la instalación, pero en nuestra opinión esta es la más sencilla: emplear un servidor linux con docker-compose para instalar el servidor, y a continuación usar una VPN para conectar desde cualquier lugar del mundo. Es la combinación que a nuestro juicio es óptima en lo que se refiere a sencillez/seguridad.
Necesitaremos lo siguiente:
- Sistema linux, en este ejemplo se empleó ubuntu linux 20.04
- Docker, el gestor de contenedores por excelencia.
- docker-compose, una utilidad que nos hace más fácil trabajar con docker a través de ficheros de configuración.
- Saber las IP’s del servidor donde vas a trabajar.
Si estás familiarizado con docker-compose, sabrás que necesitas básicamente un fichero de configuración que te indica los servicios que quieres utilizar, qué imágenes de aplicaciones usar y la configuración de los puertos y el almacenamiento. Te lo mostramos directamente el fichero docker-compose.yml, y luego procederemos a explicarlo a continuación:
docker-compose.yml
version: '2'
volumes:
nextcloud:
driver: local
driver_opts:
type: none
device: /media/nociones/nextcloud/_nextcloud
o: bind
db:
driver_opts:
type: none
device: /media/nociones/nextcloud/_db
o: bind
services:
db:
image: mariadb
restart: always
command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
volumes:
- db:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD="PonAquíLaPasswordDeRoot"
- MYSQL_PASSWORD="PonAquíLaPasswordDeUsuario"
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
logging:
driver: json-file
options:
max-size: 10m
max-file: '5'
app:
image: nextcloud:fpm
restart: always
links:
- db
volumes:
- nextcloud:/var/www/html
environment:
- MYSQL_PASSWORD="PonAquíLaPasswordDeUsuario"
- MYSQL_DATABASE=nextcloud
- MYSQL_USER=nextcloud
- MYSQL_HOST=db
logging:
driver: json-file
options:
max-size: 10m
max-file: '5'
web:
image: nginx
restart: always
ports:
- 8280:80
links:
- app
volumes:
- /media/nociones/nextcloud/_nginx/nginx.conf:/etc/nginx/nginx.conf:ro
volumes_from:
- app
logging:
driver: json-file
options:
max-size: 10m
max-file: '5'
Servicios incluidos en nuestra instalación
db: NextCloud utiliza una base de datos para gestionar tus ficheros, aunque luego los guarde en carpetas tradicionales. Por ello, en esta instalación se utiliza el contenedor MaríaDB. Fíjate bien en esta parte de la configuración porque tienes que modificar las contraseñas de usuario y root para la base de datos. También está la posibilidad de utilizar un servidor externo de bases de datos si ya lo tienes instalado, pero si tienes tu propia base de datos eres un usuario lo suficientemente avanzado para interpretar los parámetros del servicio nextcloud y modificarlos según tus necesidades. Si no, limítate a cambiar usuario y contraseña en esta parte del servicio. La primera vez que ejecutemos el servicio se creará la base de datos con los parámetros que le indiques.
app: esta es la aplicación de nexcloud, obtenida del repositorio oficial de nextcloud en dockerhub. Contiene el volumen que vamos a utilizar para los datos (que por simplicidad vamos a colocar fuera del contenedor, para hacer más fáciles las copias de seguridad en un futuro), así como los parámetros de acceso a la base de datos.
Volúmenes de datos: mantendremos el control de nuestros datos fuera de los contenedores. Esto evitará que los borremos accidentalmente trasteando con docker, y como ya hemos dicho nos facilitará la tarea de realizar las copias de seguridad de los datos. No pensabas instalarte una nube sin hacer copias de seguridad de todos tus datos regularmente, ¿verdad?
Hemos llamado a los volúmenes «nextcloud» y «db», respectivamente, y les hemos asignado un path dentro de nuestro servidor. De este modo, podremos ver cómo se guardan esos ficheros fuera de los contenedores docker.
Ojo, debes de crear los directorios para los ficheros antes de arrancar el sistema. En nuestor ejemplo, se encuentran en /media/nociones/nextcloud/_nextcloud para los datos, y en /media/nociones/nextcloud/_db para la base de datos. En tu sistema, modifícalo para apuntar a los directorios donde quieras almacenar esta información.
El logging es importante
Si has trabajado con docker-compose, sabrás que los logs de los contenedores por defecto son infinitos. Esto no es ningún problema para servicios pequeños o de prueba, pero para un servidor que vas a tener en marcha 24×7 los logs tienen que rotar. Por ello verás que hemos añadido a nuestro fichero yaml una rotación de ficheros, con un máximo de 10MB por fichero y un total de 5 ficheros de log. Sólo queríamos mencionarlo por si quieres modificarlos para almacenar más o menos ficheros de log en caso de que tengas que trabajar internamente con los contenedores.
Arrancar el servidor
La primera vez que ejecutes el servidor, deberás emplear el comando docker-compose up -d. Esto descargará los contenedores y hará la instalación inicial de la base de datos.
El servidor se mantendrá activo incluso si reinicias tu sistema. Si lo has parado manualmente, puedes arrancarlo con docker-compose start.
Comprobar el estado de los servicios
Para ver si todo se ha instalado correctamente, puedes emplear el comando docker-compose ps. Esto debería mostrarte una lista de los servicios que has arrancado y su estado. Mira nuestra instalación, por ejemplo:
[email protected]:/media/nociones/nextcloud$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------
nextcloud_app_1 /entrypoint.sh php-fpm Up 9000/tcp
nextcloud_db_1 docker-entrypoint.sh --tra ... Up 3306/tcp
nextcloud_web_1 /docker-entrypoint.sh ngin ... Up 0.0.0.0:8280->80/tcp
Ver los logs del sistema
Para ver el log del sistema, por ejemplo para ver qué sucede en tus servidores en caso de que algo falle, utiliza docker-compose logs.
Parar el servidor
Para detener el servidor, deberás emplear el comando: docker-compose stop
Si todo está configurado correctamente, accediendo en tu navegador a localhost:8280 deberás de ver una imagen similar a la siguiente:

¡Fantástico! Ahora dirígete a la documentación oficial de NextCloud para configurar tus primeros usuarios y empezar a trabar con el servidor.
Consideraciones finales. Siguientes pasos.
Tal como hemos descrito la instalación, tienes un servidor nextcloud funcional en tu red local, y puedes hacer pruebas desde distintos dispositivos para subir automáticamente fotos, sincronizar carpetas, etc. Esto te permitirá trabajar con NextCloud dentro de tu red local y sincronizar ficheros y fotografías desde tus dispositivos. Es más, la subida automática te permite subir fotografías directamente desde el momento que las sacas. Todo ello, insistimos, dentro de tu red local, y a continuación te explicamos el por qué todavía no puedes hacerlo desde cualquier lugar.
Hay un tema que no hemos abordado: el acceso seguro desde cualquier lugar del mundo. Existen múltiples formas de hacerlo, pero nosotros nos hemos decidido a utilizar una VPN, una red privada virtual gratuíta utilizando Wireguard, y asignaremos una dirección dentro de nuestra VPN a nuestro servidor. De este modo, y usando la VPN desde nuestros dispositivos, será posible acceder a nuestros datos desde cualquier lugar del mundo de forma segura y encriptada, sin necesidad de modificar la configuración de nuestro router. ¡Te esperamos en nuestro próximo artículo!
¿Tienes alguna duda? ¡Te esperamos en los comentarios!