Instalar Nextcloud en Ubuntu con Redis y SSLInstalar Nextcloud en Ubuntu con Redis y SSL

En el siguiente articulo vamos a explicar como instalar un servidor Nextcloud versión 20 en Ubuntu server 20.04 con un certificado SSL (Let´s Encrypt) y con Redis para acelerar la carga de los archivos que tengamos almacenados en el.

En esta guía no vamos a contar como instalar Ubuntu (realizare un manual mas adelante). Partimos de la base que ya lo tenemos instalado en el equipo/servidor elegido y únicamente nos centraremos en la configuración de este hasta tener operativo el servicio Nextcloud.

Dicho esto nos ponemos manos a la obra.

En mi caso voy a instalar Nextcloud 20.04 en la distribución de Ubuntu Server (es decir sin un GUI) puesto que a la hora de recursos siempre es mejor que la versión grafica. Aun así, si os decidís a instalarlo en la versión de Ubuntu Desktop no hay problema, los pasos son exactamente los mismos.

Todos los pasos del manual se realizaran con la Terminal del sistema, por lo que si estas usando la versión Desktop tienes que buscarla donde están todos los programas.

Necesitamos un usuario con privilegios en el sistema para poder instalar todo, en mi caso usare root para evitar problemas de permisos. Antes de empezar a instalar nada podéis loguearos con este usuario y evitar tener que poner el comando sudo delante de cada comando.

1. Actualización del equipo

Lo primero es actualizar el sistema con el siguiente comando:

apt update && sudo apt upgrade -y

2. Instalación de programas y dependencias

Instalaremos LAMP (Linux, Apache, MariaDB y PHP)en nuestro equipo puesto que Nextcloud 20.04 utiliza apache como cualquier servicio web para dar el servicio, una base de datos (MariaDB) y php para ejecutar nuestro código.

apt install lamp-server^ -y

A continuación instalaremos Redis para aumentar la velocidad a la hora de cargar fotos, documentos, etc.. en nuestro Nextcloud. No es obligatorio instalarlo pero si muy recomendable puesto que veremos un aumento importante en la carga de nuestros archivos, como por ejemplo las miniaturas de las fotografías.

apt install redis-server php-redis -y

apt install php-zip php-bcmath php-intl php-imagick php-gmp php-dompdf php-xml php-mbstring php-gd php-curl unzip -y

(Es todo un comando por lo que escribir todo el comando junto en caso de que os lo divida)

a2enmod rewrite headers env dir mime

Reiniciamos el servicio apache para aplicar todos los cambios que hemos realizado.

service apache2 restart

3. Configuración de Apache para Nextcloud 20.04

Lo siguiente que haremos será crear el fichero nextcloud.conf dentro del directorio apache2 donde tendremos la configuración de nuestra web para acceder sin problema desde cualquier navegador web.

En este caso usare el editor nano puesto que me resulta mas amigable, pero siempre tenemos otras opciones como VIM o en caso de usar un entorno gráfico: gedit.

nano /etc/apache2/sites-available/nextcloud.conf

Explicare un poco lo que estamos haciendo con este comando. Lo primero indicamos el editor que vamos a utilizar (nano), lo siguiente que hacemos es movernos a la ubicación /etc/apache2/sites-available y finalmente creamos el archivo nextcloud.conf.

Una vez tengamos el editor abierto nos aparecerá el documento vacío sin nada escrito, copiamos lo siguiente:

*** IMPORTANTE: Tenemos que cambiar donde pone nextcloud.blogdelbit.com por nuestro nombre de dominio ***

Control+x para guardar y salir.

a2enmod rewrite headers env dir mime setenvif ssl

a2ensite nextcloud.conf && sudo /etc/init.d/apache2 restart

Habilitamos el uso del nuevo fichero creado y reincidimos el servicio apache2 para aplicar cambios.

4. Configuración SSL

Hasta este punto del manual tenemos configurado el servicio apache en nuestro maquina funcionando a la perfección, de hecho, si accedemos desde un navegador web (firefox, chrome, edge, etc …) con la dirección IP de nuestro servidor nos aparecerá la pagina web «por defecto» (adjunto foto mas abajo) de apache diciéndonos que todo se ha instalado correctamente y funciona bien.

apt install certbot python3-certbot-apache -y

certbot --apache

(Este comando lleva dos guiones seguidos antes de apache, sino os funciona percataros que esta bien escrito. Os dejo una captura para que veáis como tiene que aparecer.)
Comando certbot –apache

Una vez ejecutemos el comando anterior nos pedirá las siguientes cosas:

1-> Ingresar un correo electrónico donde puedan enviarnos noticias de seguridad o de renovaciones urgentes en nuestros certificados SSL.

2-> Aceptar términos del servicio.

3 -> Aceptar/No Aceptar compartir nuestro correo electrónico con la fundación Electronic Frontier para mandarnos diferentes artículos sobre campañas, noticias, etc …

4 -> ¡Ahora si que si! Nos saldrá la lista de los dominios disponibles y de los que nos gustaría activar HTTPS. Puesto que estamos haciendo una instalación limpia de 0 únicamente nos aparecerá el dominio configurado anteriormente en el fichero: nextcloud.conf

Seleccionar Dominio para activar HTTPS

Seleccionamos nuestro dominio (en nuestro caso el 1 y único que hay) y en el siguiente paso la opción 2 que nos dice: Redireccionar.

Certificado SSL configurado

Hasta este paso tenemos configurado correctamente el certificado SSL de Let´s Encrypt para nuestra web.

*** ATENCIÓN: En este paso es MUY importante tener el puerto 443 abierto en nuestro Router para obtener un resultado valido a la hora de instalar nuestro certificado. Ya que abrimos este puerto aprovecharemos para abrir también el 80 y dejar el acceso vía web operativo. ***

Si no tenemos abierto este puerto nos dará el siguiente error:

Error Certificado HTTPS

En caso de encontrarnos esta situación no pasa nada, abrimos los puertos mencionados anteriormente y ejecutamos nuevamente el comando anterior (certbot –apache) repitiendo todos los pasos hasta obtener el resultado correcto.

5. Instalación de Nextcloud 20.04

Ubicados en la carpeta home de nuestro usuario (en nuestro caso: /home/nextcloud-pruebas), ejecutamos el siguiente comando que nos servirá para descargar la ultima versión disponible de Nextcloud. (en este caso es Nextcloud 20.04)

wget https://download.nextcloud.com/server/releases/latest.zip

Descarga última versión disponible de Nextcloud

Lo siguiente que haremos será descomprimir el fichero .zip que acabamos de descargar. Con el siguiente comando lo extraemos en el directorio /var/www

unzip latest.zip -d /var/www/

Descomprimir latest.zip en directorio /var/www

A continuación cambiamos el propietario de la carpeta que se nos acaba de generar dentro de /var/www/nextcloud con el siguiente comando:

Dato: chown es una abreviatura de “change owner” (cambiar de propietario).

chown www-data:www-data /var/www/nextcloud/ -R

Cambio de propietario a la carpeta /var/www/nextcloud

6. Creación de la Base de Datos

Antes de nada tenemos que abrir mysql para realizar las consultas sencillas que vienen a continuación. Para ello ejecutamos el comando:

mysql

Acceso a la base de datos mysql

Una vez estamos dentro observamos que se queda el prompt como la imagen, es decir, mysql> esperando una entrada por teclado.

A continuación creamos una base de datos y una usuario especifico de Nextcloud con los siguientes comandos:

CREATE DATABASE nextcloud;

CREATE USER 'ncusuario'@'localhost' IDENTIFIED BY 'nccontraseña';

GRANT ALL PRIVILEGES ON nextcloud . * TO 'ncusuario'@'localhost';

Comandos para crear base de datos, usuario y darle privilegios.

*** IMPORTANTE: tanto el nombre de usuario (ncusuario) como la contraseña (nccontraseña) tenemos que cambiarlo por lo que cada uno quiera y recuerde.

Es importante acordarse por si en algún futuro tenemos que realizar cambios en la base de datos. ***

CREATE DATABASE
CREATE USER y GRANT

Finalmente para salir de la sesión y de mysql escribiremos: quit.

7. Configuración de Redis

La diferencia que tenemos frente a un servidor que tiene instalado algún tipo de software para manejar la memoria caché frente a otro que no es enorme. Principalmente lo notamos a la hora de cargar miniaturas de las fotografías que tenemos almacenadas o simplemente a la hora de visualizarlas.

Sea como sea es MUY aconsejable tener habilitado algún tipo de caché en nuestro servidor para mejorar el rendimiento del mismo.

En esta guía vamos a mostrar como instalar Redis, para ello haremos lo siguiente:

  • Abriremos el fichero de configuración de Redis ubicado en: /etc/redis/redis.conf

nano /etc/redis/redis.conf

Editamos el fichero redis.conf

En nuestro caso utilizamos el editor nano pero nos sirve cualquier otro como vim, gedit (versión desktop), etc …

Incluso podemos conectarnos mediante SSH a la maquina con un software especifico como puede ser WinSCP para visualizar toda la jerarquía de carpetas y editarlas mas fácilmente de una forma mas amigable.

Una vez dentro del fichero tendremos que buscar las siguientes líneas de código y des comentarlas.

  • unixsocket /var/run/redis/redis-server.sock
  • unixsocketperm 700 IMPORTANTE: (esta línea de código tenemos que cambiar lo permisos a 770) por lo que nos tendría que quedar como: unixsocketperm 770

Buscaremos también la lía que tenga lo siguiente:

  • port 6379 y lo cambiaremos por: port 0

Añadiremos el usuario www-data al grupo redis:

usermod -a -G redis www-data

usuario www-data al grupo redis

Reiniciamos el servicio de apache y de redis para aplicar los cambios con el siguiente comando:

service redis-server restart && service apache2 restart

Reiniciamos servicio redis y apache

8. Finalización de la Instalación

Estamos llegando al final, si habéis llegado a este punto sin ningún fallo aguantar un poco mas que en breve terminamos.

Lo siguiente que haremos será entrar (por fin) a configurar nuestro servidor de nextcloud, para ello haremos lo siguiente:

  • Con el dominio que hemos configurado anteriormente abrimos cualquier navegador web e introducimos la URL. En nuestro caso seria: nextcloud.blogdelbit.com. Una vez dentro nos aparecerá lo siguiente:
Instalación Nextcloud
  • En el primer punto crearemos una cuenta de Administrador con el nombre y contraseña que nosotros elijamos, eso si, es muy importante acordarse de ella puesto que la usaremos para dar de alta nuevos usuarios.
  • La carpeta de almacenamiento y base de datos la dejamos en donde aparece por defecto: /var/www/nextcloud/data (se podría cambiar pero no lo recomiendo).
  • Usuario de la base de datos creado en el punto 6 del manual, en nuestro caso es: ncusuario
  • Contraseña de la base de datos creado tambien en el punto 6, en nuestro caso: nccontraseña
  • Nombre de la base de datos, en nuestro caso: nextcloud
  • El ultimo punto viene marcado por defecto (Instalar las aplicaciones recomendadas). Recomiendo dejarlo marcado puesto que nos instala una serie de características bastante útiles como puede ser Talk para tener un chat privado entre los empleados de nuestra empresa.
  • FINALIZAR INSTALACIÓN

Como podemos observar tenemos funcionando nextcloud 20.04 sin problemas. Cuenta con aplicación móvil para IOS y Android y también para escritorio (Windows, OS X, Linux).

Para que Redis funcione correctamente ahora que tenemos nuestro servidor funcionando tenemos que hacer un último cambio en la configuración.

Para ello nos vamos a la siguiente ruta:

cd /var/www/nextcloud/config

Y editamos el fichero de configuración: config.php

nano config.php

Al final del fichero y justo antes de ); del final añadimos lo siguiente:

De manera que nos tiene que quedar asi:

/var/www/nextcloud/config/config.php

Reiniciamos la maquina (reboot) y cuando este arrancada de nuevo tendremos nuestro servidor Nextcloud 20.04 funcionando.

9. Configuraciones adicionales Nextcloud 20.04

  • Pretty links (enlaces bonitos). Si queremos que la estética de nuestro servidor mejore, tenemos esta opción que nos deja los enlaces que aparecen en el navegador mas «bonitos«. Es decir, suprimen por decirlo de alguna manera algunos de los números/letras que aparecen en la URL acortándola y hacen que visualmente sea mas elegante.

Para esto abrimos nuevamente el fichero de configuración:

nano /var/www/nextcloud/config/config.php

Y justo después de: 'installed' => true,

añadimos lo siguiente: 'htaccess.RewriteBase' => '/',

Aplicamos cambios con el siguiente comando:

cd /var/www/nextcloud && sudo -u www-data php occ maintenance:update:htaccess

El resultado es el siguiente:

(Antes)

(Después)

  • Aumento de memoria en PHP. Esta opción es muy recomendable para aumentar la memoria de PHP que por defecto viene instalada. Si no lo cambiamos PHP limitara los archivos que estamos mandando al servidor y ralentizara el envió y recepción de estos.

Entramos en el fichero de configuración de apache: php.ini

nano /etc/php/7.4/apache2/php.ini

Primer valor: post_max_size = 8M y lo cambiamos por post_max_size = 1034M

Segundo valor: upload_max_filesize = 2M y lo cambiamos por upload_max_filesize = 1024M

Tercer valor: memory_limit = 128M y lo cambiamos por memory_limit = 512M

IMPORTANTE: Se aconseja darle siempre un poco mas de valor a post_max_size que a upload_max_filesize

Reiniciamos todo el equipo para aplicar cambios y listo !!! Tendremos funcionando al 100% un Servidor con Ubuntu Server y Nextcloud 20.04

Ultima actualización: 13 Noviembre 2020

Por Jorge Garcia Garcia

Buenas a todos, mi nombre es Jorge y actualmente trabajo como ingeniero software en un proyecto de tráfico aéreo. Además, estoy cursando el grado de Ingeniería de Computadores en la Universidad de Alcalá de Henares. Termine el grado superior de Administración de Sistemas y como siempre me ha apasionado en tema de la Informática decidí hacer la carrera. Actualmente tengo unos conocimientos bastante amplios respecto a configuración de servidores y creación de páginas web y mi idea es compartir todo con vosotros para que también aprendáis.

2 comentarios en «Instalar Nextcloud 20 en Ubuntu 20.04 con SSL y Redis»
  1. Hola, te faltó asignar permisos a la carpeta data cuando el almacenamiento es externo y se monta en la carpeta interna que tiene nextcloud configurada por defecto.
    Me tiró el error «No es posible crear o escribir en el directorio de datos /var/www/html/nextcloud/data»
    Saludos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *