docs: registrar fluxo do updater e atualizar chaves

This commit is contained in:
Esdras Renan 2025-10-12 04:06:29 -03:00
parent 206d00700e
commit b5fd920efd
50 changed files with 980 additions and 93 deletions

View file

@ -48,11 +48,19 @@ Observação: evitar `prisma/.env` nesse setup, pois causa conflito com o `.env`
- Onde foram feitas as mudanças principais:
- `apps/desktop/src/components/ui/tabs.tsx` (Tabs Radix + estilos shadcn-like)
- `apps/desktop/src/main.tsx` (layout com abas: Resumo/Inventário/Diagnóstico/Configurações; status badge; botão “Enviar inventário agora”).
- `apps/desktop/src/main.tsx` (layout com abas: Resumo/Inventário/Diagnóstico/Configurações; status badge; botão “Enviar inventário agora”; seleção do perfil de acesso colaborador/gestor e sincronização do usuário vinculado).
- `apps/desktop/src-tauri/src/agent.rs` (coleta e normalização de hardware, discos, GPUs e inventário estendido por SO).
- Variáveis de ambiente do Desktop (em tempo de build):
- `VITE_APP_URL` e `VITE_API_BASE_URL` — por padrão, use a URL da aplicação web.
### Atualizações automáticas (GitHub)
1. Gere o par de chaves do updater (`pnpm tauri signer generate -- -w ~/.tauri/raven.key`) e configure as variáveis de ambiente `TAURI_SIGNING_PRIVATE_KEY` e `TAURI_SIGNING_PRIVATE_KEY_PASSWORD` antes de rodar `pnpm -C apps/desktop tauri build`.
2. Garanta que `bundle.createUpdaterArtifacts` esteja habilitado (já configurado) para gerar os pacotes `.nsis`/`.AppImage` e os arquivos `.sig`.
3. Publique os artefatos de cada SO em um release do GitHub e atualize o `latest.json` público (ex.: no próprio repositório ou em um gist) com `version`, `notes`, `pub_date` e as entradas por plataforma (`url` e `signature`).
4. O agente já consulta o updater ao iniciar e também possui o botão “Verificar atualizações” na aba Configurações. Ao detectar nova versão o download é feito em segundo plano e o app reinicia automaticamente após o `downloadAndInstall`.
### Build do executável localmente
Você pode gerar o executável local sem precisar da VPS. O que muda é apenas o sistema operacional alvo (Linux/Windows/macOS). O Tauri recomenda compilar em cada SO para obter o bundle nativo desse SO. Em produção, o GitHub Actions já faz isso em matriz.
@ -77,6 +85,7 @@ pnpm -C apps/desktop tauri build
- Os artefatos ficam em: `apps/desktop/src-tauri/target/release/bundle/`
- No Linux: `.AppImage`/`.deb`/`.rpm` (conforme target)
- No Windows/macOS: executável/instalador específicos do SO (para assinatura, usar chaves/AC, se desejado)
- Para liberar atualizações OTA, publique release no GitHub com artefatos e `latest.json` — o plugin de updater verifica a URL configurada em `tauri.conf.json`.
### Build na VPS x Local
@ -86,6 +95,7 @@ pnpm -C apps/desktop tauri build
- `desktop-release.yml` (Tauri): instala dependências, faz build por SO e publica artefatos. Mantendo o `pnpm-lock.yaml` atualizado, o passo `--frozen-lockfile` passa.
- `ci-cd-web-desktop.yml`: já usa `pnpm install --no-frozen-lockfile` no web, evitando falhas em pipelines de integração.
- Smoke de provisionamento pode ser desligado definindo `RUN_MACHINE_SMOKE=false` (default); quando quiser exercitar o fluxo complete register/heartbeat, defina `RUN_MACHINE_SMOKE=true`.
## Troubleshooting
@ -95,4 +105,3 @@ pnpm -C apps/desktop tauri build
- `ERR_PNPM_OUTDATED_LOCKFILE` no Desktop:
- Atualize `pnpm-lock.yaml` no root após alterar dependências de `apps/desktop/package.json`.
- Alternativa: usar `--no-frozen-lockfile` (não recomendado para releases reproduzíveis).

View file

@ -10,15 +10,17 @@ A página Admin > Máquinas agora exibe um inventário detalhado e pesquisável
- Marcação “Somente com alertas” para investigar postura.
## Painel de detalhes
- Resumo: hostname, status, e-mail vinculado, SO/arch, sincronização do token (expiração/uso).
- Resumo: hostname, status, e-mail vinculado, empresa (quando houver), perfil de acesso (colaborador/gestor) com dados do usuário associado, SO/arch e sincronização do token (expiração/uso).
- Métricas recentes: CPU/Memory/Disco.
- Inventário básico: hardware (CPU/mem/serial), rede (IP/MAC), labels.
- Inventário básico: hardware (CPU/mem/serial, GPUs detectadas), rede (IP/MAC), labels.
- Discos e partições: nome, mount, FS, capacidade, livre.
- Inventário estendido (varia por SO):
- Linux: SMART (OK/ALERTA), `lspci`, `lsusb` (texto), `lsblk` (interno para discos).
- Windows: serviços (amostra), softwares instalados (amostra), Defender.
- Windows: serviços (amostra), softwares instalados (amostra), Defender, resumo de hardware (CPU/Memória/GPU/Discos físicos).
- macOS: pacotes (`pkgutil`), serviços (`launchctl`).
- Postura/Alertas: CPU alta, serviço parado, SMART em falha com severidade e última avaliação.
- Zona perigosa: ação para excluir a máquina (revoga tokens e remove inventário).
- Ação administrativa extra: botão “Ajustar acesso” permite trocar colaborador/gestor e e-mail vinculados sem re-provisionar a máquina.
## Exportação
- Copiar JSON: copia para a área de transferência todo o inventário exibido (métricas + inventário + alertas).

111
docs/desktop-updater.md Normal file
View file

@ -0,0 +1,111 @@
# Checklist de Publicação — Updater do Agente Desktop
Este guia consolida tudo o que precisa ser feito para que o auto-update do Tauri funcione em cada release.
---
## 1. Preparação (uma única vez)
1. **Gerar o par de chaves**
Execute na raiz do repositório (aproveite que o comando já foi rodado):
```bash
pnpm -C apps/desktop tauri signer generate -w ~/.tauri/raven.key
```
- Privada: `~/.tauri/raven.key` (nunca compartilhar)
- Pública: `~/.tauri/raven.key.pub` (cole em `tauri.conf.json > plugins.updater.pubkey`)
2. **Verificar o `tauri.conf.json`**
```json
{
"bundle": { "createUpdaterArtifacts": true },
"plugins": {
"updater": {
"active": true,
"endpoints": ["https://.../latest.json"],
"pubkey": "<conteúdo da raven.key.pub>"
}
}
}
```
---
## 2. Antes de cada release
1. **Sincronizar versão** (mesmo número nos três arquivos):
- `apps/desktop/package.json`
- `apps/desktop/src-tauri/tauri.conf.json`
- `apps/desktop/src-tauri/Cargo.toml`
2. **Build do front (gera `dist/` para o Tauri)**
```bash
pnpm -C apps/desktop build
```
3. **Exportar variáveis do assinador** (no mesmo shell em que vai buildar):
```bash
export TAURI_SIGNING_PRIVATE_KEY="$(cat ~/.tauri/raven.key)"
export TAURI_SIGNING_PRIVATE_KEY_PASSWORD="<senha-da-chave>"
```
> No PowerShell, use `setx` para persistir ou execute `set`/`$env:` no terminal atual.
4. **Gerar os instaladores + `.sig`**
```bash
pnpm -C apps/desktop tauri build
```
Os artefatos ficam em `apps/desktop/src-tauri/target/release/bundle/`:
| SO | Bundle principal | Assinatura gerada |
|----------|----------------------------------------------|-----------------------------------------|
| Windows | `nsis/Raven_0.X.Y_x64-setup.exe` | `nsis/Raven_0.X.Y_x64-setup.exe.sig` |
| Linux | `appimage/Raven_0.X.Y_amd64.AppImage` | `appimage/Raven_0.X.Y_amd64.AppImage.sig` |
| macOS | `macos/Raven.app.tar.gz` | `macos/Raven.app.tar.gz.sig` |
---
## 3. Publicar no GitHub
1. **Criar/atualizar release** (ex.: `v0.1.6`) anexando todos os instaladores e seus `.sig`.
2. **Atualizar `latest.json`** (no próprio repo ou em um gist público) com algo como:
```json
{
"version": "0.1.6",
"notes": "Novidades do release",
"pub_date": "2025-10-12T08:00:00Z",
"platforms": {
"windows-x86_64": {
"signature": "<conteúdo de Raven_0.1.6_x64-setup.exe.sig>",
"url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.6/Raven_0.1.6_x64-setup.exe"
},
"linux-x86_64": {
"signature": "<conteúdo de Raven_0.1.6_amd64.AppImage.sig>",
"url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.6/Raven_0.1.6_amd64.AppImage"
},
"darwin-x86_64": {
"signature": "<conteúdo de Raven.app.tar.gz.sig>",
"url": "https://github.com/esdrasrenan/sistema-de-chamados/releases/download/v0.1.6/Raven.app.tar.gz"
}
}
}
```
- Pegue o link **Raw** do `latest.json` e mantenha igual ao usado no `tauri.conf.json`.
---
## 4. Validar rapidamente
1. Instale a versão anterior (ex.: 0.1.5) e abra.
2. O agente deve avisar sobre a nova versão e reiniciar automaticamente ao concluir a instalação.
3. Caso queira forçar manualmente, abra a aba **Configurações → Verificar atualizações**.
---
## 5. Resumo rápido
1. `pnpm -C apps/desktop build`
2. `export TAURI_SIGNING_PRIVATE_KEY=...` / `export TAURI_SIGNING_PRIVATE_KEY_PASSWORD=...`
3. `pnpm -C apps/desktop tauri build`
4. Upload dos bundles + `.sig` → atualizar `latest.json`
5. Testar o instalador antigo para garantir que atualiza sozinho
Com isso, os usuários sempre receberão a versão mais recente assim que abrirem o agente desktop.