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ódigo | Ambiente |
|---|---|
| prd | Produção |
| qlt | Homologação |
| tst | Teste |
| dev | Desenvolvimento |
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:
chmod 400 mykey.pem5. 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:
- Nome do grupo de segurança: "hrz-security-group-" + sigla do Cliente, Ex.: hrz-security-group-ctg.
- 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:
| Tipo | Intervalo de Portas | Tipo de origem | Descrição |
|---|---|---|---|
| ssh | 22 | Qualquer lugar | SSH Suporte |
| http | 80 | Qualquer lugar | HTTP |
| https | 443 | Qualquer lugar | HTTPS |
| TCP personalizado | 3000 | Qualquer lugar | API |
| TCP personalizado | 5000 | Qualquer lugar | Realtime |
| TCP personalizado | 7000 | Qualquer lugar | Report |
| TCP personalizado | 9000 | Qualquer lugar | AI |

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:
- Nome do bucket: utilize o padrão: "hrz-client-" + sigla do Cliente + código do ambiente + "-private". Ex.: hrz-client-ctg-prd-private.
- Configurações de acesso, manter marcada a opção: Bloquear todo o acesso público.
- Versionamento de bucket: Ativar.
Configração do bucket público:
- Nome do bucket: utilize o padrão: "hrz-client-" + sigla do Cliente + código do ambiente + "-public". Ex.: hrz-client-ctg-prd-public.
- Configurações do acesso, desmarcar a opção: Bloquear todo o acesso público.
- Versionamento de bucket: Ativar.
- 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.
{
"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".
- Nome do usuário: hrz-storage
- Definir permissões: Selecione "Anexar políticas diretamente" > "AmazonS3FullAccess".
- Finelize essa parte clicando em "criar usuário".
- Acesse o usuário criado e clique na aba "Credenciais de segurança" para criar a chave de acesso que será utilizada pela plataforma.
- Clique em "criar chave de acesso". Selecione o caso de uso: "outros" e entre com a descrição: "Horizon UI Access Key".
- 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.
- Escolher o provedor do código-fonte: Selecione GitHub.
- Adicionar repositório e ramificação: Entre com o acesso ao GitHub e selecione o repositório hrz-digital/ui.
- Imagem de compilação: Selecionar a opção "Custom Build Image" e entrar com o código "node:24.6.0"
- Variáveis de ambiente
Código Ambiente API_URL https://###CÓDIGO DO CLIENTE###.services.hrz.digital:3000 REALTIME_URL wss://###CÓDIGO DO CLIENTE###.services.hrz.digital:5000 AI_URL wss://###CÓDIGO DO CLIENTE###.services.hrz.digital:9000 HRZ_TITLE Plataforma Horizon HRZ_ICON data: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== - 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:
"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.
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.
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.shDefina as variáreis de ambiente conforme as definições abaixo:
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_KUMAInstalando as dependencias necessárias
sudo hrz-services.sh initConfigurando o GitHub CLI
- What is your preferred protocol for Git operations on this host? HTTPS
- Authenticate Git with your GitHub credentials? Yes
- 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
sudo snap install astral-uv --classic
sudo curl -fsSL https://ollama.com/install.sh | sh
sudo ollama pull nomic-embed-text:latestFazendo o deploy dos serviços da plataforma
sudo hrz-services.sh deployConfigurando o acesso aos arquivos de log dos Serviços
- Execute o commando a baixo para criar um usuário de acesso.
sudo htpasswd -c /etc/nginx/.htpasswd hrz- Edite o arquivo de configuração do nginx para criar o caminho para os logs.
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;
}
}- Reinicie o serviço do nginx
sudo systemctl restart nginxInterface 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