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

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

#### Preparação do servidor

**Adicionando usuário ao grupo sudo**

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a adição de usuário ao sudo</summary>

**/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.

</details>

**Configuração do fuso horário**

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

# Verifique a configuração
timedatectl
```

<details>

<summary>💡 Comentários sobre a configuração do fuso horário</summary>

**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.

</details>

**Atualização do sistema**

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a atualização do sistema</summary>

**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

</details>

#### 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.

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a descompactação do arquivo</summary>

**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.

</details>

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

```bash
# 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 ..
```

<details>

<summary>💡 Comentários sobre a preparação dos scripts</summary>

**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

</details>

**Inicialização da configuração**

```bash
# Execute a inicialização das configurações
sudo ./sh_scripts/create_config.sh
```

<details>

<summary>💡 Comentários sobre a inicialização da configuração</summary>

**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

</details>

#### Instalação do SGBD MariaDB

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a instalação do MariaDB</summary>

**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

</details>

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

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a configuração de segurança</summary>

**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

</details>

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

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

# Execute os seguintes comandos no shell do MySQL:
```

```sql
-- 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;
```

<details>

<summary>💡 Comentários sobre a configuração do banco de dados</summary>

*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!

</details>

#### Instalação do servidor web e PHP

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a instalação do servidor web</summary>

**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

</details>

#### Configuração do PHP

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a configuração do PHP</summary>

**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

</details>

#### Configuração do Nginx

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a configuração do Nginx</summary>

**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

</details>

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

```bash
# 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;
```

<details>

<summary>💡 Comentários sobre a configuração do domínio</summary>

**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`

</details>

#### Configuração dos certificados SSL

```bash
# 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
```

<details>

<summary>💡 Comentários sobre os certificados SSL</summary>

**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

</details>

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

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a configuração do aplicativo</summary>

**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

</details>

**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:

```bash
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

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a ativação do Nginx</summary>

**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

</details>

#### Configuração de permissões

```bash
# Defina as permissões e o proprietário corretos
sudo chown -R www-data:www-data /opt/SherpaOrchestrator
sudo chmod -R 775 /opt/SherpaOrchestrator
```

<details>

<summary>💡 Comentários sobre a configuração de permissões</summary>

**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

</details>

#### Criação do banco de dados de arquivamento

```sql
-- 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;
```

<details>

<summary>💡 Comentários sobre o banco de dados de arquivamento</summary>

**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

</details>

#### Atualização da estrutura do banco de dados

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a atualização do banco de dados</summary>

**Verificação do phinx.php:**

```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

</details>

#### Configuração de tarefas CRON

```bash
# 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
```

<details>

<summary>💡 Comentários sobre a configuração do CRON</summary>

**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

</details>

#### 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
````

<details>

<summary>💡 Comentários sobre a configuração do WebSocket</summary>

**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

</details>

#### 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.

```bash
# 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.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.sherparpa.ru/pt/sherpa-rpa/sherpa-orchestrator/ustanovka-sherpa-orchestrator/bez-ispolzvaniya-docker/process-ustanovki-sherpa-orchestrator-lokalnaya-versiya.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
