Cómo instalar el sistema UVdesk Helpdesk en Rocky Linux 8
UVdesk es un sistema de helpdesk de código abierto basado en Saas para que las empresas interactúen con sus clientes y ofrezcan soporte las 24 horas del día. Sus características incluyen la gestión de tickets, el soporte de la base de conocimientos, las respuestas enlatadas y la generación automática de tickets basada en los correos electrónicos. Las capacidades de Uvdesk pueden ampliarse mediante módulos externos. Puedes automatizar ciertas acciones basadas en activadores específicos para mejorar tu flujo de trabajo.
En este tutorial, aprenderás a instalar Uvdesk en un servidor basado en Rocky Linux 8 utilizando Nginx, MySQL y PHP.
Requisitos previos
-
Un servidor con Rocky Linux 8.
-
Un nombre de dominio para el helpdesk que apunte al servidor. Para nuestro tutorial, utilizaremos el dominio
uvdesk.example.com
. -
Un usuario no root con privilegios sudo.
-
Asegúrate de que todo está actualizado.
$ sudo dnf update
-
Instala los paquetes de utilidades básicas. Es posible que algunos de ellos ya estén instalados.
$ sudo dnf install wget curl nano unzip yum-utils -y
Paso 1 – Configurar el cortafuegos
El primer paso es configurar el cortafuegos. Rocky Linux utiliza el cortafuegos Firewalld. Comprueba el estado del cortafuegos.
$ sudo firewall-cmd --state running
El cortafuegos funciona con diferentes zonas, y la zona pública es la que utilizaremos por defecto. Enumera todos los servicios y puertos activos en el cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Debería mostrar el siguiente resultado.
cockpit dhcpv6-client ssh
Permite los puertos HTTP y HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Vuelve a comprobar el estado del cortafuegos.
$ sudo firewall-cmd --permanent --list-services
Deberías ver una salida similar.
cockpit dhcpv6-client http https ssh
Recarga el cortafuegos para activar los cambios.
$ sudo firewall-cmd --reload
Paso 2 – Instalar Nginx
Rocky Linux viene con una versión antigua de Nginx. Necesitas descargar el repositorio oficial de Nginx para instalar la última versión.
Crea y abre el archivo /etc/yum.repos.d/nginx.repo
para crear el repositorio oficial de Nginx.
$ sudo nano /etc/yum.repos.d/nginx.repo
Pega en él el siguiente código.
[nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/ gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Instala Nginx.
$ sudo dnf install nginx
Verifica la instalación.
$ nginx -v nginx version: nginx/1.20.2
Activa el servicio Nginx.
$ sudo systemctl enable nginx
Paso 3 – Instalar PHP y las extensiones
Para nuestro tutorial, necesitamos instalar la última versión de PHP utilizando el repositorio de Remi. El primer paso es coger el repositorio de Epel.
$ sudo dnf install epel-release
A continuación, instala el repositorio de Remi.
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
Comprueba si hay versiones de PHP disponibles.
$ dnf module list php -y Last metadata expiration check: 0:00:12 ago on Fri 03 Dec 2021 09:39:32 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary php 7.2 [d] common [d], devel, minimal PHP scripting language php 7.3 common [d], devel, minimal PHP scripting language php 7.4 common [d], devel, minimal PHP scripting language Remi's Modular repository for Enterprise Linux 8 - x86_64 Name Stream Profiles Summary php remi-7.2 common [d], devel, minimal PHP scripting language php remi-7.3 common [d], devel, minimal PHP scripting language php remi-7.4 common [d], devel, minimal PHP scripting language php remi-8.0 common [d], devel, minimal PHP scripting language php remi-8.1 common [d], devel, minimal PHP scripting language Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
La versión por defecto es la 7.2. Activa el repositorio PHP 8.0 de Remi.
$ sudo dnf module reset php $ sudo dnf module enable php:remi-8.0
A continuación, instala el PHP y sus extensiones requeridas por UVDesk.
$ sudo dnf install php-fpm php-mbstring php-xml php-curl php-mysqlnd php-zip php-cli php-intl php-bcmath php-gd php-tokenizer php-imap php-pear php-mailparse
Verifica la instalación.
$ php --version PHP 8.0.16 (cli) (built: Feb 15 2022 21:34:32) ( NTS gcc x86_64 ) Copyright (c) The PHP Group Zend Engine v4.0.16, Copyright (c) Zend Technologies
Paso 4 – Instalar y configurar el servidor MySQL
Utilizaremos la base de datos MySQL para almacenar los datos. El repositorio Appstream de Rocky Linux incluye la última versión de MySQL.
Instala MySQL.
$ sudo dnf install mysql-server
Habilita e inicia el servicio MySQL.
$ sudo systemctl enable mysqld --now
Asegura la instalación de MySQL.
$ sudo mysql_secure_installation
En el primer paso, se te preguntará si quieres configurar el Plugin de Validación de Contraseñas, que puedes utilizar para comprobar la solidez de tu contraseña de MySQL. Elige Y
para proceder. Se te pedirá que elijas el nivel de validación de la contraseña en el siguiente paso. Elige 2
que es el nivel más fuerte y requerirá que tu contraseña tenga al menos ocho caracteres e incluya una mezcla de mayúsculas, minúsculas, números y caracteres especiales.
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: Y There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
En el siguiente paso se te pedirá que elijas una contraseña de root. Elige una contraseña fuerte que cumpla los requisitos del plugin de validación de contraseñas. En el siguiente paso, se te preguntará si quieres continuar con la contraseña elegida. Pulsa y
para continuar.
Please set the password for root here. New password: Re-enter new password: Estimated strength of the password: 100 Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Pulsa Y
y luego ENTER
para todas las siguientes indicaciones para eliminar los usuarios anónimos y la base de datos de prueba, desactivar los inicios de sesión de root y cargar las reglas recién establecidas.
... Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y Success. ... Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y Success. ... Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y - Dropping test database... Success. - Removing privileges on test database... Success. Reloading the privilege tables will ensure that all changes made so far will take effect immediately. ... Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y Success. All done!
Entra en el shell de MySQL. Introduce la contraseña de root para continuar.
$ mysql -u root -p
Crea el usuario uvdesk
. Asegúrate de que la contraseña cumple los requisitos establecidos anteriormente.
mysql> CREATE USER 'uvdesk'@'localhost' IDENTIFIED BY 'Your_password2';
Crea la base de datos uvdeskdb
.
mysql> CREATE DATABASE uvdeskdb;
Concede al usuario privilegios en la base de datos uvdeskdb
.
mysql> GRANT ALL PRIVILEGES ON uvdeskdb.* TO 'uvdesk'@'localhost';
Sal de la Shell.
mysql> exit
Paso 5 – Descarga UVdesk
Descarga la última versión estable de UVdesk.
$ wget https://cdn.uvdesk.com/uvdesk/downloads/opensource/uvdesk-community-current-stable.zip
Descomprime el archivo descargado.
$ unzip uvdesk-*.zip
Mueve el directorio extraído a la ubicación /var/www/uvdesk
.
$ sudo mv uvdesk-community-v1.0.18 /var/www/uvdesk
Cambia al directorio de UVdesk.
$ cd /var/www/uvdesk
Abre el archivo de entorno (.env
) para editarlo.
$ sudo nano .env
Busca la línea APP_ENV=dev
y cámbiala por la siguiente.
APP_ENV=prod
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Cambia la propiedad del directorio raíz al usuario Nginx.
$ sudo chown -R nginx:nginx /var/www/uvdesk
Paso 6 – Configurar los permisos de SELinux
Utiliza el comando chcon
de SELinux para cambiar el contexto de seguridad de los archivos para el contenido web que se sirve desde el directorio/var/www/uvdesk
.
$ sudo chcon -t httpd_sys_content_t /var/www/uvdesk -R $ sudo chcon -t httpd_sys_rw_content_t /var/www/uvdesk -R
Configura SELinux para permitir las conexiones de red para el UVDesk.
$ sudo setsebool -P httpd_can_network_connect on
Paso 7 – Instalar y configurar el SSL
Para instalar un certificado SSL usando Let’s Encrypt, necesitamos descargar la herramienta Certbot. Necesitamos el repositorio de Epel para instalar Certbot, pero podemos saltarnos este paso ya que lo hemos instalado antes en el tutorial.
Instala Certbot.
$ sudo dnf install certbot
Genera un certificado SSL.
$ sudo certbot certonly --standalone --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d uvdesk.example.com
El comando anterior descargará un certificado en el directorio /etc/letsencrypt/live/uvdesk.example.com
de tu servidor.
Genera un certificado de grupo Diffie-Hellman.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Crea un directorio raíz web de desafío para la renovación automática de Let’s Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Crea un Cron Job para renovar el SSL. Se ejecutará cada día para comprobar el certificado y renovarlo si es necesario. Para ello, primero crea el archivo /etc/cron.daily/certbot-renew
y ábrelo para editarlo.
$ sudo nano /etc/cron.daily/certbot-renew
Pega el siguiente código.
#!/bin/sh certbot renew --cert-name uvdesk.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Cambia los permisos del archivo de la tarea para que sea ejecutable.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Paso 8 – Configurar Nginx y PHP
Configurar PHP-FPM
Abre el archivo /etc/php-fpm.d/www.conf
.
$ sudo nano /etc/php-fpm.d/www.conf
Necesitamos establecer el usuario/grupo Unix de los procesos PHP a nginx. Busca las líneas user=www-data
y group=www-data
en el archivo y cámbialas por nginx
.
... ; Unix user/group of processes ; Note: The user is mandatory. If the group is not set, the default user's group ; will be used. ; RPM: apache user chosen to provide access to the same directories as httpd user = nginx ; RPM: Keep a group allowed to write in log dir. group = nginx ...
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida.
Activa e inicia el servicio PHP.
$ sudo systemctl enable php-fpm --now
Cambia el grupo del directorio de sesiones PHP a Nginx.
$ sudo chgrp -R nginx /var/lib/php/session
Configurar Nginx
Crea y abre el archivo /etc/nginx/conf.d/uvdesk.conf
para editarlo.
$ sudo nano /etc/nginx/conf.d/uvdesk.conf
Pega en él el siguiente código.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name uvdesk.example.com; access_log /var/log/nginx/uvdesk.access.log; error_log /var/log/nginx/uvdesk.error.log; # SSL ssl_certificate /etc/letsencrypt/live/uvdesk.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/uvdesk.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/uvdesk.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; resolver 8.8.8.8; root /var/www/uvdesk/public; index index.php; location / { try_files $uri $uri/ /index.php?$args; } # Pass PHP Scripts To FastCGI Server location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass unix:/run/php-fpm/www.sock; # Depends On The PHP Version fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; try_files $uri =404; } } # enforce HTTPS server { listen 80; listen [::]:80; server_name uvdesk.example.com; return 301 https://$host$request_uri; }
Observa que el directorio raíz que se utilizará en la configuración de Nginx es /var/www/uvdesk/public/
y no /var/www/uvdesk/
.
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida una vez que hayas terminado.
Abre el archivo /etc/nginx/nginx.conf
para editarlo.
$ sudo nano /etc/nginx/nginx.conf
Añade la siguiente línea antes de la línea include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te solicite.
Comprueba la sintaxis del archivo de configuración de Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Inicia el servicio Nginx.
$ sudo systemctl start nginx
Paso 9 – Instalar UVdesk
Inicia la URL https://uvdesk.example.com
en tu navegador, y obtendrás la siguiente pantalla.
Haz clic en el botón Comencemos para iniciar el proceso de instalación. El instalador comprobará la configuración de PHP y los permisos de los archivos en la siguiente página.
Haz clic en Continuar para proseguir. Se te pedirá que rellenes los datos de la base de datos en la siguiente página. Introduce los datos tal y como se han configurado en el paso 4.
Haz clic en Proceder para continuar. A continuación, se te pedirá que crees una cuenta de superadministrador. Rellena tus datos.
Haz clic en Proceder para continuar. A continuación, se te pedirá que configures el sitio web dando un nombre a los prefijos del Panel de Miembros y del Panel de Clientes. Estos prefijos se utilizan en las URL del sitio web.
Haz clic en Proceder para continuar. Llegarás a la página final de instalación.
Haz clic en Instalar ahora para comenzar la instalación. Una vez terminada, obtendrás la siguiente pantalla.
Puedes acceder al panel de administración y al sitio web del frontend a través de los enlaces indicados. Tu instalación de UVDesk está lista para ser utilizada.
Conclusión
Has instalado el sistema UVdesk Helpdesk en un servidor basado en Rocky Linux 8 utilizando Nginx, MySQL y PHP. Si tienes alguna pregunta, publícala en los comentarios de abajo.