🏭 Guia de Entrega a Cliente - ECOSIF

📋 Visão Geral

Este guia detalha o processo completo de entrega do sistema ECOSIF para um cliente em ambiente de produção.


🎯 Objetivo

Preparar um ambiente de produção completo, seguro e pronto para uso do cliente, incluindo: - ✅ HTTPS com certificados SSL - ✅ Configuração de segurança - ✅ Backup automatizado - ✅ Monitoramento - ✅ Documentação de handover


📋 Checklist Pré-Entrega

✅ Ambiente e Infraestrutura

✅ Segurança

✅ Configuração


🚀 Passo a Passo de Entrega

Passo 1: Preparar Servidor

1.1 Conectar ao Servidor

ssh usuario@servidor-cliente.com

1.2 Instalar Docker

# Ubuntu/Debian
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# Adicionar usuário ao grupo docker
sudo usermod -aG docker $USER
newgrp docker

# Verificar instalação
docker --version
docker compose version

1.3 Clonar Repositório

# Criar diretório
sudo mkdir -p /opt/ecosif
sudo chown $USER:$USER /opt/ecosif
cd /opt/ecosif

# Clonar repositório
git clone <repo-url> .
cd ecosif-structure

Passo 2: Configurar Ambiente

2.1 Executar Configurador

# Executar script Python
python3 scripts/setup-env.py

2.2 Configurar Variáveis de Produção

Durante o setup, configure:

Domínio e URLs:

ECOSIF_DOMAIN=ecosif.cliente.com
ECOSIF_API_BASE_URL=https://ecosif.cliente.com

Banco de Dados:

POSTGRES_DB=ecosif_prod
POSTGRES_USER=ecosif_user
POSTGRES_PASSWORD=<senha-forte-32-chars>  # Gerar automaticamente

Segurança:

AUTH_TOKEN_SECRET=<chave-forte-32-chars>  # Gerar automaticamente
TOKEN_EXPIRATION=1800000

SSL:

TRAEFIK_ACME_EMAIL=admin@cliente.com
TRAEFIK_ACME_ENABLED=true

AWS S3 (se aplicável):

AWS_ACCESS_KEY_ID=<chave-aws>
AWS_SECRET_ACCESS_KEY=<secret-aws>
AWS_DEFAULT_REGION=us-east-1
AWS_S3_BUCKET=ecosif-prod-bucket

2.3 Verificar Configuração

# Verificar arquivo .env
cat .env | grep -v PASSWORD | grep -v SECRET

# Verificar senhas foram geradas
grep -E "(PASSWORD|SECRET)" .env | wc -l  # Deve retornar >= 2

Passo 3: Configurar SSL/HTTPS

3.1 Verificar Domínio

# Verificar se domínio aponta para o servidor
dig ecosif.cliente.com

# Verificar portas abertas
sudo netstat -tulpn | grep -E ':(80|443)'

3.2 Configurar Certificados

O Traefik configurará automaticamente via Let's Encrypt.

Certifique-se que no .env:

TRAEFIK_ACME_ENABLED=true
TRAEFIK_ACME_EMAIL=admin@cliente.com
ECOSIF_DOMAIN=ecosif.cliente.com

Passo 4: Inicializar Banco de Dados

4.1 Iniciar PostgreSQL

# Iniciar apenas PostgreSQL
./scripts/start.sh postgres

# Aguardar inicialização
sleep 30

# Verificar se está rodando
./scripts/status.sh | grep postgres

4.2 Inicializar Banco

# Executar script de inicialização
./scripts/init-database.sh

# Verificar logs
./scripts/logs.sh postgres | tail -20

Passo 5: Iniciar Todos os Serviços

# Iniciar em modo produção (HTTPS)
./scripts/start.sh --build

# Aguardar inicialização (2-3 minutos)
sleep 180

# Verificar status
./scripts/status.sh

Passo 6: Verificação e Testes

6.1 Testar Acessos HTTPS

# Frontend
curl -k https://ecosif.cliente.com

# API Auth
curl -k https://ecosif.cliente.com/ecosif-auth/actuator/health

# API Masterdata
curl -k https://ecosif.cliente.com/ecosif-masterdata/actuator/health

6.2 Testar Login

# Login via API
curl -X POST https://ecosif.cliente.com/ecosif-auth/api/auth/signin \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"senha-inicial"}'

6.3 Verificar Certificados SSL

# Verificar certificado
openssl s_client -connect ecosif.cliente.com:443 -servername ecosif.cliente.com < /dev/null

# Verificar validade
echo | openssl s_client -connect ecosif.cliente.com:443 2>/dev/null | openssl x509 -noout -dates

Passo 7: Configurar Backup Automatizado

7.1 Criar Script de Backup

# Criar diretório de backups
sudo mkdir -p /backup/ecosif
sudo chown $USER:$USER /backup/ecosif

# Criar script de backup diário
cat > /opt/ecosif/scripts/backup-diario.sh << 'EOF'
#!/bin/bash
cd /opt/ecosif/ecosif-structure
./scripts/backup-database.sh /backup/ecosif/ecosif-$(date +%Y%m%d).dump
# Manter apenas últimos 30 dias
find /backup/ecosif -name "*.dump" -mtime +30 -delete
EOF

chmod +x /opt/ecosif/scripts/backup-diario.sh

7.2 Configurar Cron

# Editar crontab
crontab -e

# Adicionar linha (backup diário às 2h da manhã)
0 2 * * * /opt/ecosif/scripts/backup-diario.sh >> /var/log/ecosif-backup.log 2>&1

Passo 8: Documentação de Handover

8.1 Criar Documento de Entrega

# Criar documento
cat > /opt/ecosif/HANDOVER.md << 'EOF'
# Documento de Handover - ECOSIF

## Informações do Ambiente

- **Servidor**: <IP ou hostname>
- **Domínio**: ecosif.cliente.com
- **Data de Entrega**: <data>

## Acessos

- **Frontend**: https://ecosif.cliente.com
- **API Auth**: https://ecosif.cliente.com/ecosif-auth
- **Dashboard Traefik**: https://ecosif.cliente.com/dashboard

## Credenciais

- **Usuário Admin**: admin
- **Senha Inicial**: <senha>
- **Banco de Dados**: ecosif_prod
- **Usuário BD**: ecosif_user

## Backup

- **Localização**: /backup/ecosif/
- **Frequência**: Diário às 2h
- **Retenção**: 30 dias

## Manutenção

Ver documentação em: /opt/ecosif/ecosif-structure/README.md
EOF

🔐 Segurança em Produção

Checklist de Segurança

Recomendações

  1. Alterar senhas padrão imediatamente após entrega
  2. Configurar monitoramento (Datadog, Prometheus)
  3. Estabelecer rotina de backup e teste de restauração
  4. Documentar procedimentos de manutenção
  5. Treinar equipe do cliente

📊 Monitoramento

Health Checks

# Verificar saúde de todos os serviços
./scripts/status.sh

# Ver logs de erro
./scripts/logs.sh | grep -i error

Métricas


📝 Checklist Final de Entrega


Última Atualização: 2025-12-01