Processo de atualização do Sherpa Orchestrator#

⚠️ Antes de atualizar: leia as notas de todas as versões, desde a instalada até a de destino. Elas podem conter etapas obrigatórias para a atualização. Notas da última versão publicada: versão 5.9.4.

⚠️ Importante: Se o Sherpa Orchestrator estiver sendo atualizado de uma versão inferior a 5.9.1 e o banco de dados integrado do Sherpa Orchestrator estiver em uso, a migração do banco de dados deve ser realizada antes da atualização.

Para MariaDB, realize a migração conforme as instruções em "Migração do MariaDB para o contêiner orchestrator-db:v5.9.2+".

Para PostgreSQL, realize a migração conforme as instruções em "Migração do PostgreSQL para o contêiner orchestrator-pg:v5.9.2+".

Se a atualização for a partir da versão 5.9.1 ou posterior, ou se for usado um banco de dados externo, a migração não é necessária.

💡 Atualização automática Em vez das etapas manuais abaixo, é possível usar um script interativo:

sudo ./sh_scripts/update.sh

O script faz backup, interrompe os contêineres, baixa novas imagens, atualiza o .env e inicia com verificação de disponibilidade.

1. Download dos arquivos#

Baixe todos os arquivos de atualização mais recentes do Sherpa Orchestrator pelos links na seção de preparação

2. Transferência dos arquivos para o servidor#

Após o download, transfira todos os arquivos para o servidor Linux de destino por qualquer método conveniente:

Via SCP/SFTP#

# Copie os arquivos para o servidor
scp *.tar.gz user@target-server:/path/to/installation/directory/
💡 Notas sobre a transferência via SCP/SFTP

*scp .tar.gz user@target-server:/path/to/installation/directory/ - copia os arquivos para o servidor remoto

  • scp - cópia segura
  • *.tar.gz - padrão para selecionar arquivos de atualização
  • user@target-server - credenciais de conexão
  • /path/to/installation/directory/ - caminho de destino no servidor

Via cliente SFTP#

Use qualquer cliente SFTP (FileZilla, WinSCP, Cyberduck) para copiar os arquivos para o servidor.

Via pasta de rede#

Se o servidor estiver acessível via SMB/CIFS, use o Explorador do Windows ou o comando copy.

Verificação da transferência#

# Conecte-se ao servidor
ssh user@target-server

# Vá para o diretório com os arquivos (normalmente opt/SherpaOrchestrator)
cd /path/to/installation/directory

# Verifique se todos os arquivos estão presentes
ls -la *.tar.gz

# Verifique os tamanhos dos arquivos
ls -lh *.tar.gz
💡 Notas sobre a verificação da transferência

ssh user@target-server - conecta ao servidor remoto via SSH

  • ssh - secure shell
  • user@target-server - credenciais de conexão

cd /path/to/installation/directory - navega até o diretório com os arquivos

*ls -la .tar.gz - mostra informações detalhadas sobre os arquivos baixados

  • -l - formato longo
  • -a - mostra arquivos ocultos

*ls -lh .tar.gz - mostra os tamanhos dos arquivos em formato legível

  • -h - human readable (KB, MB, GB)

3. Parada dos contêineres#

# Pare todos os serviços em execução
docker compose down
💡 Notas sobre a parada dos contêineres

docker compose down - para todos os serviços do Docker Compose

  • Para e remove contêineres e redes
  • Preserva volumes e imagens

Verificação da parada: docker ps -a | grep orchestrator - verifica o status dos contêineres

  • docker ps -a - mostra todos os contêineres (inclusive os parados)
  • | grep orchestrator - filtra pelo nome orchestrator

4. Carregamento das imagens Docker#

# Crie um backup do arquivo .env (se existir)
cp .env .env.backup

# Crie um backup da configuração
cp -r ./backend/config ./backend/config_backup

# Se forem usados certificados personalizados, copie-os para um local seguro
cp -r ./backend/config/certs ./certs_backup

# Descompacte os arquivos de atualização
tar -xvzf "$(ls docker_orchestrator_client_files_*.tgz | sort -V | tail -n 1)"

# Copie a configuração padrão do nginx (se ela não existir)
cp -r ./nginx/config/default ./nginx/config

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

# Se tiver sido criado um backup dos certificados, restaure-os
cp -r ./certs_backup/* ./nginx/config/certs/

# Carregue todas as imagens Docker
sudo ./sh_scripts/load_all_docker_images.sh
💡 Notas sobre o carregamento das imagens Docker

Criação de backups:

  • cp .env .env.backup - backup do arquivo de configuração
  • cp -r ./backend/config ./backend/config_backup - backup do diretório config
  • cp -r ./backend/config/certs ./certs_backup - backup dos certificados SSL

Descompactação e preparação:

  • tar -xvzf "$(ls docker_orchestrator_client_files_*.tgz | sort -V | tail -n 1)" - descompacta os arquivos de atualização mais recentes
  • chmod +x sh_scripts/*.sh - torna os scripts executáveis
  • cp -r ./certs_backup/* ./backend/config/certs/ - restaura os certificados

sudo ./sh_scripts/load_all_docker_images.sh - carrega todas as imagens Docker

Verificação do carregamento: docker images | grep orchestrator - mostra as imagens do orchestrator carregadas

5. Seleção da configuração de BD e verificação das variáveis de ambiente#

# Abra o arquivo .env para revisão e atualização
nano ./.env

# Verifique a presença das variáveis obrigatórias
grep -E "(HOST_IP|MYSQL_PASSWORD|DB_PASSWORD|POSTGRES_PASSWORD|NGINX_DOMAIN_NAME|DB_ENGINE)" .env

# Verifique a correção da sintaxe
cat .env | grep -v '^#' | grep '=' | wc -l
💡 Notas sobre a verificação das variáveis de ambiente

nano ./.env - abre o arquivo de configuração no editor

grep -E "..." .env - verifica a presença das variáveis-chave:

  • HOST_IP — o endereço IP ou domínio do servidor
  • NGINX_DOMAIN_NAME — o domínio do NGINX
  • DB_ENGINE — tipo de banco de dados: mysql ou pgsql
  • MYSQL_PASSWORD / DB_PASSWORD — senha do MySQL para a aplicação e o contêiner do banco de dados (devem coincidir)
  • POSTGRES_PASSWORD — senha do PostgreSQL (usada tanto pela aplicação quanto pelo contêiner do banco de dados)

cat .env | grep -v '^#' | grep '=' | wc -l - conta o número de variáveis

Todos os parâmetros de configuração (banco de dados, e-mail, LDAP, proxy e outros) são lidos pela aplicação diretamente das variáveis de ambiente do arquivo .env. Não é necessário editar backend/config/config.ini nem backend/config/phinx.php — eles já estão configurados para funcionar via .env.

5.1 Migração do cache.bin (somente ao atualizar a partir da versão ≤ v141856)#

⚠️ Importante: Esta etapa é necessária somente se a atualização for a partir da versão v141856 ou anterior. Se a versão atual do orchestrator for superior a v141856, pule esta seção.

Ao atualizar a partir da versão ≤ v141856, o arquivo cache.bin deve ser montado dentro do contêiner orchestrator.

Adicione a seguinte linha à seção volumes do serviço orchestrator no arquivo docker-compose.yml:

  orchestrator:
    ...
    volumes:
      - orchestrator-storage:/opt/SherpaOrchestrator/backend/Storage
      - ./backend/config:/opt/SherpaOrchestrator/backend/config:z
      - ./path/to/cache.bin:/opt/SherpaOrchestrator/backend/app/cache.bin  # adicione esta linha

Substitua ./path/to/cache.bin pelo caminho real do arquivo cache.bin no servidor.

6. Inicialização dos contêineres#

# Inicie os serviços com o perfil de BD selecionado
# Opção 1: MariaDB
docker compose --profile mariadb up -d

# Opção 2: PostgreSQL
docker compose --profile pg up -d

# Se o VNC for necessário (opcional), adicione o perfil vnc:
# Opção 1: MariaDB + VNC
docker compose --profile mariadb --profile vnc up -d

# Opção 2: PostgreSQL + VNC
docker compose --profile pg --profile vnc up -d

# Se o Vault for necessário (opcional), adicione o perfil vault:
# Opção 1: MariaDB + Vault
docker compose --profile mariadb --profile vault up -d

# Opção 2: PostgreSQL + Vault
docker compose --profile pg --profile vault up -d

# Combinação de perfis: MariaDB + VNC + Vault
docker compose --profile mariadb --profile vnc --profile vault up -d
💡 Notas sobre a inicialização dos contêineres

docker compose --profile <mariadb|pg> up -d - inicia os serviços em segundo plano com o banco de dados selecionado

  • -d - modo detached (modo em segundo plano)

--profile vnc - o perfil VNC é opcional e inicia orchestrator-vnc-proxy

  • Necessário apenas se os robôs usarem VNC para controlar a área de trabalho
  • Adicione-o a qualquer combinação de perfis

docker compose --profile <mariadb|pg> --profile vault up -d - inicia o sistema com Vault

  • O perfil vault é opcional e é usado apenas quando um cofre de segredos e a migração para o Vault forem necessários

Verificação da inicialização:

  • docker compose ps - mostra o status de todos os contêineres
  • docker compose logs -f orchestrator - mostra os logs de inicialização em tempo real

A inicialização do Vault e a migração de segredos são tratadas em um guia separado:

Após uma atualização bem-sucedida, o sistema Sherpa Orchestrator estará pronto para uso.

Migração do indicador de captura nos logs#

Esta seção se aplica a uma versão com 20261006120000_add_log_has_file.php. Antes da atualização são necessários um backup do banco e uma janela de manutenção. A conta de migração precisa de permissões para alterar tabelas e criar gatilhos. O PostgreSQL também exige permissão para criar a função.

A migração segue esta sequência:

  1. Os processos da aplicação devem ser interrompidos, mantendo o banco disponível.

  2. As migrações habituais do Phinx devem ser executadas no contêiner da nova versão para o mecanismo selecionado.

  3. Após a migração, esta consulta deve confirmar que nenhuma linha está sem o indicador de captura:

    SELECT COUNT(*) FROM orchestrator.logs WHERE has_file IS NULL;
    
  4. A aplicação pode ser iniciada quando o resultado for 0.

A migração adiciona orchestrator.logs.has_file e instala gatilhos para registros novos e alterados. As linhas existentes são preenchidas em lotes de até 100. As capturas antigas são lidas uma vez, portanto a duração depende do volume de dados. A alteração do esquema pode bloquear a tabela.

Após uma interrupção, a causa deve ser corrigida e as migrações executadas novamente. Linhas já preenchidas são ignoradas. A opção --fake não deve ser usada.

O formato da resposta da API e a obtenção de capturas são mantidos. A tabela de arquivo não muda. Para reverter, primeiro é necessário parar a aplicação e restaurar o código que não usa has_file. Depois a migração pode ser revertida. As capturas não são excluídas.