Skip to content

Instalação

Instruções de instalação da plataforma Horizon.

Cloud AWS

A primeria definição importante é verificar se a localidade está correta de acordo com o Cliente em questão.

Criando a instância EC2

Acesse o console da AWS do Cliente e navegue para a página das instâncias EC2. Clique no botão para executar um anova instância e siga os passos a baixo para configurar a instância que será responsável por executar os serviçõs da plataforma Horizon.

1. Definir o nome da instância

Utilize o padrão: Sigla do cliente - Código do Ambiente. Lembre-se de utilizar sempre letras minusculas. Ex.: ctg-prd

CódigoAmbiente
prdProdução
qltHomologação
tstTeste
devDesenvolvimento

2. Sistema operacional

Selecione o sistema operacional Ubuntu Server 24.04 LTS

3. Tipo de instância

Selecione o tipo t3.medium

4. Par de chaves (login)

Clique em criar novo par de chaves e defina o nome utilizando o padrão: "hrz-client-" + sigla do Cliente. Ex.: hrz-client-ctg, mantenha o tipo de par de chaves com o valor: RSA e o formato de arquivo como .pem no final clique em "criara par de chaves".

Nesse passo é importante armazenar esse arquivo que será gerado de forma segura para que seja possível acessar a VM pelo terminal ou utilizando algum aplicativo externo.

INFO

Antes de poder utilizar essa chave para acesso ao ambiente é importante mudar a permissão do arquivo utilizando o comando:

zsh
chmod 400 mykey.pem

5. Configurações de rede

Para começar a configuração dos parâmetros de rede, clique no botão "editar" no canto superior direito. E realize as seguintes definições:

  1. Nome do grupo de segurança: "hrz-security-group-" + sigla do Cliente, Ex.: hrz-security-group-ctg.
  2. Regras de grupo de segurança de entrada. Nesse ponto é importante liberar as portas necessárias para que a plataforma possa ser acessada pelos outros serviços. Devem ser configuradas 5 entradas conforme a tabela a baixo:
TipoIntervalo de PortasTipo de origemDescrição
ssh22Qualquer lugarSSH Suporte
http80Qualquer lugarHTTP
https443Qualquer lugarHTTPS
TCP personalizado3000Qualquer lugarAPI
TCP personalizado5000Qualquer lugarRealtime
TCP personalizado7000Qualquer lugarReport
TCP personalizado9000Qualquer lugarAI

Exemplo de configração da regra de acesso

6. Configurar armazenamento

Definir o armazenamento como sendo 24 GIB.

Associar IP elástico

Acessar o link "Rede e Segurança > IPs elasticos" e clicar no botão "Alocar endereço IP elástico". Selecionar a opção "Conjunto de endereços IPv4 da Amazon" e clicar no botão "Alocar".

Por fim selecione o novo item criado, clique no menu de ações na opção "Associar endereço IP elástico" e selecione a instância EC2 que foi criada no passo anterior.

Configuração do Storage

Criando os buckets onde serão armazenados os arquivos anexados na plataforma. Comece navegando para o serviço de S3 da AWS e clicando em "criar bucket".

Devemos criar dois buckets distintos, um para armazenar os arquivos privados e outro os públicos.

Configração do bucket privado:

  1. Nome do bucket: utilize o padrão: "hrz-client-" + sigla do Cliente + código do ambiente + "-private". Ex.: hrz-client-ctg-prd-private.
  2. Configurações de acesso, manter marcada a opção: Bloquear todo o acesso público.
  3. Versionamento de bucket: Ativar.

Configração do bucket público:

  1. Nome do bucket: utilize o padrão: "hrz-client-" + sigla do Cliente + código do ambiente + "-public". Ex.: hrz-client-ctg-prd-public.
  2. Configurações do acesso, desmarcar a opção: Bloquear todo o acesso público.
  3. Versionamento de bucket: Ativar.
  4. Acessar o bucket criado e clicar na aba "Permissões". Definir a política do bucket para que seja possivel utilizar de forma pública utilizando o código abaixo. Lembre-se de substituir o código do cliente no script.
json
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::hrz-client-###CÓDIGO DO CLIENTE###-prd-public/*"
    }
  ]
}

Configração do usuário para acesso aos buckets

Navegue para o serviço IAM, selecione a opção "Usuários" e clique em "criar usuário".

  1. Nome do usuário: hrz-storage
  2. Definir permissões: Selecione "Anexar políticas diretamente" > "AmazonS3FullAccess".
  3. Finelize essa parte clicando em "criar usuário".
  4. Acesse o usuário criado e clique na aba "Credenciais de segurança" para criar a chave de acesso que será utilizada pela plataforma.
  5. Clique em "criar chave de acesso". Selecione o caso de uso: "outros" e entre com a descrição: "Horizon UI Access Key".
  6. Guarde em algum local seguro o arquivo .csv com os dados da chave de acesso que será utiliza em uma próxima etapa.

Configurando a Interface de Usuário no Amplify

Navegue para o serviço Amplify da AWS. Inicie a criação de uma nova aplicação.

  1. Escolher o provedor do código-fonte: Selecione GitHub.
  2. Adicionar repositório e ramificação: Entre com o acesso ao GitHub e selecione o repositório hrz-digital/ui.
  3. Imagem de compilação: Selecionar a opção "Custom Build Image" e entrar com o código "node:24.6.0"
  4. Variáveis de ambiente
    CódigoAmbiente
    API_URLhttps://###CÓDIGO DO CLIENTE###.services.hrz.digital:3000
    REALTIME_URLwss://###CÓDIGO DO CLIENTE###.services.hrz.digital:5000
    AI_URLwss://###CÓDIGO DO CLIENTE###.services.hrz.digital:9000
    HRZ_TITLEPlataforma Horizon
    HRZ_ICONdata:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACkAAAAqCAYAAAAu9HJYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAQlSURBVHgBvVhNchpXEO5+IAmpUpXxxpG0QrsIkgq6AT6BySIGryKdIOgEQieQdQJbmxRkAzmB0QlEqiKcnWaRMpI3xgurEGheu3sM1iAxP2/E8C0oZt5Pf9OvX/f3HsICkH95WQUNzwGwQEAWAvb5dQtRn/xb32iHjUdIEIVKLzvU2GQrBfAloF6dN57uB82TGEmXIOFb/psN6xtGVEFCGIE6gAgEBQS6+lOlV/RrT4SkeJGIdk3GEOGBX1siJB2tCqZjCKBYKF1Ys9qSIam0MUnBIJNZHEkg/AXmiKQ2ThxP9v+rb9izGuZOMvfiKvKunga2/FrmStJNI0g1MIRUII360K99biQl7WjC1xADmpw9v6UWzIWkSXW5BxtTaufdX5utoE5peCSCCLrLCM6JQuwAoqW1ziKmvidyPqUQWyIuZHyYjUfVbolBItUUZTM1KUIbgQ79FI4k7dtMpsBVRpRR8bzxw06QnVieFCOjldUDTVB1a8UdbIW050cuX758K5VlKA/jYYjUhhAYkRRyw+W1P0YI1fvekxRyfXO9Z7e2+n7jmdAhe68IhphJ8keOk/Q4xkil+qgdS5ZmBLjLbyx6YJ0Ou/X1GoRAPMzebIs3wQBTJCURo3iJyNKTl47mlZmELs2YQh9365s1iIj73iSKojfhW4w1Tb+QYXcb61tgiFzl8gLuyPV5jidB/d08OcqsHZkS/Fol6BnEAp14Hiw/iTaByld6u6YC1TWD+jioSgQaBWh7n53VtWJwf8LfwRx2t75Rg5hIDzId77OjnWJQfyXHTDCG/gcegU7rSZ/jxb57owIdpR7muyhIfZTf7RfvSxATSF6SYAUexMYHdUM4n1xDSh3lyx+OwgI/CkIOYtQBQyALhkLpoyVpRI6jw5XVs59fXsX2qkuSs4vfyihJrmAGe2kwaI0yA++EWUdTU2pz0LJNAx94H1G9nqWK3GQ+KfwQZWoWEOf1jTe5Midkf/1o88QtTfpUpdP2+Z9Pp1ZrLO8u/MYuc/7teNKbm8yXblZ+5dgMX3b2uksw/BzDYQBV9kyTHH3GH0TyUeIMaRzqwN3s6tPtMl9yTcx6W3OVXm2cN7NT3AL0YZY3zXesDR2iEt/pPIcA8lyhtjJCMqKK5w/df9dYfzVT9EpcoVZuzIyU7phUFhnrAOzigyKh/+42Nku58lWTzUfdZH1e+p3EbtXyv/1fIJVmQl89JrEMjtPhd2dgBH2c6P2kYBxCB3LgIu2UICAf+sBO7OpvAqnxQnDp+rNNsS4NIJu4J73YrvTeYAxBk7gnp4whmlc3To0LJQm3t20wBIFzutDlFhimIFvU/2I9yVi+Wd4T41H6Eul9ydELJymCV7xDOHXOuQ+5ZHg2uSNa+HJ74VYnLqcKlXszzEdnFib69DOrLO8lwxdOX9Q3cEEP+wAAAABJRU5ErkJggg==
  5. Salvar e Implementar

Após a implantação da aplicação agora é o momento de configurar o domínio que será utilizado para acesso da plataforma. Navegue para a sessão de Hospedagem > Domínios personalizados.

Editar as configurações em Hospedagem > Regravações e redirecionamentos utilizando o seguinte código:

json
"source": "</^[^.]+$|\\.(?!(css|gif|ico|jpg|js|png|txt|svg|woff|woff2|otf|ttf|map|json)$)([^.]+$)/>",

Mongo Atlas

Criar um novo cluster para os dados da plataforma do cliente.

Crie um usuário de acesso para o banco de dados com o nome "hrz". Lembre-se de liberar acesso para acesso a base por qualquer IP.

Utilize os camandos para criar um novo dump e restaurar para o novo banco de dados criado.

shell
mongodump --uri mongodb+srv://hrz:###SENHA###@hrz-digital.eduevu1.mongodb.net/horizon-training

mongorestore --uri mongodb+srv://hrz:###SENHA###@hrz-client-###CÓDIGO DO CLIENTE###-prd.pyejidv.mongodb.net --nsFrom "horizon-training.*" --nsTo "horizon.*"

CloudAMQP

Criar uma nova instância para lidar com as filas de execução das tarefas da plataforma.

Serviços da Plataforma

Para seguir com a instalação da plataforma Horizon precisamos realziar as configurações dos serviços na VM que foi criada anteriormente.

Copie o arquivo com o script de instalação da plataforma para a pasta: /usr/local/bin.

shell
scp -i __CAMINHO PARA A KEY__ hrz-services.sh ubuntu@__CÓDIGO DO CLIENTE__.services.hrz.digital:/tmp
sudo mv /tmp/hrz-services.sh /usr/local/bin
sudo chmod +x /usr/local/bin/hrz-services.sh

Defina as variáreis de ambiente conforme as definições abaixo:

shell
HRZ_DB="###DB-URI###"
HRZ_DB_NAME="horizon"
HRZ_MQ="###RMQ-URL###"
HRZ_CERT="/etc/letsencrypt/live/###ENV-DOMAIN###.services.hrz.digital/fullchain.pem"
HRZ_KEY="/etc/letsencrypt/live/###ENV-DOMAIN###.services.hrz.digital/privkey.pem"
HRZ_URL="###ENV-DOMAIN###.services.hrz.digital"
HRZ_REALTIME="wss://###ENV-DOMAIN###.services.hrz.digital:5000"
HRZ_API_SECRET="Definir uma chave complexa para ser utilizadanos tokens JWT"
HRZ_API_KEY=VALOR_DA_API_KEY
HRZ_ENCRYPTION_KEY="Definir uma chave AES 256 bits para encriptação de dados"
HRZ_MONITOR_API=CÓDIGO_DO_UPTIME_KUMA
HRZ_MONITOR_REALTIME=CÓDIGO_DO_UPTIME_KUMA
HRZ_MONITOR_SCHEDULER=CÓDIGO_DO_UPTIME_KUMA
HRZ_MONITOR_WATCHER=CÓDIGO_DO_UPTIME_KUMA
HRZ_MONITOR_WORKER=CÓDIGO_DO_UPTIME_KUMA

Instalando as dependencias necessárias

shell
sudo hrz-services.sh init

Configurando o GitHub CLI

  1. What is your preferred protocol for Git operations on this host? HTTPS
  2. Authenticate Git with your GitHub credentials? Yes
  3. Open a web browser at https://github.com/login/device and enter the one-time code

Instalando as dependências necessárias para o serviço de IA

shell
sudo snap install astral-uv --classic
sudo curl -fsSL https://ollama.com/install.sh | sh
sudo ollama pull nomic-embed-text:latest

Fazendo o deploy dos serviços da plataforma

shell
sudo hrz-services.sh deploy

Configurando o acesso aos arquivos de log dos Serviços

  1. Execute o commando a baixo para criar um usuário de acesso.
shell
sudo htpasswd -c /etc/nginx/.htpasswd hrz
  1. Edite o arquivo de configuração do nginx para criar o caminho para os logs.
shell
location /logs {
    auth_basic "Password Required";
    auth_basic_user_file /etc/nginx/.htpasswd;

    alias /opt/hrz;
    autoindex on;
    types {
        text/plain out;
        text/plain pid;
        text/plain old;
    }
}
  1. Reinicie o serviço do nginx
shell
sudo systemctl restart nginx

Interface do Usuário

A parte final da instalação da Plataforma contempla as configurações da inteface de usuário por dentro da própria plataforma.

Definições Gerais

Acesse o menu de administração no item de configurações gerais para seguir com as configurações.

Configuração do storage

Selecione qual o provedor de armazenamento de arquivos que está sendo utilizado. Coloque o nome dos Buckets, sem a parte final que define se é público ou privado. Ex.: hrz-client-ctg-prd.

Defina a URL pública de acesso aos arquivos.
Ex.: https://hrz-client-ctg-prd-public.s3.sa-east-1.amazonaws.com/

Agora acesse a sessão "Segurança > Dados Secretos" e defina o valor para o item "hrz_store_config" com os dados que foram criados no item Configração do usuário para acesso aos buckets