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 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.
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.
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.
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.
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.
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.
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:
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.
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:
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
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.
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.
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.
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;
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;
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;
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/’
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
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.
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.
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:
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:
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.
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.