Categorías
Software Libre

Instalando Nextcloud / Owncloud : Nube Personal en Arch Linux

Contexto

Hace ya un buen tiempo venimos usando servicios en la nube para almecenar nuestros archivos : Google Drive, Onedrive o Dropbox. Estos servicio toman la información de todos para su propio beneficio, de terceros, o del gobierno.

Son servicios tremendamente útiles, y nos obligan a entregar nuestra información a grandes corporaciones con sede en EEUU.

Como cada día tengo menos confianza en nuestras instituciones (COVID, Desinformación, Sistemas de Vigilancia de datos) creo es importante entendamos lo firmado cuando aceptamos los acuerdos de privacidad :

Google

We provide personal information to our affiliates and other trusted businesses or persons to process it for us, based on our instructions and in compliance with our Privacy Policy and any other appropriate confidentiality and security measures. For example, we use service providers to help us with customer support.

We’ll process your data when we have a legal obligation to do so, for example, if we’re responding to legal process or an enforceable governmental request.

Microsoft Onedrive :

We share your personal data with your consent or to complete any transaction or provide any product you have requested or authorized. We also share data with Microsoft-controlled affiliates and subsidiaries; with vendors working on our behalf; when required by law or to respond to legal process; to protect our customers; to protect lives; to maintain the security of our products; and to protect the rights and property of Microsoft and its customers.

Dropbox

Dropbox uses certain trusted third parties (for example, providers of customer support and IT services) to help us provide, improve, protect, and promote our Services. These third parties will access your information only to perform tasks on our behalf in compliance with this Privacy Policy, and we’ll remain responsible for their handling of your information per our instructions.

We may disclose your information to third parties if we determine that such disclosure is reasonably necessary to (a) comply with the law; (b) protect any person from death or serious bodily injury; (c) prevent fraud or abuse of Dropbox or our users; or (d) protect Dropbox’s property rights.”

En resumen pueden compartir esa inforación con terceros, y tu nos has firmado acuerdo con los terceros, por lo que pueden pasarle la información a quien quieran. Y además te hacen pagar por eso.

Instalando una nube personal con Nextcloud :

Entonces, hay una forma de obtener prácticamente estos mismos servicios usando un pequeño servidor en casa con software de código abierto, para esto puedes usar una Raspberry Pi o un computador viejo que esté en desuso.

Algunas recomendaciones previas:

  1. Una raspberry PI , o cualquier PC on al menos 2GB de RAM es suficiente servidor para correr Nextcloud o Owncloud.
  2. En lo posible utiliza un disco de estado sólido (SSD) para almacenar los datos, por experiencia fallan mucho menos y tendrás tiempos de acceso bastante mejores. Si no tienes uno usa discos duros magnéticos, en raid 1 o con backup diario.
  3. Instala una pequeña UPS para porteger el servidor y la conexión a internet de posibles caídas de corriente.
  4. Configura el router de internet para redirigir el puerto 443 desde internet al servidor.
  5. Configura en el servidor un servicio de DNS dinámico para que puedas acceder a tus archivos desde tu celular cuando estés fuera de casa.

Para este tutorial asumimos ya :

  1. Tienes un servidor con Arch Linux instalado
  2. Has configurado la descarga de paquetes desde el AUR
  3. Configurado un servido Nginx
  4. Configurado PHP con FPM con módulos php-intl php-apcu php-pgsql
  5. Configurado un servidor de Base de datos Postgresql

Parámetros de Configuración :

  • Directorio donde se almacenarán los archivos de la nube, el tamaño de almacenaje de la nube será el tamaño de este archivo : /var/data/
  • Nombre de la base de datos postgresql : nextcloud
  • Nombre de usuario de la base de datos postgresql : nextcloud

1.- Crear el sitio de Nextcloud en Nginx, les dejo mis archivos de configuración :

Crear un certificado .crt y una llave .key y dejarlas en el directorio /etc/nginx, debes tener instalado openssl :

cd /etc/nginx
openssl req -newkey rsa:2048 -nodes -keyout server.key -x509 -days 36500 -out server.crt

2.- Agregamos el usuario y la base de datos :

sudo -iu postgres
createuser -h localhost -P nextcloud
createdb -O nextcloud nextcloud

3.- Instalamos Nextcloud

yay -S nextcloud

4.- Creamos la carpeta de configuracion data y cambiamos los permisos de las carpetas que se instalaron el paso 2.

mkdir -p /usr/share/webapps/nextcloud/data
chown -R http:http /usr/share/webapps/nextcloud/{apps,data}
chmod 750 /usr/share/webapps/nextcloud/{apps,data}

5.- Creamos el directorio donde se almacenarán los datos de la nube con permisos al usuario del servidor web, por defecto http :

mkdir /var/data
chown -R http:http /var/data
chmod -R 750 /var/data

6.- Configuramos php-fpm para que pueda escribir los directorios de Nextcloud y el directorio de datos de la nube :

systemctl edit php-fpm.service

Se abrirá un editor e ingresamos :

[Service]
ReadWritePaths = /usr/share/webapps/nextcloud/apps
ReadWritePaths = /usr/share/webapps/nextcloud/data
ReadWritePaths = /etc/webapps/nextcloud/config

# Este es el directorio donde se almacenarán los datos de la nube :
ReadWritePaths = /var/data

7.- Luego reiniciamos nginx y php-fpm :

systemctl restart php-fpm
systemctl restart nginx

8.- Configuramos Nginx

9.- Autorizamos el acceso al servidor desde otras direcciones, editamos el archivo /usr/share/webapps/nextcloud/config/config.php

Este archivo lo genera automáticamente el instalador de Nextcloud, agregamos los nombres del servidor adicionales : :

  array (
    0 => 'nombrehost',
    //el nombre del servidor en la red interna configurado en /etc/hosts
    1 => 'ejemploservidor.gtk.cl',
    //el nombre del servidor en freedns
    2 => '192.168.0.3'
    //la IP interna de la máquina
 ),

10.- Habilitar thumbnails de videos, debes tener instalado el paquete ffpmeg.

Agrega al antes de la linea de cierre «);» el siguiente código :

‘enable_previews’ => true,
'enabledPreviewProviders' =>
array (
0 => 'OC\Preview\Image',
1 => 'OC\Preview\Movie',
2 => 'OC\Preview\TXT',
),