Processo de instalação do Sherpa Orchestrator (versão local)#

Preparação do servidor#

Adicionando usuário ao grupo sudo#

# Faça login como usuário root
su

# Adicione o usuário ao grupo sudo
/sbin/usermod -aG sudo <userName>

# Reinicie o sistema para aplicar as alterações
exit
💡 Comentários sobre a adição de usuário ao sudo

/sbin/usermod -aG sudo - adiciona o usuário ao grupo sudo

  • -a - append (adiciona aos grupos existentes)
  • -G sudo - adiciona ao grupo sudo
  • <userName> - substitua pelo nome do seu usuário

Importante: Após executar o comando, é necessário reiniciar o sistema para aplicar as alterações.

Configuração do fuso horário#

# Defina o fuso horário UTC
sudo timedatectl set-timezone UTC

# Verifique a configuração
timedatectl
💡 Comentários sobre a configuração do fuso horário

sudo timedatectl set-timezone UTC - define o fuso horário UTC timedatectl - mostra as configurações atuais de data e hora

Recomenda-se usar UTC para aplicativos de servidor.

Atualização do sistema#

# Atualize a lista de pacotes
sudo apt -y update

# Instale ferramentas para trabalhar com repositórios
sudo apt -y install software-properties-common gnupg2

# Atualize o sistema
sudo apt -y upgrade
💡 Comentários sobre a atualização do sistema

sudo apt -y update - atualiza a lista de pacotes disponíveis dos repositórios sudo apt -y install software-properties-common gnupg2 - instala ferramentas para trabalhar com repositórios

  • software-properties-common - utilitários para gerenciar repositórios
  • gnupg2 - ferramenta para trabalhar com chaves GPG

sudo apt -y upgrade - atualiza todos os pacotes instalados para as versões mais recentes

  • -y - confirmação automática da instalação

Descompactação do arquivo de atualização#

Neste estágio, você descompactará o arquivo com os arquivos do Sherpa Orchestrator e preparará o sistema para a instalação.

# Navegue até o diretório com os arquivos
cd /opt

# Encontre e descompacte o arquivo de atualização (a versão mais recente é escolhida automaticamente)
tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)"

# Navegue até o diretório com os arquivos descompactados
cd SherpaOrchestrator
💡 Comentários sobre a descompactação do arquivo

cd /opt - navega até o diretório com os arquivos de instalação tar -xvzf "$(ls orchestrator_local_update_*.tgz | sort -V | tail -n 1)" - descompacta o arquivo de atualização

  • tar -xvzf - descompacta o arquivo com saída detalhada
  • ls orchestrator_local_update_*.tgz - encontra todos os arquivos de arquivos de atualização
  • sort -V - ordena as versões de forma natural (1.0 < 1.1 < 1.10)
  • tail -n 1 - escolhe o arquivo mais recente

cd SherpaOrchestrator - navega até o diretório com os arquivos descompactados

Resultado esperado: Os arquivos e diretórios necessários para a instalação do Sherpa Orchestrator serão descompactados.

Preparação dos scripts para execução#

# Navegue até o diretório sh_scripts
cd sh_scripts/

# Torne todos os scripts executáveis
chmod +x *.sh

# Volte para o diretório raiz do projeto
cd ..
💡 Comentários sobre a preparação dos scripts

cd sh_scripts/ - navega até o diretório com os scripts de instalação

*chmod +x .sh - define permissões de execução para todos os shell scripts

  • chmod +x - adiciona permissão de execução
  • *.sh - todos os arquivos com a extensão .sh

cd .. - retorna ao diretório raiz do projeto

Inicialização da configuração#

# Execute a inicialização das configurações
sudo ./sh_scripts/create_config.sh
💡 Comentários sobre a inicialização da configuração

sudo ./sh_scripts/create_config.sh - executa o script de inicialização da configuração básica

  • Cria os diretórios necessários
  • Configura os parâmetros básicos do sistema
  • Prepara a estrutura para configuração adicional

Instalação do SGBD MariaDB#

# Adicione o repositório 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"

# Atualize a lista de pacotes
sudo apt update

# Instale o MariaDB
sudo apt install mariadb-server mariadb-client
💡 Comentários sobre a instalação do MariaDB

Adicionando o repositório:

  • sudo apt-key adv --recv-keys - adiciona a chave GPG do repositório
  • sudo add-apt-repository - adiciona o repositório MariaDB
  • $(lsb_release -cs) - determina automaticamente o codinome da distribuição

Instalação dos pacotes:

  • mariadb-server - servidor de banco de dados
  • mariadb-client - cliente para conexão ao banco de dados

Configuração básica de segurança do MySQL/MariaDB#

# Execute o script de configuração de segurança
sudo mysql_secure_installation

Perguntas e opções de resposta para configuração de segurança:

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
💡 Comentários sobre a configuração de segurança

mysql_secure_installation - script interativo para configuração básica de segurança do MySQL/MariaDB

Respostas recomendadas:

  • Switch to unix_socket authentication - sim (y) - usar autenticação via unix socket
  • Change the root password - sim (y) - definir senha para o usuário root
  • Remove anonymous users - sim (y) - remover usuários anônimos
  • Disallow root login remotely - não (n) - permitir que o root se conecte remotamente
  • Remove test database - sim (y) - remover o banco de dados de teste
  • Reload privilege tables - sim (y) - recarregar as tabelas de privilégios

Configuração do banco de dados e usuário#

# Conecte-se ao MySQL como root
mysql -u root -p

# Execute os seguintes comandos no shell do MySQL:
-- Adicionando usuário ao BD (substitua a senha por uma segura)
GRANT ALL ON orchestrator.* TO 'orchestrator'@'localhost' IDENTIFIED BY 'mD2vjt(HqZKW' WITH GRANT OPTION;

-- Recarregar privilégios
FLUSH PRIVILEGES;

-- Selecionar banco de dados
USE orchestrator;

-- Atualizar registro da conta
UPDATE `accounts` SET `parent_account_id` = '1' WHERE `accounts`.`id` = 1;

-- Sair do MySQL
exit;
💡 Comentários sobre a configuração do banco de dados

GRANT ALL ON orchestrator. TO 'orchestrator'@'localhost'...* - cria o usuário orchestrator com plenos direitos no banco orchestrator

  • 'orchestrator'@'localhost' - o usuário pode se conectar apenas a partir do localhost
  • WITH GRANT OPTION - o usuário pode conceder permissões a outros usuários

FLUSH PRIVILEGES - recarrega as tabelas de privilégios

UPDATE accounts... - define parent_account_id para a conta do sistema

Importante: Substitua a senha 'mD2vjt(HqZKW' por uma senha única e segura!

Instalação do servidor web e PHP#

# Instale os pacotes necessários
sudo apt -y install lsb-release apt-transport-https ca-certificates curl

# Adicione o repositório 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

# Atualize a lista de pacotes
sudo apt-get update

# Instale o Nginx e 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
💡 Comentários sobre a instalação do servidor web

Adicionando o repositório PHP:

  • Adiciona a chave GPG do repositório PHP do sury.org
  • Adiciona o repositório para PHP 8.5

Instalação dos pacotes:

  • nginx - servidor web
  • php8.5 - interpretador PHP
  • php8.5-fpm - Gerenciador de Processos FastCGI para PHP* php8.5-* - extensões PHP para várias funções

Configuração do PHP#

# Abra o arquivo de configuração do PHP-FPM
sudo nano /etc/php/8.5/fpm/php.ini

# Encontre e altere os seguintes parâmetros:
upload_max_filesize = 100M
post_max_size = 100M

# Salve o arquivo e reinicie o PHP-FPM
sudo service php8.5-fpm restart
💡 Comentários sobre a configuração do PHP

upload_max_filesize = 100M - tamanho máximo do arquivo carregado post_max_size = 100M - tamanho máximo dos dados POST

sudo service php8.5-fpm restart - reinicia o PHP-FPM para aplicar as alterações

Configuração do Nginx#

# Abra o arquivo de configuração do Nginx
sudo nano /etc/nginx/nginx.conf

# Encontre a seção http e adicione:
client_max_body_size 100m;

# Salve o arquivo
💡 Comentários sobre a configuração do Nginx

client_max_body_size 100m - define o tamanho máximo do corpo da requisição do cliente

  • Deve estar na seção http { ... }
  • O valor corresponde às configurações do PHP

Configuração do domínio e configuração do Sherpa#

# Abra o arquivo de configuração do domínio
sudo nano /opt/SherpaOrchestrator/backend/config/domain.conf

# Substitua "orchestrator.sherparpa.ru" pelo seu domínio ou endereço IP (total de 4 substituições)

# Defina o caminho para o socket do PHP-FPM dependendo do 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;
💡 Comentários sobre a configuração do domínio

Substituição do domínio: É necessário substituir todas as ocorrências de "orchestrator.sherparpa.ru" pelo seu domínio real ou endereço IP

Configuração do socket do PHP-FPM: O caminho depende da distribuição Linux:

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

Importante: Se o caminho estiver incorreto, verifique os logs do Nginx: /var/log/nginx/error.log

Configuração dos certificados SSL#

# Copie os certificados SSL para o diretório de configuração
# Substitua os caminhos pelos caminhos reais dos seus 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
💡 Comentários sobre os certificados SSL

Requisitos para os certificados:

  • O certificado deve ser renomeado para orchestrator.crt
  • A chave privada deve ser renomeada para orchestrator.key
  • Formatos: .crt/.pem para o certificado, .key para a chave

Obtenção de certificados:

  • Consulte o administrador do sistema para certificados corporativos
  • Use Let's Encrypt para certificados gratuitos
  • Para testes, você pode criar certificados autoassinados

Configuração do arquivo de configuração do aplicativo#

# Abra o arquivo de configuração do aplicativo
sudo nano /opt/SherpaOrchestrator/backend/config/config.ini

# Configure os parâmetros de conexão com o banco de dados:
database_host=127.0.0.1
database_port=3306
database_user=orchestrator
database_password="mD2vjt(HqZKW"
database_dbname=orchestrator
💡 Comentários sobre a configuração do aplicativo

Parâmetros do banco de dados:

  • database_host - endereço do servidor de banco de dados (geralmente 127.0.0.1 para instalação local)
  • database_port - porta MySQL/MariaDB (por padrão 3306)
  • database_user - usuário do banco de dados (orchestrator)
  • database_password - senha do usuário (deve coincidir com a criada anteriormente)
  • database_dbname - nome do banco de dados (orchestrator)

Importante: A senha deve coincidir exatamente com a senha definida ao criar o usuário do BD

Configuração do phinx.php (migrações do BD)#

O arquivo backend/config/phinx.php é usado pelo Phinx para executar migrações. A senha nele deve coincidir com a senha do BD do config.ini:

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

Na seção environments, no bloco do BD utilizado (por exemplo, orchestrator ou mysql), o parâmetro 'pass' deve coincidir com database_password do config.ini. Caso contrário, as migrações durante a instalação ou atualização falharão.

Ativação da configuração do Nginx#

# Copie a configuração para sites-available
sudo cp /opt/SherpaOrchestrator/backend/config/domain.conf /etc/nginx/sites-available/default

# Reinicie o Nginx
sudo systemctl restart nginx
💡 Comentários sobre a ativação do Nginx

sudo cp ... /etc/nginx/sites-available/default - copia a configuração do site para as configurações ativas do Nginx

sudo systemctl restart nginx - reinicia o Nginx para aplicar a nova configuração

Configuração de permissões#

# Defina as permissões e o proprietário corretos
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator
💡 Comentários sobre a configuração de permissões

sudo chown -R www-data:www-data /opt/SherpaOrchestrator - define www-data como proprietário dos arquivos

  • www-data - usuário do servidor web Nginx/PHP-FPM
  • -R - recursivamente para todos os arquivos e diretórios

sudo chmod -R 775 /opt/SherpaOrchestrator - define as permissões dos arquivos

  • 775 - proprietário e grupo podem ler/escrever/executar, outros apenas ler/executar

Criação do banco de dados de arquivamento#

-- Conecte-se ao MySQL
mysql -u root -p

-- Crie o banco de dados de arquivamento
CREATE DATABASE IF NOT EXISTS orchestrator_archive CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Saia
exit;
💡 Comentários sobre o banco de dados de arquivamento

CREATE DATABASE IF NOT EXISTS orchestrator_archive - cria o banco de dados de arquivamento

  • IF NOT EXISTS - cria apenas se não existir
  • CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci - define a codificação UTF-8 com suporte a Unicode

Atualização da estrutura do banco de dados#

# Vá para o diretório do aplicativo
cd /opt/SherpaOrchestrator

# Verifique as configurações de conexão com o BD no arquivo phinx.php
sudo nano backend/config/phinx.php

# Execute a atualização do banco de dados
sudo ./sh_scripts/migrate.sh

Resultado esperado após a atualização bem-sucedida:

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
💡 Comentários sobre a atualização do banco de dados

Verificação do phinx.php:

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

sudo ./migrate.sh - executa as migrações do banco de dados através do Phinx

  • Atualiza a estrutura das tabelas
  • Adiciona os índices necessários
  • Cria gatilhos e procedimentos

Configuração de tarefas CRON#

# Abra o editor CRON
sudo crontab -e

# Adicione a linha para executar o agendador de tarefas:
* * * * * php /opt/SherpaOrchestrator/backend/app/scheduleCronRunner.php

# Salve e saia do editor
💡 Comentários sobre a configuração do CRON

sudo crontab -e - abre o editor CRON para o usuário root

  • * * * * * - executa a cada minuto
  • php /opt/SherpaOrchestrator/backend/app/scheduleCronRunner.php - executa o agendador de tarefas do Sherpa

Agendador de tarefas:

  • Gerencia o cronograma de execução das tarefas
  • Processa tarefas pendentes
  • Realiza limpeza automática

Instalação do Node.js e PM2```bash#

Instale o Node.js 22.x#

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

Atualize o npm#

sudo npm install -g npm@latest

Instale o PM2#

sudo npm install -g pm2


<details>

<summary>💡 Comentários sobre a instalação do Node.js e PM2</summary>

**curl -sL https://deb.nodesource.com/setup\_22.x | bash -** - adiciona o repositório do Node.js

* `-sL` - silencioso e segue redirecionamentos
* `setup_22.x` - script para a versão 22.x do Node.js

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

**sudo npm install -g pm2** - instala o PM2 globalmente

* PM2 - gerenciador de processos para aplicações Node.js
* Reinício automático de aplicações
* Gerenciamento de logs e monitoramento

</details>

### Configuração do serviço WebSocket

```bash
# Acesse o diretório do serviço websocket
cd /opt/SherpaOrchestrator/backend/app/websocket/

# Instale as dependências
sudo npm install

# Inicie o serviço através do PM2
sudo pm2 start index.js --watch --ignore-watch="node_modules" --name "Websockets"

# Configure a inicialização automática do PM2
sudo pm2 startup

# Salve a configuração do PM2
sudo pm2 save
💡 Comentários sobre a configuração do WebSocket

sudo npm install - instala as dependências do Node.js a partir do package.json

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

  • --watch - reinício ao alterar arquivos
  • --ignore-watch="node_modules" - ignora alterações em node_modules
  • --name "Websockets" - nome do processo no PM2

sudo pm2 startup - configura a inicialização automática do PM2 ao iniciar o sistema sudo pm2 save - salva a configuração atual dos processos

Configuração do nome de domínio (opcional)#

Se você está satisfeito com o acesso à interface do Orquestrador através do IP do servidor, pule esta etapa.

# Abra o arquivo hosts
sudo nano /etc/hosts

# Adicione a entrada (substitua pelo seu IP e domínio):
192.168.1.100    orchestrator.mycompany.com

Inicialização do Orquestrador#

  1. Acesse a URL: https://<seu_dominio_ou_IP>/setup.php
  2. Se o endereço IP for exibido corretamente, clique no botão "Enviar"
  3. Na resposta do script, será fornecido o GUID do orquestrador - anote-o junto com os dados de registro

Com isso, a instalação está concluída!

O sistema Sherpa Orchestrator está disponível no navegador pelo nome de domínio ou endereço IP.

Em seguida, é necessário adicionar e ativar a licença para o orquestrador e a licença para os robôs na interface web do orquestrador.