Ir para o conteúdo

Deploy VPS — AWS ou Hostinger

Guia para subir Issabel PBX + SQL Server + LorentzCTI + Supervisor em VPS Linux nova.

Dois caminhos de provedor:

Caminho SO testado Firewall
A — AWS EC2 Rocky Linux 9 Security Group + AWS CLI (opcional)
B — Hostinger KVM Ubuntu 22.04 LTS Painel Hostinger / ufw

Tempo estimado: 2–4 h (ISO Issabel ~1,9 GB).


O que levar para a VPS (sem código-fonte CTI)

Entrega oficial para suporte

Desenvolvimento gera dist/lorentz-deploy-<versao>.tar.gz (ver 15-distribuicao-equipe-suporte.md).

O pacote inclui:

omnichannel/
├── lorentz-vps-stack/
│   ├── resources/net9.0.zip    ← Release LorentzCTI (fixo nesta pasta)
│   ├── INSTALACAO-SUPORTE.md
│   └── ...
└── supervisor/

Suporte: INSTALACAO-SUPORTE.md./scripts/prepare-support-install.sh

Pacote mínimo manual (alternativa)

Não envie o monorepo completo. Pacote mínimo:

~/omnichannel/
├── lorentz-vps-stack/          ← scripts, compose, docs, templates
│   └── resources/
│       └── net9.0.zip          ← binários LorentzCTI (.NET 9 publish)
└── supervisor/                 ← PHP (interface web)
Item Obrigatório Notas
lorentz-vps-stack/ Sim Scripts de deploy
resources/net9.0.zip Sim Publish do LorentzCTI — não leve server/LorentzCTI/
supervisor/ Sim PHP montado no container
server/LorentzCTI/ Não Apenas no PC de build

Gerar net9.0.zip (PC de desenvolvimento)

Requer .NET SDK 9 no monorepo:

cd lorentz-vps-stack
./scripts/build-lorentz-cti-zip.sh
# Saída: resources/net9.0.zip

Ou manualmente:

cd server/LorentzCTI
dotnet publish LorentzCTI.vbproj -c Release -o bin/Release/net9.0/publish /p:UseAppHost=false
cd bin/Release/net9.0/publish && zip -r ../../../../../../lorentz-vps-stack/resources/net9.0.zip .

Extrair na VPS

cd ~/omnichannel/lorentz-vps-stack
./scripts/extract-lorentz-cti-publish.sh resources/net9.0.zip
ls resources/lorentz-cti-publish/LorentzCTI.dll

O LorentzCTI.ini é gerado depois por ./scripts/render-config.sh (não use o INI dentro do zip).

Build CTI a partir do código (opcional — dev)

Somente se tiver server/LorentzCTI/ na VPS:

docker compose -f docker-compose.yml -f docker-compose.source.yml up -d --build lorentz-cti

Requisitos mínimos da VPS

Recurso Mínimo Recomendado
vCPU 2 4
RAM 4 GB 8 GB
Disco SSD 40 GB 80 GB
Swap 4 GB 4 GB (script cria)
SO x86_64 Linux Rocky 9 / Ubuntu 22.04

Portas (firewall)

Porta Protocolo Serviço
22 TCP SSH
80, 443 TCP Issabel
8080 TCP Supervisor
9090 TCP MonitorOPS
5060 UDP SIP
10000–10100 UDP RTP

Não expor: 5038 (AMI), 1433 (SQL).


Checklist e scripts

Momento Comando
Antes ./scripts/check-pre-install.sh
Deploy ./scripts/deploy-all.sh
Depois ./scripts/validate-install.sh
Externo ./scripts/validate-install.sh --external

Passos comuns (AWS e Hostinger)

1. Conectar SSH

ssh -i ~/.ssh/sua-chave.pem USUARIO@IP_DA_VPS
Provedor Usuário típico
AWS Rocky rocky
Hostinger Ubuntu ubuntu

2. Preparar SO

Rocky / RHEL:

sudo dnf update -y
sudo timedatectl set-timezone America/Sao_Paulo
mkdir -p ~/omnichannel

Ubuntu (Hostinger):

sudo apt update && sudo apt upgrade -y
sudo timedatectl set-timezone America/Sao_Paulo
mkdir -p ~/omnichannel

3. Copiar pacote mínimo (SCP)

No PC (PowerShell), a partir de d:\omnichannel:

scp -i "C:\Users\aragu\.ssh\sua-chave.pem" -r `
  d:\omnichannel\lorentz-vps-stack `
  d:\omnichannel\supervisor `
  usuario@IP:~/omnichannel/

scp -i "C:\Users\aragu\.ssh\sua-chave.pem" `
  d:\omnichannel\lorentz-vps-stack\resources\net9.0.zip `
  usuario@IP:~/omnichannel/lorentz-vps-stack/resources/

Na VPS:

cd ~/omnichannel/lorentz-vps-stack
chmod +x scripts/*.sh
./scripts/extract-lorentz-cti-publish.sh resources/net9.0.zip
ls ../supervisor/login.php

4. Configurar .env

cp .env.example .env
nano .env
VPS_PUBLIC_IP=IP_DA_VPS
SUPERVISOR_PUBLIC_URL=http://IP_DA_VPS:8080/
ISSABEL_SIP_EXTERNAL_ADDRESS=IP_DA_VPS
MSSQL_SA_PASSWORD=Jubilu2024
LORENTZ_CTI_PBX_IP=host.docker.internal

# Hostinger Ubuntu — ajuste o caminho Issabel:
ISSABEL_DIR=/home/ubuntu/issabel4-docker

5. Deploy

./scripts/check-pre-install.sh
./scripts/deploy-all.sh
./scripts/validate-install.sh --external

6. Pós-deploy

Bootstrap SQL (se volume novo):

docker cp docker/sqlserver/init/01-bootstrap-homolog.sql lorentz-sqlserver:/tmp/
docker cp docker/sqlserver/init/02-cti-core-tables.sql lorentz-sqlserver:/tmp/
docker exec lorentz-sqlserver /opt/mssql-tools18/bin/sqlcmd \
  -S localhost -U sa -P 'Jubilu2024' -C -i /tmp/01-bootstrap-homolog.sql
docker exec lorentz-sqlserver /opt/mssql-tools18/bin/sqlcmd \
  -S localhost -U sa -P 'Jubilu2024' -C -i /tmp/02-cti-core-tables.sql

AMI para rede Docker (LorentzCTI):

docker exec issabel-prod bash -c 'cat >> /etc/asterisk/manager_custom.conf << EOF
[admin]
secret = amp111
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.255
permit=172.16.0.0/12
read = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
write = system,call,log,verbose,command,agent,user,config,command,dtmf,reporting,cdr,dialplan,originate
writetimeout = 5000
EOF
asterisk -rx "manager reload"'
./scripts/render-config.sh && docker compose restart lorentz-cti

Caminho A — AWS EC2

A.1 Criar instância

Item Valor
Tipo t3.medium (2 vCPU, 4 GB) ou maior
SO Rocky Linux 9.x
Disco 40 GB gp3
Key pair .pem para SSH

A.2 Security Group (inbound)

Configure no console EC2 ou via AWS CLI:

Porta Protocolo
22, 80, 443, 8080, 9090 TCP
5060 UDP
10000–10100 UDP

A.3 AWS CLI (opcional)

./scripts/install-aws-cli.sh
aws configure   # ou IAM role na instância
./scripts/open-aws-port-8080.sh
./scripts/open-aws-port-9090.sh SEU_IP/32

Sem credenciais AWS, abra portas manualmente no console EC2.

Detalhes: 10-firewall-aws-security-group.md


Caminho B — Hostinger KVM

B.1 Plano

Use VPS KVM (root/sudo), não hospedagem compartilhada.

Plano Hostinger Uso
KVM 2 (2 vCPU / 4 GB) Mínimo homologação
KVM 4 (4 vCPU / 8 GB) Recomendado

SO: Ubuntu 22.04 LTS na instalação.

B.2 Firewall

No hPanel → VPS → Firewall, libere as mesmas portas da tabela acima.

Ou no servidor:

sudo ufw allow 22/tcp
sudo ufw allow 80,443/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 9090/tcp
sudo ufw allow 5060/udp
sudo ufw allow 10000:10100/udp
sudo ufw enable

Confirme com suporte Hostinger se 5060/UDP e RTP não estão bloqueados no plano.

B.3 Diferenças em relação à AWS

Item Hostinger
AWS CLI Não necessário
open-aws-port-8080.sh Não usar
IP público Painel Hostinger (fixo ou anote após criar VPS)
ISSABEL_DIR /home/ubuntu/issabel4-docker
Metadata AWS Não existe — use IP do painel no .env

Endpoints finais

Serviço URL
Issabel https://<IP>/
Supervisor http://<IP>:8080/
Login bootstrap admin / Admin2026!

Próximos passos

# Ação Doc
1 Schema SQL completo (.bak ou CREATE_MISSING_OBJECTS.sql) 05-sql-server.md
2 Ramais, troncos, filas Issabel 06-issabel-pbx.md
3 Agentes e grupos Supervisor 08-supervisor-web.md
4 Clientes CTI :8000 / Phoenix :3000 07-lorentz-cti-servidor.md
5 Backup e hardening 11-operacao-e-manutencao.md

Problemas comuns

Sintoma Solução
Build CTI falha Extraia net9.0.zipLorentzCTI.dll em resources/lorentz-cti-publish/
Timeout :8080 externo Firewall AWS SG ou Hostinger hPanel
AMI Authentication failed ./scripts/render-config.sh + ACL 172.16.0.0/12
Tabelas SQL ausentes Bootstrap SQL (passo 6)

Mais: 12-troubleshooting.md