SQL Server (container)¶
Papel no stack¶
O banco LorentzCTI no SQL Server é compartilhado por:
- LorentzCTI — estado de agentes, chamadas, filas, URA
- Supervisor — CRUD web, relatórios, campanhas
Issabel usa MariaDB interna — banco separado, não substitui LorentzCTI.
Subir apenas SQL Server¶
cd ~/lorentz-vps-stack
cp .env.example .env # se ainda não fez
./scripts/render-config.sh
docker compose up -d sqlserver
docker compose logs -f sqlserver
Aguarde healthcheck (~60–120 s na primeira execução).
Testar conexão¶
docker exec -it lorentz-sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "$MSSQL_SA_PASSWORD" -C -Q "SELECT @@VERSION"
Substitua $MSSQL_SA_PASSWORD pela senha do .env.
Criar banco LorentzCTI¶
Via sqlcmd:
docker exec lorentz-sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "SuaSenha" -C \
-Q "IF DB_ID('LorentzCTI') IS NULL CREATE DATABASE LorentzCTI"
Restaurar backup (.bak)¶
Modo facil (recomendado)¶
Coloque o arquivo em resources/LorentzCTI.bak e execute:
Ou pelo Monitor → Ferramentas → Restaurar LorentzCTI.bak.
O script detecta automaticamente os nomes logicos do backup (ex.: Attender_CRMData / Attender_CRMLog).
Modo manual¶
- Copie o
.bakpara a VPS:
- Copie para o container:
docker cp /tmp/LorentzCTI.bak lorentz-sqlserver:/var/opt/mssql/backup/
docker exec lorentz-sqlserver mkdir -p /var/opt/mssql/backup
- Liste nomes logicos e restaure (ajuste MOVE conforme saida):
docker exec lorentz-sqlserver /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "$MSSQL_SA_PASSWORD" -C \
-Q "RESTORE FILELISTONLY FROM DISK = '/var/opt/mssql/backup/LorentzCTI.bak'"
RESTORE DATABASE LorentzCTI
FROM DISK = '/var/opt/mssql/backup/LorentzCTI.bak'
WITH MOVE 'Attender_CRMData' TO '/var/opt/mssql/data/LorentzCTI.mdf',
MOVE 'Attender_CRMLog' TO '/var/opt/mssql/data/LorentzCTI_log.ldf',
REPLACE, STATS = 10;
Backup automático (.bak)¶
Gera .bak comprimido no volume lorentz-sqlserver-backups, mantendo os últimos 7 (BACKUP_KEEP no .env):
Ou pelo MonitorOPS → Ferramentas → Backup SQL.
Agendar diário às 3h (cron na VPS):
crontab -e
# 0 3 * * * /home/ubuntu/omnichannel/lorentz-vps-stack/scripts/backup-sql.sh >> /var/log/lorentz-backup.log 2>&1
Copiar um backup para fora do container:
Persistência¶
Volumes Docker: lorentz_lorentz-sqlserver-data (dados) e lorentz_lorentz-sqlserver-backups (.bak).
Backup do volume de dados:
docker run --rm -v lorentz_lorentz-sqlserver-data:/data -v $(pwd):/backup alpine \
tar czf /backup/sqlserver-data-$(date +%F).tar.gz /data
Configuração nos serviços¶
| Serviço | Host SQL (dentro Compose) | Banco |
|---|---|---|
| lorentz-cti | ServidorSQL=sqlserver no INI |
LorentzCTI |
| supervisor | EW_SQLSERVER=sqlserver |
LorentzCTI |
Gerado por ./scripts/render-config.sh.
Segurança¶
- Bind local por padrão —
MSSQL_BIND_IP=127.0.0.1no.env; a porta 1433 só responde no host. Acesso externo (SSMS/Azure Data Studio) via túnel SSH:
- Para expor publicamente (não recomendado):
MSSQL_BIND_IP=0.0.0.0+ Security Group restrito ao IP administrativo - Use senha forte em
MSSQL_SA_PASSWORD(limitação: LorentzCTI legado usaJubilu2024hardcoded) MSSQL_MEMORY_LIMIT_MB(padrão 2048) evita o SQL consumir toda a RAM da VPS- SQL Server Developer Edition: limite de licenciamento Microsoft
Próximo passo¶
07-lorentz-cti-servidor.md após banco disponível.