Releases: AlexandreAlan/LiteDock
Releases · AlexandreAlan/LiteDock
Release list
v0.9.2 — Gerenciamento de usuários, CI, segurança e performance
O que há de novo
Funcionalidades
- Gerenciamento de usuários — página
/userscompleta: 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
typecheck—npm run typecheckdisponível na raiz e emweb/ - 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 headers —
X-Content-Type-Options,X-Frame-Options,X-XSS-Protection,Referrer-Policy,Permissions-Policyem todas as respostas da API
Performance
- 11 índices no PostgreSQL —
@@indexexplícitos nas FKs deProject,Service,EnvVar,Domain,Deployment,CredentialeBackup; índice composto(serviceId, startedAt DESC)emDeployment
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 buildv0.9.1 — Docker Socket Proxy + graceful shutdown + launch como processo único
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 viaDOCKER_HOST=tcp://proxy. O build (que o proxy bloqueia de propósito) sempre usa o socket real viaDOCKER_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) viramfailed. - 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 savepersiste pra sobreviver a reboot da VPS.