Guía definitiva para instalar Nextcloud en AlmaLinux: Tutorial paso a paso

Nextcloud es un software gratuito y de código abierto que te permite crear servicios de alojamiento de archivos como Dropbox, Google Drive o Mega.nz. Fue creado por el desarrollador original de Owncloud, Frank Karlitschek. En 2016, bifurcó el proyecto Owncloud y creó uno nuevo llamado «Nextcloud».

En ese momento, el proyecto Nextcloud creció rápidamente y se convirtió en algo más que un software de alojamiento de archivos. Con el apoyo de un montón de plugins, Nextcloud se ha convertido en un software de Colaboración. Puedes instalar plugins para gestión de proyectos, videoconferencia, edición colaborativa, toma de notas, cliente de correo electrónico, etc.

Esta guía te enseñará cómo instalar Nextcloud en AlmaLinux 9. Instalarás Nextcloud en un servidor AlmaLinux fresco/genérico. Esta guía incluirá alguna instalación de dependencias de paquetes como el servidor web httpd, el servidor de base de datos MariaDB y PHP. Al final de esta guía, también asegurarás Nextcloud con firewalld, SELinux y certificados SSL/TLS de Letsencrypt.

A continuación se indican algunos requisitos de los paquetes para instalar Nextcloud:

requisitos del sistema

Requisitos previos

Para completar esta guía, necesitas los siguientes requisitos:

  • Un servidor Linux que ejecute AlmaLinux 9 – Este ejemplo utiliza un servidor con nombre de host‘alma-nextcloud‘ y dirección IP‘192.168.5.25‘.
  • Usuario administrador o usuario no root con privilegios sudo/root.
  • Firewalld en ejecución y activado.
  • SELinux se ejecuta en modo de refuerzo.
  • Un nombre de dominio apuntando a una dirección IP del servidor – Este ejemplo utiliza un dominio‘nextcloud.hwdomain.io‘.

Ahora vamos a empezar con la instalación.

Instalación del servidor web httpd

Para poner en marcha Nextcloud, puedes utilizar Apache/httpd o Nginx. En esta sección, instalarás el servidor web httpd que se utilizará para ejecutar Nextcloud. En AlmaLinux, el paquete httpd está disponible por defecto, puedes instalarlo a través del gestor de paquetes DNF.

Ejecuta el siguiente comando para instalar el servidor web httpd.

sudo dnf install httpd

Introduce y cuando se te solicite y pulsa ENTER para continuar.

instalar servidor web httpd

Una vez instalado el servidor web httpd, inícialo y habilítalo mediante el siguiente comando.

sudo systemctl start httpd
sudo systemctl enable httpd

Ahora verifica el servidor web httpd para asegurarte de que el servicio se está ejecutando.

sudo systemctl status httpd

Deberías recibir una salida como ésta – El servidor web httpd está habilitado y se iniciará automáticamente al arrancar el sistema. Y el estado del servidor web httpd es en ejecución.

inicio y verificación del servidor web httpd

A continuación, debes abrir HTTP y HTTPS en el firewalld ejecutando el siguiente comando.

sudo firewall-cmd --add-service={http,https} --permanent
sudo firewall-cmd --reload

Una salida‘success‘ confirma que la operación se ha realizado correctamente.

Ahora verifica la lista de servicios en el cortafuegos utilizando el siguiente comando.

sudo firewall-cmd --list-services

Deberías ver que tanto los servicios HTTP como HTTPS están añadidos al firewalld.

abrir http y https en firewalld

Con el cortafuegos configurado, abre ahora tu navegador web y visita la dirección IP del servidor (es decir: http://192.168.5.25/). Deberías ver la página index.html por defecto del servidor web httpd.

página index.html del servidor web httpd

Instalación y configuración de PHP 8.1

Ahora que has instalado el servidor web httpd y configurado el firewalld, es el momento de instalar los paquetes PHP. Esta sección cubrirá cómo instalar PHP 8.1 en AlmaLinux 9 a través del repositorio REMI.

En primer lugar, ejecuta el siguiente comando para añadir el repositorio EPEL a tu sistema. Para instalar paquetes PHP desde el repositorio REMI, primero debes añadir el repositorio EPEL.

sudo dnf install epel-release

Cuando se te solicite, introduce y para confirmar, y pulsa INTRO.

instalación del repositorio epel

A continuación, ejecuta el siguiente comando para instalar el repositorio REMI para el sistema RHEL 9.

sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm

Introduce y cuando se te solicite y pulsa INTRO para continuar.

instalación del repositorio REMI

Después de añadir el repositorio REMI, ejecuta el siguiente comando para restablecer la configuración actual del repositorio PHP. A continuación, activa el módulo de repositorio para‘php:remi-8.1‘.

sudo dnf module reset php -y
sudo dnf module enable php:remi-8.1 -y

La salida esperada tendrá este aspecto:

Activación del repositorio REMI para PHP 8.1

Ahora ejecuta el siguiente comando dnf para instalar paquetes PHP 8.1 a través del repositorio REMI. El siguiente comando también instalará algunas extensiones de PHP necesarias para Nextcloud, incluido el PHP-FPM.

sudo dnf install php php-ctype php-curl php-gd php-iconv php-json php-libxml php-mbstring php-openssl php-posix php-session php-xml php-zip php-zlib php-pdo php-mysqlnd php-intl php-bcmath php-gmp php-imagick php-apcu

Introduce y cuando se te solicite, y pulsa INTRO.

instalar PHP 8.1 para Nextcloud

Una vez instalado PHP, deberás hacer algunos cambios en el archivo de configuración‘php.ini‘ y configurar la extensión PHP OPCache para Nextcloud.

Abre el archivo‘/etc/php.ini’ utilizando el siguiente comando del editor nano.

sudo nano /etc/php.ini

Cambia algunas opciones por defecto como las siguientes líneas. Además, ajusta el tamaño de‘memory_limit‘ con la memoria disponible en tu servidor y las opciones de‘date.timezone‘ con la ubicación de tu servidor.

file_uploads = On
allow_url_fopen = On
memory_limit = 512M
upload_max_filesize = 500M
post_max_size = 600M 
max_execution_time = 300
display_errors = Off
date.timezone = Europe/Amsterdam

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora abre el archivo de configuración PHP OPCache‘/etc/php.d/10-opcache.ini‘ utilizando el editor nano.

sudo nano /etc/php.d/10-opcache.ini

Añade las siguientes líneas al archivo para habilitar y ajustar el PHP OPCache para Nextcloud.

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

Guarda el archivo y cierra el editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para reiniciar el servidor web httpd y el servicio PHP-FPM para aplicar los cambios.

sudo systemctl restart httpd
sudo systemctl restart php-fpm

Ahora que ya has configurado PHP, es hora de verificar tu instalación de PHP creando el archivo‘test.php‘ que te dará información detallada sobre tu instalación de PHP.

Ejecuta el siguiente comando para crear un nuevo archivo‘/var/www/test.php’.

echo "<?php phpinfo(); ?>" > /var/www/test.php

Abre tu navegador web y visita la dirección IP de tu servidor seguida de la ruta del archivo ‘test.php’ (es decir: http://192.168.5.25/test.php).

Si la instalación se ha realizado correctamente, debería aparecer la siguiente página:

probar el servidor web PHP y httpd mediante test.php

Instalación de MariaDB 10.6

Por defecto, Nextcloud admite varios RDBMS (Sistemas de Gestión de Bases de Datos Relacionales) como MySQL/MariaDB, PostgreSQL, Oracle (versión Enterprise) y SQLite. En esta sección, instalarás el servidor MariaDB 10.6 desde el repositorio oficial de MariaDB.

En primer lugar, añade el repositorio oficial de MariaDB creando un nuevo archivo de configuración del repositorio‘MariaDB.repo‘ dentro del directorio‘/etc/yum.repos.d/‘ utilizando el siguiente editor nano.

sudo nano /etc/yum.repos.d/MariaDB.repo

Añade las siguientes líneas al archivo.

# MariaDB 10.6 RedHatEnterpriseLinux repository list
# https://mariadb.org/download/
[mariadb]
name = MariaDB
# rpm.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# baseurl = https://rpm.mariadb.org/10.6/rhel/$releasever/$basearch
baseurl = https://mirror.23m.com/mariadb/yum/10.6/rhel/$releasever/$basearch
# gpgkey= https://rpm.mariadb.org/RPM-GPG-KEY-MariaDB
gpgkey=https://mirror.23m.com/mariadb/yum/RPM-GPG-KEY-MariaDB
gpgcheck=1

Guarda el archivo y sal del editor.

Comprueba la lista de repositorios disponibles utilizando el siguiente comando.

sudo dnf repolist

añadir repositorio mariadb

Una vez añadido el repositorio de MariaDB, instala los paquetes de servidor y cliente de MariaDB utilizando el siguiente comando dnf.

sudo dnf install MariaDB-server MariaDB-client

Cuando se te solicite, introduce y para confirmar, y pulsa ENTER para continuar.

instalación de mariadb 10.6

Una vez instalado MariaDB, ejecuta el siguiente comando para iniciar y habilitar el servidor MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

A continuación, ejecuta el siguiente comando para asegurarte de que el servicio MariaDB se está ejecutando y habilitando.

sudo systemctl status mariadb

Debería aparecer la siguiente salida cuando el servicio MariaDB se esté ejecutando.

iniciar y verificar el servicio mariadb

Por último, también puedes verificar la versión de MariaDB ejecutando el siguiente comando.

sudo mariadb --version

Si estás siguiendo esta guía, verás el servidor MariaDB 10.6 instalado.

comprobar la versión de mariadb

Asegurar el servidor MariaDB

Ahora que has instalado el servidor MariaDB, es hora de asegurar la implementación de MariaDB. Esta sección cubre el uso básico de la utilidad«mariadb-secure-installation» para asegurar la instalación de MariaDB.

Utilizarás la utilidad ‘mariadb-secure-installation‘ para configurar la contraseña de root de MariaDB, desactivar el inicio de sesión remoto para el usuario root y eliminar el usuario anónimo por defecto y la prueba de base de datos de tu despliegue.

Ejecuta el siguiente comando para asegurar tu despliegue de MariaDB.

sudo mariadb-secure-installation

Se te pedirá la siguiente configuración de MariaDB:

  • Cuando se te pida una contraseña, pulsa INTRO para continuar. La instalación por defecto de MariaDB viene sin contraseña para el usuario root.
  • Cuando se te pida cambiar el método de autenticación a‘unix_socket‘, pulsa‘n’ para‘No‘.
  • Ahora crea una nueva contraseña de root de MariaDB cuando te lo pida. Introduce«Y», luego introduce una nueva contraseña y repítelo.
  • Cuando se te pida que desactives el inicio de sesión remoto del usuario raíz de MariaDB, introduce«Y».
  • Ahora elimina el usuario anónimo por defecto de tu servidor MariaDB. Introduce «Y« para decir«Sí».
  • Introduce «Y « de nuevo para eliminar la base de datos por defecto«test» de tu despliegue.
  • Por último, vuelve a introducir «Y« para recargar los privilegios de la tabla y aplicar los cambios.

Crear base de datos MariaDB y usuario para Nextcloud

Ahora que has asegurado el despliegue de MariaDB, vamos a crear una nueva base de datos MariaDB y un nuevo usuario que utilizará Nextcloud.

Para empezar, inicia sesión en el intérprete de comandos MariaDB a través del usuario root utilizando el siguiente comando. Cuando se te pida la contraseña, introduce tu contraseña raíz de MariaDB.

sudo mariadb -u root -p

A continuación, crea una nueva base de datos«nextcloud_db» y un usuario«nextuser@localhost» ejecutando las siguientes consultas. Asegúrate de cambiar la contraseña en la siguiente consulta por tu contraseña.

CREATE DATABASE netxcloud_db;
CREATE USER nextuser@localhost IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON netxcloud_db.* TO nextuser@localhost;
FLUSH PRIVILEGES;

crear base de datos mariadb y usuario para Nextcloud

Una vez creadas la base de datos y el usuario, ejecuta la siguiente consulta para asegurarte de que se ha creado la base de datos ‘nextcloud_db‘.

SHOW DATABASES;

comprobar la lista de bases de datos en MariaDB

A continuación, ejecuta la siguiente consulta para asegurarte de que el usuario MariaDB«nextuser@localhost» puede acceder a la base de datos«nextcloud_db«.

SHOW GRANTS FOR nextuser@localhost;

comprobar los privilegios de usuario en MariaDB

Descargar el código fuente de Nextcloud

Si has seguido las instrucciones hasta ahora, ahora deberías tener la Pila LAMP (Linux, Apache/httpd, MariaDB y PHP) instalada en tu servidor AlmaLinux. Siguiendo adelante, descargarás el código fuente de Nextcloud y, a continuación, configurarás el etiquetado SELinux adecuado para el código fuente de Nextcloud.

En primer lugar, ejecuta el siguiente comando dnf para instalar las utilidades unzip, wget y SELinux troubleshoot.

sudo dnf install unzip wget setroubleshoot-server setools-console -y

Ahora, dirígete al directorio ‘/var/www/‘ y descarga la última versión del código fuente de Nextcloud mediante el siguiente comando wget. Una vez finalizada la descarga, verás el archivo ‘latest.zip‘.

cd /var/www/
wget -q https://download.nextcloud.com/server/releases/latest.zip

Ejecuta el siguiente comando para extraer el archivo ‘latest. zip‘. El código fuente de Nextcloud debería estar disponible en el directorio ‘/var/www/nextcloud’.

sudo unzip latest.zip

Ahora, ejecuta el siguiente comando para cambiar la propiedad del directorio ‘ /var/www/nextcloud‘ al usuario‘apache2‘. Esto permite al servidor web httpd acceder al código fuente de Nextcloud.

sudo chown -R apache:apache /var/www/nextcloud

Configurar SELinux

Después de descargar el código fuente de Nextcloud, el siguiente paso es configurar las políticas SELinux y el etiquetado para Nextcloud.

Empecemos ejecutando el siguiente comando para configurar el etiquetado del código fuente y los directorios de Nextcloud.

sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/data(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/config(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/apps(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.htaccess'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/.user.ini'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/nextcloud/3rdparty/aws/aws-sdk-php/src/data/logs(/.*)?'

sudo restorecon -Rv ‘/var/www/nextcloud/’

configurar SELinux para Nextcloud

A continuación, ejecuta el siguiente comando para permitir que el servidor web httpd se conecte a la red (esto permite compartir de servidor a servidor), la base de datos y Memcache.

sudo setsebool -P httpd_can_network_connect_db on
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_can_network_memcache on
sudo setsebool -P mysql_connect_http on

Con esto en mente, ya has descargado el código fuente de Nextcloud, has permitido que el servidor web httpd acceda al código fuente de Nextcloud y has configurado las políticas SELinux para Nextcloud. A continuación, configurarás un host virtual httpd para Nextcloud.

Durante la instalación, me encontré con un error sobre el PHP-FPM no puede conectarse al socket MySQL/MariaDB, que SELinux bloquea. A continuación, la política personalizada generada a partir del archivo‘audit.log‘.

Crea el archivo‘my-phpfpm.te‘ utilizando tu editor preferido y añade las siguientes líneas al archivo.

module my-phpfpm 1.0;
require {
type unconfined_service_t;
type httpd_sys_content_t;
type httpd_t;
class dir write;
class unix_stream_socket connectto;
}

#============= httpd_t ==============

#!!!! This avc is allowed in the current policy
allow httpd_t httpd_sys_content_t:dir write;
allow httpd_t unconfined_service_t:unix_stream_socket connectto;

Ahora, ejecuta el siguiente comando para convertir el archivo ‘my-phpfpm.te‘ en el módulo de política‘my-phpfpm.mod‘.

sudo checkmodule -M -m -o my-phpfpm.mod my-phpfpm.te

Una vez creado el archivo de módulo de política ‘my-phpfpm.mod’, ejecuta el siguiente comando para compilar el módulo de política SELinux a‘my-phpfpm.pp

sudo semodule_package -o my-phpfpm.pp -m my-phpfpm.mod

Por último, puedes aplicar el módulo de política SELinux compilado ‘my-phpfpm.pp’ ejecutando el siguiente comando.

sudo semodule -i my-phpfpm.pp

Configuración del host virtual httpd para Nextcloud

En la siguiente sección, crearás un nuevo host virtual httpd para Nextcloud. Por lo tanto, antes de continuar, asegúrate de que tienes un nombre de dominio apuntando a la dirección IP del servidor.

Ejecuta el siguiente comando nano para crear una nueva configuración de host virtual ‘/etc/httpd/conf.d/nextcloud.conf’.

sudo nano /etc/httpd/conf.d/nextcloud.conf

Añade las siguientes líneas al archivo, y asegúrate de cambiar el nombre de dominio en la siguiente configuración de host virtual.

<VirtualHost *:80>
  DocumentRoot /var/www/nextcloud/
  ServerName  nexcloud.hwdomain.io
<Directory /var/www/nextcloud/>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews

<IfModule mod_dav.c>
Dav off
</IfModule>
</Directory>
</VirtualHost>

Guarda el archivo y sal del editor.

A continuación, ejecuta el siguiente comando para verificar el servidor web httpd y asegurarte de que tienes la configuración adecuada. Como puedes ver ‘Sintaxis OK‘ en la salida, confirma que tienes las configuraciones httpd correctas y adecuadas.

sudo apachectl configtest

Ahora, ejecuta el siguiente comando para reiniciar el servidor web httpd y aplicar la nueva configuración del host virtual.

sudo systemctl restart httpd

configuración del host virtual httpd para Nextcloud

Por último, vuelve a tu navegador web y visita el nombre de dominio de tu instalación Nextcloud (es decir: http://nexcloud.hwdomain.io/). La siguiente página confirma que has configurado correctamente el host virtual httpd para Nextcloud.

página del instalador de nextcloud

Ahora has llegado con éxito al punto en el que Nextcloud está funcionando con LAMP Stack en AlmaLinux. Para continuar el proceso, vas a asegurar Nextcloud con certificados SSL/TLS a través de Letsencrypt.

Asegurar Nextcloud con SSL/TLS Letsencrypt

Esta sección explica cómo proteger Nextcloud con SSL/TLS desde Letsencrypt. Instalarás la herramienta Certbot, configurarás y habilitarás el httpd mod_ssl, y luego generarás el certificado SSL/TLS desde Letsencrypt a través de Certbot.

Para empezar, ejecuta el siguiente comando para instalar Certbot y su plugin para el servidor web Apache/httpd y el paquete mod_ssl.

sudo dnf install certbot python3-certbot-apache mod_ssl

Introduce y cuando se te solicite, y pulsa ENTER para continuar.

instalar certbot

Con el mod_ssl instalado, debes generar certificados SSL para localhost, de lo contrario, el httpd tendrá un error.

Introduce el siguiente comando para generar certificados SSL/TLS autofirmados para localhost.

openssl req -newkey rsa:2048 -nodes -keyout /etc/pki/tls/private/localhost.key -x509 -days 365 -out /etc/pki/tls/certs/localhost.crt

Por último, ejecuta el siguiente comando para generar nuevos certificados SSL/TLS de Letsencrypt. Asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

sudo certbot --apache --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email protected] -d nextcloud.hwdomain.io

Una vez finalizado el proceso de Certbot, la configuración del host virtual Nextcloud‘/etc/httpd/conf.d/nextcloud.conf‘ debería cambiarse automáticamente con SSL/TLS activado y la redirección automática de HTTP a HTTPS también activada.

Instalar Nextcloud a través del Instalador Web

Abre tu navegador web y visita el nombre de dominio de tu instalación de Nextcloud (es decir: https://nexcloud.hwdomain.io/). Cuando la instalación se haya realizado correctamente, deberías obtener la página de instalación de Nextcloud como la captura de pantalla siguiente:

instalar Nextcloud

Introduce el nuevo usuario y contraseña de administrador para tu Nextcloud. A continuación, haz clic en la base de datos MySQL/MariaDB e introduce los detalles del nombre, usuario y contraseña de la base de datos MariaDB. Haz clic en Instalar para realizar la instalación.

Una vez que la instalación de Nextcloud se haya realizado correctamente, deberías ser redirigido al Panel de Nextcloud como en la siguiente captura de pantalla:

Finalizada la instalación de Nextcloud

Ahora haz clic en el menú gestor de archivos en la parte superior izquierda y deberías obtener el gestor de archivos Nextcloud donde puedes subir, crear o eliminar archivos en nextcloud.

Gestor de Archivos Nextcloud

Conclusión

En conclusión, siguiendo los pasos descritos en esta guía, has instalado con éxito Nextcloud en AlmaLinux 9 con LAMP Stack. También has asegurado Nextcloud con firewalld, SELinux y certificados SSL/TLS de Letsencrypt.

Para llevar Nextcloud al siguiente nivel, también podrías configurar el almacenamiento en caché de memoria mediante memcached, proteger Nextcloud contra ataques de fuerza bruta mediante fail2ban y configurar el bloqueo de archivos mediante Redis.

También te podría gustar...