promovaweb-devops-review-databasus-stack

Installation
SKILL.md

Review Databasus Stack

Executa uma auditoria completa do arquivo databasus.yaml e reporta conformidade, problemas e sugestões.

Instruções de Execução

Quando esta skill for invocada, siga exatamente este roteiro:

Passo 1 — Ler os arquivos

Leia o arquivo databasus.yaml completo. Leia também postgres.yaml para verificar a consistência das credenciais de banco.

Passo 2 — Executar todos os checks abaixo

Execute cada bloco de verificação e registre os resultados (✅ OK / ⚠️ Atenção / ❌ Erro).

Passo 3 — Gravar o resultado

Grave o relatório completo em um arquivo chamado databasus.audit.md.


Checks de Verificação

1. Imagem

Verifique o anchor x-databasus-image:

  • A imagem deve ser databasus/databasus:<versão> com versão fixada
  • Alertar se estiver usando databasus/databasus:latest (sem versão)

2. Variáveis de Ambiente

Verifique o anchor x-databasus-env:

DATABASE_DSN:

  • Deve estar no formato postgresql://usuario:senha@host:porta/banco
  • O host deve ser postgres (nome do serviço no Swarm)
  • A porta deve ser 5432
  • A senha não deve ser o placeholder SENHA — compare com a senha definida em postgres.yaml
  • O banco (databasus) deve existir no PostgreSQL antes do deploy
  • O usuário deve ter permissões adequadas no banco databasus

3. Serviço

Verifique se o serviço databasus está presente e corretamente configurado.


4. Portas Expostas

  • 4005:4005 — verificar se a porta está exposta externamente
  • Alertar se a porta 4005 estiver exposta quando Traefik já está configurado (redundante)
  • Recomendar remover exposição direta de porta e usar apenas Traefik

5. Volumes

  • databasus_data — deve ser declarado como external: true
  • Verificar se está montado em /databasus-data
  • Alertar se o volume não for externo (dados perdidos em redeploy)

6. Réplicas

Serviço Réplicas Esperadas Observação
databasus 1 Interface de gerenciamento de banco — geralmente 1 réplica

7. Rotas Traefik

Para o serviço databasus, verifique:

Âncora de endereço (x-databasus-app-url):

  • A âncora x-databasus-app-url deve existir e conter um domínio válido (não placeholder como databasus.agenciasynca.com.br)
  • O domínio na âncora deve ser idêntico ao domínio dentro de Host(...) na label traefik.http.routers.databasus.rule
  • Se não forem iguais, reportar como ❌ Erro: inconsistência entre x-databasus-app-url e a regra Traefik

Labels obrigatórias:

  • traefik.enable=true
  • traefik.swarm.network=network_swarm_public
  • traefik.http.routers.databasus.rule — deve conter Host(...) com domínio válido e coincidir com x-databasus-app-url
  • traefik.http.routers.databasus.entrypoints=websecure
  • traefik.http.routers.databasus.tls.certresolver=letsencryptresolver
  • traefik.http.routers.databasus.service=databasus
  • traefik.http.services.databasus.loadbalancer.server.port=4005

8. Recursos do Container

Serviço CPU Memória Máxima
databasus "0.5" 512M
  • Databasus é uma ferramenta leve — 512M é adequado
  • Alertar se não tiver resources.limits definido

9. Configuração de Deploy

  • mode: replicated — deve ser replicated
  • placement.constraints — deve incluir node.role == manager
  • Verificar se há update_config definido

10. Redes

  • O serviço deve estar na rede network_swarm_public
  • A rede deve ser declarada como external: true

11. Segurança

  • DATABASE_DSN não deve conter o placeholder SENHA — risco de conexão falhar ou usar senha errada
  • Databasus é uma interface de gerenciamento de banco com acesso total — restringir acesso é crítico
  • Recomendado: adicionar middleware de autenticação no Traefik (basicauth ou forward auth)
  • Recomendado: adicionar IP allowlist no Traefik para o Databasus
  • Porta 4005 exposta + Traefik: remover exposição direta
  • Verificar se o usuário PostgreSQL tem apenas permissões necessárias (não usar superusuário)

Formato do Relatório de Saída

Ao final, produza um relatório estruturado:

# Relatório de Auditoria — databasus.yaml
Data: <data atual>

## Resumo
- Total de checks: X
- ✅ OK: X
- ⚠️ Atenções: X
- ❌ Erros: X

## Resultados por Categoria

### 1. Imagem
⚠️ databasus/databasus:latest: versão não fixada — considere fixar versão em produção
...

### 2. Variáveis de Ambiente
❌ DATABASE_DSN: contém placeholder SENHA — troque antes do deploy
✅ DATABASE_DSN: host=postgres, porta=5432, formato correto
...

### 3. Serviço
✅ databasus: presente

### 4. Portas
⚠️ Porta 4005 exposta e Traefik configurado — considere remover exposição direta
...

### 5. Volumes
✅ databasus_data: volume externo em /databasus-data
...

### 6. Réplicas
✅ databasus: 1 réplica
...

### 7. Rotas Traefik
✅ databasus: rota Host correta, TLS ok
...

### 8. Recursos
✅ 0.5 CPU, 512M de memória (adequado para ferramenta leve)
...

### 9. Deploy
⚠️ update_config não definido
...

### 10. Redes
✅ network_swarm_public: configurado como external
...

### 11. Segurança
❌ DATABASE_DSN: placeholder SENHA detectado
⚠️ Databasus tem acesso total ao banco — adicione middleware de autenticação no Traefik
⚠️ Considere IP allowlist para restringir acesso ao Databasus
...

## Ações Recomendadas (por prioridade)

### Crítico (fazer antes do deploy)
1. ...

### Recomendado
1. ...

### Opcional
1. ...
Related skills
Installs
8
GitHub Stars
4
First Seen
Mar 28, 2026