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
# apt install 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=31536000; 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