Categorías
20.04 HowTos

Instalar Nextcloud en Ubuntu 20.04

Paso a paso para instalar Nextcloud en Ubuntu 20.04. Utilizando LAMP (Linux, Apache2, MariaDB y PHP), también explico como ponerlo en https.

Nexcloud Logo

Durante este procedimiento documento el paso a paso de como a instalar NextCloud en Ubuntu 20.04. Voy a partir de una instalación fresca.

El objetivo es tener un servidor corriendo NextCloud sobre LAMP (Linux / Apache / MySQL / PHP) y como paso extra recomendamos ejecutar este procedimiento para que nuestro sitio quede expuesto con certificados firmados por https://letsencrypt.org/ utilizando certbot.

Nextcloud es una serie de programas cliente-servidor con el objetivo de crear servicio de alojamiento de archivos. Su funcionalidad es similar al software Dropbox, aunque Nextcloud es de tipo código abierto, permitiendo a quien lo desee instalarlo en un servidor privado. Su arquitectura abierta permite añadir funcionalidad al servidor en forma de aplicaciones. Nextcloud es un proyecto paralelo de ownCloud que también es un software de servicio de alojamiento en la nube.

(Extraído de Wikipedia)

Procedimiento:

El procedimiento es una recopilación de los pasos de la documentación oficial de Nexcloud, quise dejar disponible todos los pasos en un documento y en español.

Instalación de dependencias:

El primer paso es asegurarse de tener el sistema actualizado, esto lo hacemos ejecutando:

sudo apt update 
sudo apt full-upgrade -y

Como estoy realizando la instalación sobre un servidor nuevo lo primero que voy a realizar el instalar mi suite de utilidades básicas que documento en este post.

El siguiente paso instalar los complementos necesarios para que funcione NextCloud:

sudo apt install -y apache2 mariadb-server libapache2-mod-php7.4 libapache2-mod-security2 php7.4-gd php7.4-mysql php7.4-curl php7.4-mbstring php7.4-intl php7.4-gmp php7.4-bcmath php-imagick php7.4-xml php7.4-zip

Descarga de NextCloud:

El siguiente paso es descargar la última versión de NextCloud. Al momento de confeccionar este tutorial es la 19.0.3. La última versión la podemos encontrar en la página oficial del proyecto en la sección.

Captura de pantalla con el link a la página de desgarga del servidor de nextcloud.
cd /tmp
wget https://download.nextcloud.com/server/releases/nextcloud-19.0.3.zip
unzip nextcloud-19.0.3.zip

A continuación voy a crear el árbol de directorio donde quiero alojar los distintos virtualhosts que va a alojar este equipo.

sudo mkdir -p /var/www/servers/nextcloud.sismonda.com.ar

Y dentro voy a copiar el directorio que contiene a nexcloud dentro de esta carpeta con el nombre nextcloud.sismonda.com.ar

sudo mv /tmp/nextcloud /var/www/servers/nextcloud.sismonda.com.ar/htdocs
sudo chown www-data.www-data -R /var/www/servers/nextcloud.sismonda.com.ar/htdocs

Configuración de MariaDB o MySQL:

Ahora vamos a adecuar el motor de base de datos para crear la base y el usuario. La contraseña a utilizar la voy a crear con el comando «mkpasswd.pl» de esta forma a seguro de utilizar siempre una distinta.

mkpasswd.pl -l 15
Ejemplo de ejecución del comando mkpasswd.pl con parametría para obtener una contraseña de 15 caracteres.
sudo mysql -u root

Y dentro de la consola de mysql ejecutamos los siguientes comando,

CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'phO9nehx3jdBik$';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
Captura de pantalla de la ejecución de la sentencia.

Configuración de Apache2/PHP:

Tenemos pendiente la configuración del Apache (el servidor web), este paso implica crear el archivo de configuración del virtualhost, configurar y habilitar módulos, deshabilitar el sitio por defecto y configurar el límite de memoria en el php.ini.

Creamos el archivo de configuración para nuestro virtualhosts

sudo vi /etc/apache2/sites-available/nextcloud.sismonda.com.ar.conf

Con el siguiente contenido:

<VirtualHost *:80>
	ServerName nextcloud.sismonda.com.ar
	ServerAdmin webmaster@sismonda.com.ar
	DocumentRoot /var/www/servers/nextcloud.sismonda.com.ar/htdocs
	
	<IfModule mod_headers.c>
		Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
		Header always append X-Frame-Options SAMEORIGIN

	</IfModule>
        <Directory /var/www/servers/nextcloud.sismonda.com.ar/htdocs/>
		Require all granted
		AllowOverride All
	 	Options FollowSymLinks MultiViews
        </Directory>

	SecRequestBodyLimit 393216000 
	Redirect 301 /.well-known/carddav https://nextcloud.sismonda.com.ar/remote.php/dav
	Redirect 301 /.well-known/caldav https://nextcloud.sismonda.com.ar/remote.php/dav



	ErrorLog ${APACHE_LOG_DIR}/nextcloud-sismonda-error.log
	CustomLog ${APACHE_LOG_DIR}/nextcloud-sismonda-access.log combined

</VirtualHost>

Finalizada la configuración de los sitios vamos a proceder a deshabilitar el sitio por defecto y habilitar nuestro sitio de nextcloud.

sudo a2ensite nextcloud.sismonda.com.ar.conf
sudo a2dissite 000-default.conf

Procedemos a habilitar módulos necesarios / recomendados para nextcloud.

sudo a2enmod rewrite
sudo a2enmod headers
sudo a2enmod env
sudo a2enmod dir
sudo a2enmod mime
sudo a2enmod security2

Ahora nos queda adecuar algunas variables de entorno de php para poder manejar los archivos de nextcloud.

sudo vi /etc/php/7.4/apache2/php.ini
memory_limit = 2048M

El ultimo paso es recargar el apache para que impacte nuestra instalación.

sudo systemctl reload apache2.service

Puesta en marcha Nextcloud:

El siguiente paso es acceder a nuestra instancia de nextcloud, esto lo podemos hacer ingresando la ip de nuestro servidor o el nombre del virtualhost si tenemos configurado el DNS local o agregamos la línea en nuestro archivo hosts.

Nextcloud nos recibe con la pantalla de wizard de configuración, donde damos de alta un usuario administrador de la plataforma y configuramos el usuario de la base de datos y su contraseña.

En mi caso yo destildé la opción que instale las aplicaciones recomendadas.

Wizard de configuración NextCloud

Finalizada la instalación ya tenemos nuestra instancia de nextcloud andando.

Captura de pantalla de la instalación de NextCloud en Ubuntu 20.04.

Optimizaciones de PHP

OpCache:

Habilitar OpCache, para eso debemos editar el archivo /etc/php/7.4/apache2/php.ini y adecuar / descomentar las siguientes líneas:

opcache.enable=1
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.memory_consumption=128
opcache.save_comments=1
opcache.revalidate_freq=1

Apcu:

Para habilitar Apcu (APC User Cache) debemos ejecutar los siguientes comandos:

sudo apt install php-apcu
sudo systemctl restart apache2

Y a continuación habilitar la funcionalidad en nextcloud.

sudo vi /var/www/servers/nextcloud.sismonda.com.ar/htdocs/config/config.php

Y agregar la siguiente línea.

'memcache.local' => '\OC\Memcache\APCu',

(Actualizado en 31/09/2021)

En las ultimas versiones de nextcloud, para que el cron se ejecute correctamente tenemos que editar el archivo «/etc/php/7.4/cli/conf.d/20-apcu.ini» y agregar la siguiente línea:

apc.enable_cli = 1

Queda de la siguiente forma:

Ejemplo del config.php de NextCloud con la definición de memecache incorporada.

El único paso que nos falta es acceder al portal de nuestro Nextcloud corriendo en Ubuntu 20.04.

Página de login de la instancia de nextcloud funcionando.

En la ultima captura podrán ver que mi instancia de Nextcloud en Ubuntu 20.04 esta corriendo sobre https. Esto lo hice ejecutando el tutorial: Apache2 https con Certbot.

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.