Instalación de NextCloud con Let’s Encrypt y Redis en Debian 9 Stretch

En este tutorial os vamos a explicar cómo instalar NextCloud con el certificado Let´s Encrypt y el servidor Redis en Debian 9 Stretch.

Para poder hacer esta configuración, es necesario tener instalado y configurado LAMP. También es recomendable crear el puntero en del subdominio.

Instalación de Redis y Apache

Se instala el paquete de Redis
php-redis redis-server
Y se habilita con
systemctl enable redis-server
También se instalan los paquetes de PHP que se necesitan para Netxcloud.
apt install php7.0-zip php-dompdf php7.0-xml php7.0-mbstring php7.0-curl unzip php7.0-gd php7.0-mysql
Para activar los módulos en Apache
a2enmod rewrite headers env dir mime
Como nos indica al finalizar la instalación de los módulos, reiniciamos Apache
systemctl restart apache2
A continuación, se crea un VirtualHost para el NextCloud para empezar a configurar Apache
cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/nextcloud.conf
Se edita el contenido del fichero
nano /etc/apache2/sites-available/nextcloud.conf
Con el siguiente contenido

<VirtualHost *:80>
ServerName nc.diariodeunalinuxera.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/vhost/nc.diariodeunalinuxera.com/www
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/html/vhost/nc.diariodeunalinuxera.com/www>
Options Indexes FollowSymLinks MultiViews
AllowOverride FileInfo
#AuthConfig
Order allow,deny
allow from all
</Directory>
ErrorLog /var/www/html/vhost/nc.diariodeunalinuxera.com/logs/error.log
LogLevel warn
CustomLog /var/www/html/vhost/nc.diariodeunalinuxera.com/logs/access.log combined
<IfModule mod_headers.c>
Header always set Strict-Transport-Security “max-age=15768000; includeSubDomains; preload”
</IfModule>
</VirtualHost>

Se activa el espacio web y se reinicia Apache
cd /etc/apache2/sites-available/
a2ensite nextcloud.conf
systemctl restart apache2

Instalación del certificado SSL

Ahora se instalan los paquetes necesarios para el certificado SSL
apt install letsencrypt certbot python-certbot-apache
Se crea el certificado con el siguiente comando, hay que introducir un correo válido. Cuando se generen los ficheros de configuración y otras cosas importantes como CSR, hay que elegir que tipo de acceso HTTPS se utilizará, lo más recomendable es la opción 2 “Secure – Make all requests redirect to secure HTTPS access”
certbot --authenticator standalone --installer apache -d nc.diariodeunalinuxera.com --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2"

Instalación de NextCloud

Ya tenemos el servidor web con un vHost que permite acceso por subdominio. Lo siguiente es instalar NextCloud. Para ello se descarga la última versión en la ruta de la web y se crea su base de datos.
cd /var/www/html/vhost/nc.diariodeunalinuxera.com/www/
wget https://download.nextcloud.com/server/releases/latest.zip

Se descomprime el fichero latest.zip con
unzip latest.zip
Se mueven los ficheros descomprimidos y se elimina el directorio con
mv nextcloud/* . && mv nextcloud/.* . && rm -rf netxcloud
Se cambian los permisos
chown -R www-data:www-data .*
Y a continuación se crea la base de datos
mysql -u root -p
CREATE DATABASE nextcloud;
CREATE USER ‘ncuser’@’localhost’ IDENTIFIED BY ‘ncpassword’;
GRANT ALL PRIVILEGES ON nextcloud . * TO ‘ncuser’@’localhost’;

Se procede con la instalación de NextCloud, para ello ponemos la URL en nuestro navegador y comenzamos configurando una cuenta de usuario administrador y su contraseña segura, también la ruta de almacenamiento de los datos subidos a la nube. Por seguridad es recomendable poner la ruta fuera de la web, podemos hacerlo creando un usuario con un directorio dentro.
useradd -m -d /bin/nologin ddulcom
Se crea el directorio y se cambias los permisos con
mkdir -p /home/ddulcom/cloud
chown www-data.ddulcom -R /home/ddulcom

Esta configuración produce errores en el archivo .htaccess y se debe añadir la que podemos encontrar en el siguiente enlace

https://gitlab.com/snippets/1723283

Terminada esta parte, toca configurar la base de datos rellenando los datos correctamente y haciendo clic en Completar la instalación.

Creamos la cuenta administrador y la ruta correspondiente.

Y completamos la instalación.

Si no ha habido ningún problema, veremos una pantalla como esta y estaremos dentro del panel de NextCloud.

Ya tenemos una nube funcional. Finalmente configuramos la memoria caché en Redis, editamos el fichero
nano /etc/redis/redis.conf
Se modifican los siguientes parámetros

Cambiamos
port 6379 a port 0
Descomentamos
unixsocket /var/run/redis/redis.sock
Descomentamos
unixsocketperm 700
y se varía a 770.

Añadimos el usuario de Redis al grupo Apache
usermod -a -G redis www-data
Y reiniciamos Redis y Apache
systemctl restart redis-server
systemctl restart apache2

Para que NextCloud utilice Redis modificamos el fichero de configuración
nano /var/www/html/vhost/nc.diariodeunalinuxera.com/www/config/config.php
Añadiendo los siguientes datos:
'memcache.local' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'filelocking.enabled' => 'true',
'redis' =>;
array (
'host' =>; '/var/run/redis/redis.sock',
'port' =>; 0,
'timeout' =>; 0.0,
),

Se reinicia el servidor para aplicar la nueva configuración y añadimos la configuración adicional necesaria para Opcache de PHP en php.ini
nano /etc/php/7.0/apache2/php.ini
Añadiendo la siguiente configuración:
Nextcloud Opcache settings 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
Guardamos y reiniciamos Apache
systemctl restart apache2
Y listo! Ya tenemos nuestro NextCloud con Let’s Encrypt y Redis funcionando correctamente.

La autora de este tutorial es Jessica Suárez, de diariodeunalinuxera.com

To write a comment on this article, fill out the form below. Fields marked with an asterisk (*) are required.