Pular para conteúdo

Implantação Self-Hosted

Esta página cobre as opções de implantação do Elven Assessment em infraestrutura própria. Para configurações avançadas, consulte o arquivo README.md e docs/self-hosted.md no repositório do projeto.


Opções de implantação

Opção Quando usar
Docker Compose Avaliação, desenvolvimento, ambientes pequenos
Kubernetes / Helm Produção, alta disponibilidade, escalabilidade

Docker Compose (mais rápido para começar)

Pré-requisitos

  • Docker 24+ e Docker Compose v2
  • 2 vCPU, 4 GB RAM mínimos
  • 20 GB de disco disponível

Passo 1 — Clone o repositório

git clone https://github.com/elvenworks/elven-assessment.git
cd elven-assessment

Passo 2 — Configure o arquivo .env

cp .env.example .env

Edite o .env com as configurações do seu ambiente (veja a referência de variáveis abaixo).

Passo 3 — Suba os containers

docker-compose up -d

A plataforma estará disponível em http://localhost:8080 (ou a porta configurada).

Passo 4 — Verifique os logs

docker-compose logs -f elven-assessment

Aguarde a mensagem Server ready on :8080.

HTTPS em produção

Para produção, coloque um reverse proxy (nginx ou Caddy) na frente do container para terminação TLS. Veja o exemplo de configuração nginx em docs/nginx.conf.example.


Kubernetes / Helm (produção)

Pré-requisitos

  • Kubernetes 1.26+
  • Helm 3.12+
  • Namespace dedicado criado: kubectl create namespace assessment

Passo 1 — Adicione o repositório Helm

helm repo add elvenworks https://charts.elvenworks.com.br
helm repo update

Passo 2 — Crie o secret de configuração

kubectl create secret generic elven-assessment-config \
  --namespace assessment \
  --from-literal=AUTH_TOKEN="seu-token-seguro" \
  --from-literal=SESSION_SECRET="string-aleatoria-longa-aqui" \
  --from-literal=DATABASE_URL="postgres://user:pass@host:5432/assessment?sslmode=require" \
  --from-literal=CREDENTIAL_ENCRYPTION_KEY="chave-de-32-bytes-em-hex"

Passo 3 — Configure o values.yaml

# values-prod.yaml
image:
  tag: "0.4.27"

replicaCount: 2

ingress:
  enabled: true
  className: nginx
  host: assessment.suaempresa.com
  tls:
    enabled: true
    secretName: assessment-tls

persistence:
  enabled: false  # Use PostgreSQL externo (recomendado)

env:
  TENANT_MODE: single  # ou "multi" para multi-tenant
  AUTH_USERS: "maria:hash_bcrypt:admin"
  AUDIT_LOG_RETENTION_DAYS: "365"

Passo 4 — Instale o Helm chart

helm install elven-assessment elvenworks/elven-assessment \
  --namespace assessment \
  --values values-prod.yaml \
  --set existingSecret=elven-assessment-config

Passo 5 — Verifique o deployment

kubectl get pods -n assessment
kubectl logs -n assessment -l app=elven-assessment -f

Variáveis de ambiente

Autenticação e segurança

Variável Obrigatório Descrição
AUTH_TOKEN Sim* Token de acesso único (modo simples sem RBAC)
AUTH_USERS Sim* Usuários com RBAC: user:pass:role,...
SESSION_SECRET Sim String secreta para assinar cookies de sessão (mín. 32 chars)
CREDENTIAL_ENCRYPTION_KEY Sim Chave para criptografia AES-256-GCM das credenciais em repouso (32 bytes hex)

*AUTH_TOKEN ou AUTH_USERS — um dos dois é obrigatório.

Banco de dados

Variável Padrão Descrição
DATABASE_URL (arquivo local) URL do PostgreSQL externo. Se não configurado, usa SQLite local
DATABASE_MAX_CONNECTIONS 25 Pool de conexões com o banco

Use PostgreSQL em produção

SQLite (padrão sem DATABASE_URL) funciona para avaliação e desenvolvimento, mas não é recomendado para produção. Configure PostgreSQL 14+ para ambientes multi-usuário e alta disponibilidade.

Multi-tenant

Variável Padrão Descrição
TENANT_MODE single single ou multi — modo de tenant
ALLOWED_DOMAINS (vazio) Domínios de e-mail permitidos para auto-registro (multi-tenant)

AI Insights

Variável Padrão Descrição
ANTHROPIC_API_KEY (vazio) Chave da API Anthropic para AI Insights (opcional)
AI_INSIGHTS_DEFAULT true Se AI Insights está habilitado por padrão nos assessments de nuvem

Features flags

Variável Padrão Descrição
DISABLE_DB_ASSESSMENT true Desabilitar assessment de banco de dados (Enterprise)

Notificações

Variável Padrão Descrição
SMTP_HOST (vazio) Host do servidor SMTP para notificações por e-mail
SMTP_PORT 587 Porta SMTP
SMTP_USER (vazio) Usuário SMTP
SMTP_PASSWORD (vazio) Senha SMTP
SMTP_FROM (vazio) Endereço de origem dos e-mails

Backup e restauração

Backup (PostgreSQL)

# Backup completo
pg_dump -h seu-postgres-host -U postgres -d assessment -Fc \
  -f backup_assessment_$(date +%Y%m%d).dump

# Restauração
pg_restore -h seu-postgres-host -U postgres -d assessment \
  backup_assessment_20260513.dump

Backup (SQLite — instalações simples)

# Copiar o arquivo de banco
cp data/assessment.db backup_assessment_$(date +%Y%m%d).db

Automação de backup

Configure um cronjob para executar o backup diariamente e armazenar em S3, GCS ou Azure Blob Storage. O arquivo de backup contém todos os assessments, histórico, usuários e configurações.


Atualizando a plataforma

Docker Compose

# Fazer pull da nova imagem
docker-compose pull

# Reiniciar com a nova versão (zero-downtime se usar múltiplas réplicas)
docker-compose up -d

# Verificar os logs para confirmar que a versão nova subiu corretamente
docker-compose logs -f elven-assessment | head -20

Kubernetes / Helm

helm repo update

helm upgrade elven-assessment elvenworks/elven-assessment \
  --namespace assessment \
  --values values-prod.yaml \
  --set image.tag="0.4.27" \
  --set existingSecret=elven-assessment-config

Verifique as release notes

Antes de atualizar, consulte o CHANGELOG.md ou as release notes da nova versão para verificar se há breaking changes ou migrações necessárias.


Recursos adicionais

  • README.md — visão geral e quickstart
  • docs/self-hosted.md — guia completo de implantação self-hosted
  • charts/elven-assessment/ — Helm chart com valores documentados
  • deploy.sh — script de setup inicial para Kubernetes