Skip to content

Releases: AlexandreAlan/LiteDock

v0.9.2 — Gerenciamento de usuários, CI, segurança e performance

Choose a tag to compare

@AlexandreAlan AlexandreAlan released this 26 Jun 18:49

O que há de novo

Funcionalidades

  • Gerenciamento de usuários — página /users completa: criar conta, editar papel e senha, remover; visível apenas para owner e admin na sidebar
  • Ícone e rota dedicada — sidebar com link "Usuários" (ícone duas pessoas) condicional ao papel

CI/CD

  • GitHub Actions — pipeline automático em todo push/PR: typecheck da API + typecheck e build do frontend (.github/workflows/ci.yml)
  • Scripts typechecknpm run typecheck disponível na raiz e em web/
  • Badge CI no README ao vivo

Segurança

  • bcrypt fator 12 — hash de senhas elevado de 10 para 12 (OWASP 2024) em registro, login, criação e edição de usuários
  • HTTP security headersX-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy em todas as respostas da API

Performance

  • 11 índices no PostgreSQL@@index explícitos nas FKs de Project, Service, EnvVar, Domain, Deployment, Credential e Backup; índice composto (serviceId, startedAt DESC) em Deployment

UX / Frontend

  • Reveal de env vars — botão de olho por linha decripta o valor sem expor os outros
  • Edição inline de env vars — lápis por linha edita o valor no lugar (PATCH sem deletar e recriar)
  • Exportar .env — botão na aba Env exporta todas as variáveis (segredos decriptados)
  • Notificações Discord/Slack — webhook configurável em Ajustes → Notificações; botão Testar
  • Duplicar serviço — clone com spec e env vars; redireciona para o novo serviço
  • Histórico de deploys paginado — anterior/próximo com contador X–Y de Z
  • Mini-barras na sidebar — CPU, RAM, Disco com cor por uso (verde/amarelo/vermelho)
  • MetricsBar com alerta visual — cartões ficam vermelhos/amarelos acima de 90%/75%
  • Atalho Ctrl+Enter — dispara deploy a partir de qualquer aba do serviço
  • Instalar template — redireciona para o serviço após instalação + toast de confirmação
  • Demo mode — todos os novos endpoints cobertos (reveal, PATCH env, duplicate, paginação, test-webhook)

Docs

  • README com badge CI, tabela de features atualizada e guia de typecheck pré-PR
  • CONTRIBUTING com estrutura de pastas completa e passos de validação

Como atualizar

git pull
npm run generate          # regenera o cliente Prisma com os novos índices
npx prisma migrate deploy # aplica os índices no banco
pm2 restart litedock-v2-api
cd web && npm run build

v0.9.1 — Docker Socket Proxy + graceful shutdown + launch como processo único

Choose a tag to compare

@AlexandreAlan AlexandreAlan released this 24 Jun 11:21

Melhorias de segurança e resiliência do control-plane. Em produção em litedock.morenadoaco.com.br.

🔐 Docker Socket Proxy (Tecnativa)

O Node (dockerode) e o worker Python falam com a Docker Engine por um proxy de superfície mínima (docker-compose.socket-proxy.yml, loopback 127.0.0.1:2375) em vez do socket cru.

  • Liberado só o que o LiteDock usa: containers, networks, images (+POST) e info/version/events/ping.
  • Bloqueado (403): exec, secrets, swarm, nodes, services, plugins, build, volumes.
  • Ligado por toggle: API via LITEDOCK_DOCKER_PROXY; worker via DOCKER_HOST=tcp://proxy. O build (que o proxy bloqueia de propósito) sempre usa o socket real via DOCKER_REAL_SOCKET.
  • Nota: o proxy filtra por área+método, não por path/label — mata a superfície catastrófica (exec/secrets/swarm), mas não isola os containers de produção de um painel comprometido (isso exige daemon/VPS separados).

🔄 Graceful shutdown de deploys

Reconciliação em duas camadas: no boot (cobre crash duro) e no encerramento por sinal (SIGTERM/SIGINT).

  • Deploys presos (queued/building/deploying) viram failed.
  • Containers temporários órfãos do blue-green (*__deploy-*) são removidos.

🐛 Correção de raiz: launch como processo único

O pm2 rodava npm run start, e o npm engolia os sinais — o graceful shutdown nunca recebia SIGINT, e processos node netos ficavam órfãos segurando a porta 8088 com código antigo enquanto o processo gerenciado entrava em crash-loop por EADDRINUSE.

  • Agora a API roda como processo único via ecosystem.config.cjs (node --import tsx src/server.ts, kill_timeout: 12s).
  • O sinal chega direto no handler e não há mais órfãos. pm2 save persiste pra sobreviver a reboot da VPS.