Si usas el almacenamiento en la nube para compartir informacion, genial, hay muchas opciones donde elegir Dropbox, Google Drive, One Drive por mencionar algunas de las más conocidas. Pero si lo que deseas es guardar información personal, en mi opinion, hay otras opciones a tener en cuenta.
Pros y contras del almacenamiento en la nube
La gran ventaja del almacenamiento en la nube es que la información siempre está disponible en cualquier dispositivo con acceso a Internet. Y puede ser compartida con quien quien sea.
En contra tenemos el coste, ya que aunque la mayoría de los servicios permiten uso gratuito, esto puede no ser suficiente para cubrir nuestras necesidades. Pero, en mi opinión, el problema más importante es la seguridad y no me refiero solo a los casos conocidos de hackeo y/o filtraciones.
Basta con leer las condiciones de servicio de cualquier servicio de almacenamiento para encontrar cláusulas como esta de Google
... Al subir, almacenar o recibir contenido o al enviarlo a nuestros Servicios o a través de ellos, concedes a Google (y a sus colaboradores) una licencia mundial para usar, alojar, almacenar, reproducir, modificar, crear obras derivadas (por ejemplo, las que resulten de la traducción, la adaptación u otros cambios que realicemos para que tu contenido se adapte mejor a nuestros Servicios), comunicar, publicar, ejecutar o mostrar públicamente y distribuir dicho contenido. Google usará los derechos que le confiere esta licencia únicamente con el fin de proporcionar, promocionar y mejorar los Servicios y de desarrollar servicios nuevos. Esta licencia seguirá vigente incluso cuando dejes de usar nuestros Servicios (por ejemplo, en el caso de una ficha de empresa que hayas añadido a Google Maps). ...
Dropbox, tiene cláusulas similares y al iguual que cualquier otro proveedor de servicios. Resulta muy educativo, leer de vez en cuando esos términos y condiciones que aceptamos sin más en todas partes.
No estoy en contra. Soy usuario desde hace mucho tiempo y continuaré siéndolo. Simplemente controlo la información que subo a la nube.
¿Qué podemos hacer en ese caso?
Alternativas a los servicios de almacenamiento en la nube
La primera alternativa es utilizar un almacenamiento local, por ejemplo un disco duro externo. Es la solución más economica y sin lugar a dudas la más segura. Solo una persona con acceso físico al dispositivo puede obtener nuestros datos.
Sin embargo, perdemos una funcionalidad importante: la posibilidad de poder acceder a nuestros archivos desde cualquier sitio y dispositivo conectado a Internet y poder compartirla facilmente con nuestros familiares, amigos y colaboradores. Eso es algo a lo que casi nadie quiere renunciar a dia de hoy.
Por suerte, existe una solución alternativa: implementar nuestra propia nube privada. De esta forma mantenemos el control sobre nuestra información y podemos seguir disfrutando de la facilidad de acceso.
Hay un pregunta lógica: ¿en que se diferencia una solución de este tipo de utilizar Google Drive, Dorpbox, iCloud u otro servicio similar? Al final tendremos nuestra información en un servidor gestionado por un tercero. Para entender la diferencia, veamos otro tipo servicio que funciona de forma similar: un banco.
En una cuenta bancaria, el banco conoce nuestras operaciones, a quien pagamos y quien nos paga. Sin olvidar que usa nuestros fondos en su propio interés - eso como Google Drive.
Tambien podemos alquilar una caja de seguridad y en este caso el banco no tiene control sobre el contenido de la caja, aunque seguimos aprovechando la infraestructura del banco - eso es nuestra nube privada.
Veamos a continuación que podemos hacer para tener nuestro propio sistema de almacenamiento en la nube.
Almacenamiento en la nube con NextCloud
Entre las muchas alternativas existentes, mi preferida es NexCloud. Se trata de una solución opensource, con una forma de uso similar a Dropbox y que podemos instalar en paralelo con nuestra web. De esta forma aprovechamos mejor la capacidad de nuestro VPS. Aunque tambien podemos adquirir dispositivos con NexCloud incorporado, nos centraremos en como implementarlo en nuestro servidor
El objetivo es tener una plataforma segura, para tener nuestra información disponible en todo momento y con un nivel razonable de seguridad.
Características de NextCloud
NextCloud permite tener nuestros archivos sincronizados entre diferentes disposivos (ordenadores, tablets y smartphones), independientemente del sitema operativo (Windows, OS X, iOS, Android o Linux). Podemos compartir la informacion con otras personas aunque no sean usuarios de nuestro servidor.
Siempre tendremos control sobre que información se comparte. Y por otra parte, incorpora numerosas opciones de comunicación entre usuarios, lo la hace ideal para el trabajo en grupo.
Tambien puede ser utilizada como respaldo en casos de fallos de hardware. Sin embargo, a diferencia de un backup tradicional no protege contra borrados o modificaciones accidentales. Siempre será necesario tener nuestra solución de backup debidamente implementada.
Su implementación requiere un servidor LAMP (Linux, Apache, Mysql y PHP). Podemos trabajar desde su interface web y dispone de clientes para todas las plataformas. Usar el cliente correspondiente nos permite trabajar con nuestras herramientas habituales, sincronizando automáticamente en segundo plano.
Todo el proceso de implementación y el uso posterior está totalmente documentado.
Implementando NextCloud en nuestro VPS
Paso 1- Copiamos los archivos y preparamos el servidor
Asumimos que ya tenemos nuestro servidor LAMP funcionando y cumplimos con los requisitos mínimos de instalación. Las instrucciones sobre como poner en marcha nuestro servidor web, las encontrarems aquí para AWS y aquí para Google Cloud.
Descargarnos el archivo de instalación y lo descomprimimos en una carpeta de nuestro servidor. Nos aseguramos que el usuario www-data tenga los permisos apropiados sobre dicha carpeta y configuramos el virtual host, sin olvidar crear la entrada apropiada en DNS.
Aquí tenemos un ejemplo de configuración para el archivo virtual host
<Directory /var/www/nextcloud_dir>
Options +FollowSymLinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
Satisfy Any
</Directory>
<VirtualHost *:80>
ServerAdmin webmaster@example.com
ServerName cloud.example.com
DocumentRoot /var/www/nextcloud_dir/
ErrorLog /var/www/logs/nextcloud_dir/error.log
CustomLog /var/www/logs/nextcloud_dir/access.log combined
</VirtualHost>
Es altamente recomendable utilizar SSL, por ejemplo a traves de Let's Encrypt y Certbot.
Comprobamos que estén habilitados mod_rewrite (obligatorio), y mod_headers, mod_env, mod_dir y mod_mime (recomendados).
Paso 2- Continuamos la instalación a través de la web
Accedemos a la url de nuestro servidor de nextcloud y completamos la información necesaria para finalizar la instalación
1- Datos para la cuenta de administrador. No useis nombres comunes como admin y, sobre todo, que la contraseña sea compleja. Lo ideal es que el medidor sea totalmente verde.
2 - Indicamos la carpeta donde se almacenarán los datos. Puede ser cualquier carpeta existente cuyo propietario sea el servidor web. Una buena solución sería utilizar un volumen adicional en nuestro VPS. Es posible mover la carpeta de datos despues, pero lo más fácil es establecerla correctamente durante la intalación.
3 - Introducimos la información correspondiente a la base de datos. Solo si estamos probando, si somos los únicos usuarios y no usaremos sincronización dejaremos SQLite. En cualquier otro caso indicaremos los parámetros correspondientes a nuestra base de datos. Al igual que la carpeta de datos, la base de datos debemos debe estar creada en nuestro servidor antes de proseguir con la instalación
Una vez rellenada toda la información hacemos click en el botón de Completar Instalación y esperamos unos minutos
Si todo ha ido bien, pasaremos a la ventana de bienvenida
La instalación ha finalizado y nuestra nube privada está lista para su uso
Paso 3 - Ajustes finales
Aunque ya tenemos nuestra nube totalmente funcional, todavia quedan algunos ajustes por hacer.
Primero acedemos a la configuración, desde en icono en el extremo superior derecho.
En Vista General, tendremos las recomendaciones para dar los toques finales a la configuración de nuestro servidor
En primer lugar, debemos actualizar la configuración de nuestro servidor de correo para poder recibir notificaciones por email. El enlace nos lleva directamente a la ventana donde completar esta informacion. Como paso previo debemos configurar nuestros datos personales, sobre todo nuestro email
Al completar la información del perfil, pdoemos decidir que elementos queremos que sean públicos y cuales serán de acceso restringido.
Si utilizamos SSL debemos redirigir todo el trafico por HTTPS (Certbot nos permite hacerlo al generar el certificado) y ademas habilitar HTTP Strict Transport Security. Para esto último incluimos en el archivo de configuración de nuestro virtual host:
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
</IfModule>
Podemos acceder al resto de recomendaciones de seguridad siguiendo el enlace de la página.
Para activar el cache utilizaremos el módulo APCu, incluido en PHP 7. Podemos descargar el paquete para Ubuntu de la forma habitual: sudo apt-get update y sudo apt-get install php-apcu. Reiniciamos el servidor web con sudo service apache2 restart y, una vez reiniciado el servidor, añadimos al config.php de nextcloud la línea: 'memcache.local' => '\OC\Memcache\APCu', (incluyendo la coma).
Ajustamos el archivo php.ini con los valores recomendados de OPCache
opcache.enable=1
opcache.enable_cli=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1
y finalmente añadimos a la configuracion de nuestro virtual host las líneas
<IfModule headers_module>
RequestHeader set X-HTTPS 1
Header set Referrer-Policy "no-referrer-when-downgrade"
</IfModule>
Si volvemos a la página de configuración vemos que todo está OK
Paso 4 - Descargamos el cliente en nuestros dispositivos
La primera vez que accedemos al servidor, tendremos la opción de descargar el cliente de escritorio que corresponda. Si no lo hemos hecho, o si deseamos instalarlo en un segundo dispositivo, tenemos la opción de descargarlo desde Movil y escritorio en nuestro perfil de usuario
Una vez descargada la aplicación realizamos una instalación estandard. Al ejecutarse por primera vez se nos pediran los datos de conexión. Primero indicamos la url del servidor y en la segunda pantalla las credenciales de acceso
Una consideración muy importante.
Podemos usar nuestras credenciales de usario, pero quedarán comprometidas si perdemos el dispositivo. La solución es crear una contraseña específica, que podremos revocar en cualquier momento.
De esta manera nos protegemos ante este tipo de amenazas.
Gestionaremos las contraseñas generadas desde el apartado seguridad de nuestro perfil. Desde esa ventana podremos revocar el acceso a cualquier dispositivo que se haya conectado a nuestra cuenta con anterioridad.
Finalmente, si no nos gusta la carpeta propuesta por defecto, seleccionamos una de nuestra preferencia para guardaremos los archivos sincronizados.
Una vez conectados al servidor, continuaremos trabajando con normalidad. Solo tenemos que colocar en la capeta elegida la información que vamos a sincronizar entre todos nuestros dispositivos.
Conclusiones
Hemos visto como podemos implementar nuestra propia nube privada de una manera relativamente sencilla. Es un sistema sencillo de utilizar y muy parecido a Dropbox.
Puede coexistir perfectamente con nuestro blog o web, lo que nos permite optimizar nuestros costes. Incluso tenemos la opción de instalarlo en un hosting compartido. Con los costes actuales del hosting, es una opción a tener en cuenta si buscamos una gestión centralizada, multiples usuarios y sobre todo control total sobre nuestros datos.
En entregas posteriores hablaremos más a fondo de su administración y los diferentes módulos disponibles.
Si estás interesado en tener tu nube privada, pero no te ves capaz de implementarlo por tus propias medios, avísame. Seguro que puedo ayudarte a conseguirlo