Proceso de instalación de Sherpa Orchestrator (versión local)#

Preparación del servidor#

Agregar usuario al grupo sudo#

# Inicie sesión como usuario root
su

# Agregue el usuario al grupo sudo
/sbin/usermod -aG sudo <userName>

# Reinicie el sistema para aplicar los cambios
exit
💡 Comentarios sobre la adición de usuario a sudo

/sbin/usermod -aG sudo - agrega al usuario al grupo sudo

  • -a - append (agrega a los grupos existentes)
  • -G sudo - agrega al grupo sudo
  • <userName> - reemplace con el nombre de su usuario

Importante: Después de ejecutar el comando, es necesario reiniciar el sistema para aplicar los cambios.

Configuración de la zona horaria#

# Establezca la zona horaria UTC
sudo timedatectl set-timezone UTC

# Verifique la configuración
timedatectl
💡 Comentarios sobre la configuración de la zona horaria

sudo timedatectl set-timezone UTC - establece la zona horaria UTC timedatectl - muestra la configuración actual de fecha y hora

Se recomienda utilizar UTC para aplicaciones de servidor.

Actualización del sistema#

# Actualice la lista de paquetes
sudo apt -y update

# Instale herramientas para trabajar con repositorios
sudo apt -y install software-properties-common gnupg2

# Actualice el sistema
sudo apt -y upgrade
💡 Comentarios sobre la actualización del sistema

sudo apt -y update - actualiza la lista de paquetes disponibles desde los repositorios sudo apt -y install software-properties-common gnupg2 - instala herramientas para trabajar con repositorios

  • software-properties-common - utilidades para gestionar repositorios
  • gnupg2 - herramienta para trabajar con claves GPG

sudo apt -y upgrade - actualiza todos los paquetes instalados a las últimas versiones

  • -y - confirmación automática de la instalación

Descompresión del archivo de actualización#

En esta etapa, descomprimirá el archivo con los archivos de Sherpa Orchestrator y preparará el sistema para la instalación.

# Vaya al directorio con los archivos
cd /opt

# Encuentre y descomprima el archivo de actualización (se selecciona automáticamente la versión más reciente)
tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)"

# Vaya al directorio con los archivos descomprimidos
cd SherpaOrchestrator
💡 Comentarios sobre la descompresión del archivo

cd /opt - cambia al directorio con los archivos de instalación tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)" - descomprime el archivo de actualización

  • tar -xvzf - descomprime el archivo con salida detallada
  • ls orchestrator_local_update_*.tgz - encuentra todos los archivos de archivos de actualización
  • sort -V - ordena las versiones de manera natural (1.0 < 1.1 < 1.10)
  • tail -n 1 - selecciona el archivo más reciente

cd SherpaOrchestrator - cambia al directorio con los archivos descomprimidos

Resultado esperado: Se descomprimirán los archivos y directorios necesarios para la instalación de Sherpa Orchestrator.

Preparación de los scripts para su ejecución#

# Vaya al directorio sh_scripts
cd sh_scripts/

# Haga que todos los scripts sean ejecutables
chmod +x *.sh

# Regrese al directorio raíz del proyecto
cd ..
💡 Comentarios sobre la preparación de los scripts

cd sh_scripts/ - cambia al directorio con los scripts de instalación

*chmod +x .sh - establece permisos de ejecución para todos los scripts shell

  • chmod +x - agrega el derecho de ejecución
  • *.sh - todos los archivos con la extensión .sh

cd .. - regresa al directorio raíz del proyecto

Inicialización de la configuración#

# Ejecute la inicialización de la configuración
sudo ./sh_scripts/create_config.sh
💡 Comentarios sobre la inicialización de la configuración

sudo ./sh_scripts/create_config.sh - ejecuta el script de inicialización de la configuración básica

  • Crea los directorios necesarios
  • Configura los parámetros básicos del sistema
  • Prepara la estructura para la configuración posterior

Instalación de la base de datos MariaDB#

# Agregue el repositorio de MariaDB
sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 0xF1656F24C74CD1D8
sudo add-apt-repository "deb [arch=amd64] http://mariadb.mirror.liquidtelecom.com/repo/10.5/debian $(lsb_release -cs) main"

# Actualice la lista de paquetes
sudo apt update

# Instale MariaDB
sudo apt install mariadb-server mariadb-client
💡 Comentarios sobre la instalación de MariaDB

Adición del repositorio:

  • sudo apt-key adv --recv-keys - agrega la clave GPG del repositorio
  • sudo add-apt-repository - agrega el repositorio de MariaDB
  • $(lsb_release -cs) - determina automáticamente el nombre en clave de la distribución

Instalación de paquetes:

  • mariadb-server - servidor de base de datos
  • mariadb-client - cliente para conectarse a la base de datos

Configuración básica de seguridad de MySQL/MariaDB#

# Ejecute el script de configuración de seguridad
sudo mysql_secure_installation

Preguntas y opciones de respuesta para la configuración de seguridad:

Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] y
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
💡 Comentarios sobre la configuración de seguridad

mysql_secure_installation - script interactivo para la configuración básica de seguridad de MySQL/MariaDB

Respuestas recomendadas:

  • Switch to unix_socket authentication - sí (y) - usar autenticación a través de unix socket
  • Change the root password - sí (y) - establecer una contraseña para el usuario root
  • Remove anonymous users - sí (y) - eliminar usuarios anónimos
  • Disallow root login remotely - no (n) - permitir que root se conecte de forma remota
  • Remove test database - sí (y) - eliminar la base de datos de prueba
  • Reload privilege tables - sí (y) - recargar las tablas de privilegios

Configuración de la base de datos y el usuario#

# Conéctese a MySQL como root
mysql -u root -p

# Ejecute los siguientes comandos en el shell de MySQL:
-- Adición de usuario de la base de datos (reemplace la contraseña por una segura)
GRANT ALL ON orchestrator.* TO 'orchestrator'@'localhost' IDENTIFIED BY 'mD2vjt(HqZKW' WITH GRANT OPTION;

-- Recarga de privilegios
FLUSH PRIVILEGES;

-- Selección de la base de datos
USE orchestrator;

-- Actualización del registro de la cuenta
UPDATE `accounts` SET `parent_account_id` = '1' WHERE `accounts`.`id` = 1;

-- Salida de MySQL
exit;
💡 Comentarios sobre la configuración de la base de datos

GRANT ALL ON orchestrator. TO 'orchestrator'@'localhost'...* - crea el usuario orchestrator con todos los derechos sobre la base orchestrator

  • 'orchestrator'@'localhost' - el usuario puede conectarse solo desde localhost
  • WITH GRANT OPTION - el usuario puede otorgar derechos a otros usuarios

FLUSH PRIVILEGES - recarga las tablas de privilegios

UPDATE accounts... - establece parent_account_id para la cuenta del sistema

Importante: ¡Reemplace la contraseña 'mD2vjt(HqZKW' por una contraseña única y segura!

Instalación del servidor web y PHP#

# Instale los paquetes necesarios
sudo apt -y install lsb-release apt-transport-https ca-certificates curl

# Agregue el repositorio de PHP
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

# Actualice la lista de paquetes
sudo apt-get update

# Instale Nginx y PHP 8.5
sudo apt-get install -y nginx php8.5 php8.5-cli php8.5-fpm php8.5-opcache php8.5-curl php8.5-mbstring php8.5-zip php8.5-xml php8.5-mysql php8.5-pdo-mysql php8.5-pgsql
💡 Comentarios sobre la instalación del servidor web

Adición del repositorio de PHP:

  • Se agrega la clave GPG del repositorio PHP de sury.org
  • Se agrega el repositorio para PHP 8.5

Instalación de paquetes:

  • nginx - servidor web
  • php8.5 - intérprete de PHP
  • php8.5-fpm - FastCGI Process Manager para PHP
  • php8.5-* - extensiones de PHP para diversas funciones

Configuración de PHP#

# Abra el archivo de configuración de PHP-FPM
sudo nano /etc/php/8.5/fpm/php.ini

# Busque y cambie los siguientes parámetros:
upload_max_filesize = 100M
post_max_size = 100M

# Guarde el archivo y reinicie PHP-FPM
sudo service php8.5-fpm restart
💡 Comentarios sobre la configuración de PHP

upload_max_filesize = 100M - tamaño máximo del archivo a cargar post_max_size = 100M - tamaño máximo de los datos POST

sudo service php8.5-fpm restart - reinicia PHP-FPM para aplicar los cambios

Configuración de Nginx#

# Abra el archivo de configuración de Nginx
sudo nano /etc/nginx/nginx.conf

# Busque la sección http y agregue:
client_max_body_size 100m;

# Guarde el archivo
💡 Comentarios sobre la configuración de Nginx

client_max_body_size 100m - establece el tamaño máximo del cuerpo de la solicitud del cliente

  • Debe estar en la sección http { ... }
  • El valor corresponde a la configuración de PHP

Configuración de dominio y configuración de Sherpa#

# Abra el archivo de configuración del dominio
sudo nano /opt/SherpaOrchestrator/backend/config/domain.conf

# Reemplace "orchestrator.sherparpa.ru" por su dominio o dirección IP (un total de 4 reemplazos)

# Defina la ruta al socket de PHP-FPM según el SO:
# Para Ubuntu 18.04:
# fastcgi_pass unix:/var/run/php/php8.5-fpm.sock;

# Para Debian:
fastcgi_pass unix:/run/php/php8.5-fpm.sock;

# Para CentOS 8:
# fastcgi_pass unix:/run/php-fpm/www.sock;

# Para CentOS 7:
# fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
💡 Comentarios sobre la configuración del dominio

Reemplazo de dominio: Es necesario reemplazar todas las ocurrencias de "orchestrator.sherparpa.ru" por su dominio real o dirección IP

Configuración del socket de PHP-FPM: La ruta depende de la distribución de Linux:

  • Debian/Ubuntu generalmente: /run/php/php8.5-fpm.sock
  • CentOS: /run/php-fpm/www.sock

Importante: Si la ruta es incorrecta, revise los registros de Nginx: /var/log/nginx/error.log

Configuración de certificados SSL#

# Copie los certificados SSL en el directorio de configuración
# Reemplace las rutas por las rutas reales a sus certificados
sudo cp /path/to/your/certificate.crt /opt/SherpaOrchestrator/backend/config/certs/orchestrator.crt
sudo cp /path/to/your/private.key /opt/SherpaOrchestrator/backend/config/certs/orchestrator.key
💡 Comentarios sobre los certificados SSL

Requisitos para los certificados:

  • El certificado debe ser renombrado a orchestrator.crt
  • La clave privada debe ser renombrada a orchestrator.key
  • Formatos: .crt/.pem para el certificado, .key para la clave

Obtención de certificados:

  • Consulte al administrador del sistema para obtener certificados corporativos
  • Use Let's Encrypt para certificados gratuitos
  • Para pruebas, se pueden crear certificados autofirmados

Configuración de la configuración de la aplicación#

# Abra el archivo de configuración de la aplicación
sudo nano /opt/SherpaOrchestrator/backend/config/config.ini

# Configure los parámetros de conexión a la base de datos:
database_host=127.0.0.1
database_port=3306
database_user=orchestrator
database_password="mD2vjt(HqZKW"
database_dbname=orchestrator
💡 Comentarios sobre la configuración de la aplicación

Parámetros de la base de datos:

  • database_host - dirección del servidor de la base de datos (generalmente 127.0.0.1 para instalación local)
  • database_port - puerto MySQL/MariaDB (por defecto 3306)
  • database_user - usuario de la base de datos (orchestrator)
  • database_password - contraseña del usuario (debe coincidir con la creada anteriormente)
  • database_dbname - nombre de la base de datos (orchestrator)

Importante: La contraseña debe coincidir exactamente con la contraseña establecida al crear el usuario de la base de datos

Configuración de phinx.php (migraciones de BD)#

El archivo backend/config/phinx.php es utilizado por Phinx para ejecutar migraciones. La contraseña en él debe coincidir con la contraseña de la base de datos del config.ini:

sudo nano /opt/SherpaOrchestrator/backend/config/phinx.php

En la sección environments en el bloque de la base de datos utilizada (por ejemplo, orchestrator o mysql), el parámetro 'pass' debe coincidir con database_password del config.ini. De lo contrario, las migraciones durante la instalación o actualización fallarán.

Activación de la configuración de Nginx#

# Copie la configuración en sites-available
sudo cp /opt/SherpaOrchestrator/backend/config/domain.conf /etc/nginx/sites-available/default

# Reinicie Nginx
sudo systemctl restart nginx
💡 Comentarios sobre la activación de Nginx

sudo cp ... /etc/nginx/sites-available/default - copia la configuración del sitio a las configuraciones activas de Nginx

sudo systemctl restart nginx - reinicia Nginx para aplicar la nueva configuración

Establecimiento de permisos#

# Establezca los permisos y propietario correctos
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator
💡 Comentarios sobre el establecimiento de permisos

sudo chown -R www-data:www-data /opt/SherpaOrchestrator - establece www-data como propietario de los archivos

  • www-data - usuario del servidor web Nginx/PHP-FPM
  • -R - recursivamente para todos los archivos y directorios

sudo chmod -R 775 /opt/SherpaOrchestrator - establece permisos en los archivos

  • 775 - el propietario y el grupo pueden leer/escribir/ejecutar, los demás solo pueden leer/ejecutar

Creación de una base de datos de archivo#

-- Conéctese a MySQL
mysql -u root -p

-- Cree la base de datos de archivo
CREATE DATABASE IF NOT EXISTS orchestrator_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Salir
exit;
💡 Comentarios sobre la base de datos de archivo

CREATE DATABASE IF NOT EXISTS orchestrator_archive - crea la base de datos de archivo

  • IF NOT EXISTS - crea solo si no existe
  • CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci - establece la codificación UTF-8 con soporte para Unicode

Actualización de la estructura de la base de datos#

# Vaya al directorio de la aplicación
cd /opt/SherpaOrchestrator

# Verifique la configuración de conexión a la base de datos en el archivo phinx.php
sudo nano backend/config/phinx.php

# Ejecute la actualización de la base de datos
sudo ./sh_scripts/migrate.sh

Resultado esperado después de una actualización exitosa:

Phinx by CakePHP - https://phinx.org.

using config file ./backend/config/phinx.php
using config parser php
using migration paths
using seed paths
warning no environment specified, defaulting to: orchestrator
using adapter mysql
using database orchestrator

== 20241201120000 CreateInitialSchema: migrated 0.0123s ==
== 20241201120000 CreateInitialSchema: migrated 0.0123s ==

All Done. Took 0.0345s
💡 Comentarios sobre la actualización de la base de datos

Verificación de phinx.php:

'environments' => [
    'orchestrator' => [
        'adapter' => 'mysql',
        'host' => 'localhost',
        'name' => 'orchestrator',
        'user' => 'orchestrator',
        'pass' => 'mD2vjt(HqZKW',
        // ...
    ],
],

sudo ./migrate.sh - ejecuta las migraciones de la base de datos a través de Phinx

  • Actualiza la estructura de las tablas
  • Agrega los índices necesarios
  • Crea disparadores y procedimientos

Configuración de tareas CRON#

# Abra el editor CRON
sudo crontab -e

# Agregue la línea para ejecutar el programador de tareas:
* * * * * php /opt/SherpaOrchestrator/backend/app/scheduleCronRunner.php

# Guarde y salga del editor
💡 Comentarios sobre la configuración de CRON

sudo crontab -e - abre el editor CRON para el usuario root

  • * * * * * - se ejecuta cada minuto
  • php /opt/SherpaOrchestrator/backend/app/scheduleCronRunner.php - ejecuta el programador de tareas de Sherpa

Programador de tareas:

  • Gestiona el horario de ejecución de tareas
  • Procesa trabajos pendientes
  • Realiza limpieza automática

Instalación de Node.js y PM2#

# Instale Node.js 22.x
sudo curl -sL https://deb.nodesource.com/setup_22.x | bash -
sudo apt-get install -y nodejs

# Actualice npm
sudo npm install -g npm@latest

# Instale PM2
sudo npm install -g pm2
💡 Comentarios sobre la instalación de Node.js y PM2

curl -sL https://deb.nodesource.com/setup\_22.x | bash - - agrega el repositorio de Node.js

  • -sL - silencioso y seguir redirecciones
  • setup_22.x - script para la versión 22.x de Node.js

sudo apt-get install -y nodejs - instala Node.js

sudo npm install -g pm2 - instala PM2 globalmente

  • PM2 - gestor de procesos para aplicaciones de Node.js
  • Reinicio automático de aplicaciones
  • Gestión de logs y monitoreo

Configuración del servicio WebSocket#

# Vaya al directorio del servicio websocket
cd /opt/SherpaOrchestrator/backend/app/websocket/

# Instale las dependencias
sudo npm install

# Inicie el servicio a través de PM2
sudo pm2 start index.js --watch --ignore-watch="node_modules" --name "Websockets"

# Configure el inicio automático de PM2
sudo pm2 startup

# Guarde la configuración de PM2
sudo pm2 save
💡 Comentarios sobre la configuración de WebSocket

sudo npm install - instala las dependencias de Node.js desde package.json

sudo pm2 start index.js --watch --ignore-watch="node_modules" --name "Websockets"

  • --watch - reinicio al cambiar archivos
  • --ignore-watch="node_modules" - ignorar cambios en node_modules
  • --name "Websockets" - nombre del proceso en PM2

sudo pm2 startup - configura el inicio automático de PM2 al arrancar el sistema sudo pm2 save - guarda la configuración actual de los procesos

Configuración del nombre de dominio (opcional)#

Si le basta con acceder a la interfaz del Orquestador a través de la IP del servidor, omita este punto.

# Abra el archivo hosts
sudo nano /etc/hosts

# Agregue una entrada (reemplace con su IP y dominio):
192.168.1.100    orchestrator.mycompany.com

Inicialización del Orquestador#

  1. Acceda a la URL: https://<su_dominio_o_IP>/setup.php
  2. Si la dirección IP se muestra correctamente, haga clic en el botón "Enviar"
  3. En la respuesta del script se indicará el GUID del orquestador - anótelo junto con los datos de registro

¡Con esto la instalación está completa!

El sistema Sherpa Orchestrator está disponible en el navegador a través del nombre de dominio o la dirección IP.

A continuación, es necesario agregar y activar la licencia para el orquestador y la licencia para los robots en la interfaz web del orquestador.