feat: adicionar painel de máquinas e autenticação por agente
This commit is contained in:
parent
e2a5b560b1
commit
ee18619519
52 changed files with 7598 additions and 1 deletions
74
docs/plano-app-desktop-maquinas.md
Normal file
74
docs/plano-app-desktop-maquinas.md
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
# Plano Integrado – App Desktop & Inventário por Máquina
|
||||
|
||||
> Documento vivo. Atualize após cada marco relevante.
|
||||
|
||||
## Contexto
|
||||
- **Objetivo:** Expandir o Sistema de Chamados (Next.js + Convex + Better Auth) para suportar:
|
||||
- Cliente desktop nativo (Tauri) mantendo UI web e realtime.
|
||||
- Autenticação máquina-a-máquina usando tokens derivados do inventário.
|
||||
- Integração com agente de inventário (osquery/FleetDM) para registrar hardware, software e heartbeats.
|
||||
- Pipeline de distribuição para Windows/macOS/Linux.
|
||||
- **Escopo inicial:** Focar no fluxo mínimo viável com inventário básico (hostname, OS, identificadores, carga resumida). Métricas avançadas e distribuição automatizada ficam para iteração seguinte.
|
||||
|
||||
## Estado Geral
|
||||
- Web atual permanece operacional com login por usuário/senha.
|
||||
- Novas features serão adições compatíveis (machine login opcional).
|
||||
- Melhor abordagem para inventário: usar **osquery + FleetDM** (stack pronta) integrando registros no Convex.
|
||||
|
||||
## Marcos & Progresso
|
||||
| Macro-entrega | Status | Observações |
|
||||
| --- | --- | --- |
|
||||
| Documento de arquitetura e roadmap | 🔄 Em andamento | Estrutura criada, aguardando detalhamento incremental a cada etapa. |
|
||||
| Projeto Tauri inicial apontando para UI Next | 🔄 Em andamento | Estrutura `apps/desktop` criada; pendente testar build após instalar toolchain Rust. |
|
||||
| Schema Convex + tokens de máquina | ✅ Concluído | Tabelas `machines` / `machineTokens` criadas com TTL e fingerprint. |
|
||||
| API de registro/heartbeat e exchange Better Auth | 🔄 Em andamento | Endpoints `/api/machines/*` disponíveis; falta testar fluxo end-to-end com app desktop. |
|
||||
| Integração FleetDM → Convex (inventário básico) | 🔄 Em andamento | Endpoint `/api/integrations/fleet/hosts` criado; falta validar payload real e ajustes de métricas/empresa. |
|
||||
| Admin > Máquinas (listagem, detalhes, métricas) | ✅ Concluído | Página `/admin/machines` exibe parque completo com status ao vivo, inventário e métricas. |
|
||||
| Ajustes na UI/Next para sessão por máquina | ⏳ A fazer | Detectar token e exibir info da máquina em tickets. |
|
||||
| Pipeline de build/distribuição Tauri | ⏳ A fazer | Definir estratégia CI/CD + auto-update. |
|
||||
| Guia operacional (instalação, uso, suporte) | ⏳ A fazer | Gerar instruções finais com casos de uso. |
|
||||
|
||||
Legenda: ✅ concluído · 🔄 em andamento · ⏳ a fazer.
|
||||
|
||||
## Dependências Técnicas
|
||||
- **Tauri Desktop:** Rust + toolchain específico por SO, libwebkit2gtk (Linux), WebView2 (Windows), Xcode (macOS).
|
||||
- **FleetDM/osquery:** Servidor Fleet (Docker ou VM), enrollment secret por tenant, agentes osquery instalados.
|
||||
- **Better Auth:** Mechanismo para criar sessões usando subject `machine:*` com escopos restritos.
|
||||
- **Convex:** Novas tabelas `machines` e `machineTokens`, mutações para registro/heartbeat/exchange.
|
||||
- **Infra extra:** Endpoints públicos para updater do Tauri, armazenamento de inventário seguro, certificados para assinatura de builds.
|
||||
|
||||
## Próximos Passos Imediatos
|
||||
1. Instalar toolchain Tauri local (Rust + dependências nativas) e testar `pnpm --filter appsdesktop tauri dev` apontando para o Next (`pnpm dev`).
|
||||
2. Detalhar fluxo de provisioning de máquina no Convex e atualizar este documento.
|
||||
|
||||
## Notas de Implementação (Atual)
|
||||
- Criada pasta `apps/desktop` via `create-tauri-app` com template `vanilla-ts`.
|
||||
- `src/main.ts` redireciona a WebView para `VITE_APP_URL` (padrão `http://localhost:3000`), reaproveitando a UI Next web.
|
||||
- `index.html` exibe fallback simples enquanto o Next inicializa.
|
||||
- Necessário criar `.env` em `apps/desktop` (ou usar variáveis de ambiente) com `VITE_APP_URL` correspondente ao ambiente.
|
||||
- Novas tabelas Convex: `machines` (fingerprint, heartbeat, vínculo com AuthUser) e `machineTokens` (hash + TTL).
|
||||
- Novos endpoints Next:
|
||||
- `POST /api/machines/register` — provisiona máquina, gera token e usuário Better Auth (role `machine`).
|
||||
- `POST /api/machines/heartbeat` — atualiza estado, métricas e renova TTL.
|
||||
- `POST /api/machines/sessions` — troca `machineToken` por sessão Better Auth e devolve cookies.
|
||||
- Webhook FleetDM: `POST /api/integrations/fleet/hosts` (header `x-fleet-secret`) sincroniza inventário/métricas utilizando `machines.upsertInventory`.
|
||||
- Script `ensureMachineAccount` garante usuário `AuthUser` e senha sincronizada com o token atual.
|
||||
- Variáveis `.env` novas: `MACHINE_PROVISIONING_SECRET` (obrigatória) e `MACHINE_TOKEN_TTL_MS` (opcional, padrão 30 dias).
|
||||
- Variável adicional `FLEET_SYNC_SECRET` (opcional) para autenticar webhook do Fleet; se ausente, reutiliza `MACHINE_PROVISIONING_SECRET`.
|
||||
- Dashboard administrativo: `/admin/machines` usa `AdminMachinesOverview` com dados em tempo real (status, heartbeat, token, inventário enviado pelo agente/Fleet).
|
||||
|
||||
### Checklist de dependências Tauri (Linux)
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file \
|
||||
libxdo-dev libssl-dev libayatana-appindicator3-dev librsvg2-dev
|
||||
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
|
||||
# reinicie o terminal e confirme: rustc --version
|
||||
```
|
||||
|
||||
> Ajuste conforme seu sistema operacional (ver https://tauri.app/start/prerequisites/).
|
||||
|
||||
---
|
||||
|
||||
> Histórico de atualizações:
|
||||
> - 2025-02-14 — Documento criado com visão geral e plano macro (assistente).
|
||||
Loading…
Add table
Add a link
Reference in a new issue