🌐 Esta página aún no está traducida al español. Mostrando referencia en portugués (BR). Ayúdanos a traducir.
Server Admin Panel
Painel de administração do servidor RoqueOS conectado, embutido no app (Launchpad → Server Admin). Substitui o HTML legacy em <seu-servidor>:27021/admin — esse continua funcionando como fallback (emergência, scripts), mas o painel nativo é onde tudo acontece no dia a dia.
Antes de começar
| Você precisa de | Por quê |
|---|---|
| a URL do servidor na porta 27021 | o painel é servido pelo próprio servidor |
| uma chave de administrador | as seções de gestão exigem papel de admin |
| o servidor de pé | painel que não abre é servidor parado, não painel quebrado |
Como se chega ao painel
Quando o painel não abre
| O que acontece | Por quê | O que fazer |
|---|---|---|
| A URL não responde | o servidor está parado, ou a porta está fechada | docker ps no servidor; confira o firewall |
| Abre e recusa a chave | a chave é de outro servidor, ou foi revogada | crie outra pelo primeiro acesso, se não houver nenhuma válida |
| Faltam as seções de usuários | o multi-tenant está desligado neste servidor | é o comportamento esperado; ver Sections multi-tenant |
| Os gráficos ficam em branco | o painel não está falando com o Docker | o cartão do Docker mostra Desconectado quando é isso |
| Perdi a chave de administrador | ela só aparece uma vez, na criação | gere outra pelo painel, ou pelo endpoint de setup se o servidor estiver zerado |
Sections sempre disponíveis
| Section | O que faz |
|---|---|
| Monitoramento | CPU/RAM/Disco/Docker live, top containers |
| API Keys | Criar/revogar chaves, ver permissões, logs por chave |
| Histórico de uso | Logs por API Key (request count, IPs únicos, atividade) |
| Cloudflare Tunnel | Status do tunnel, criar/remover rotas, lista de subdomínios |
| Rede | IP LAN configurado, outras LANs salvas pra acesso direto |
| Legendas | Provedores OpenSubtitles / Subdl pro Video Player |
| Recursos & versão | Versão do server, update available, features ativas |

Sections multi-tenant (gateadas por flag)
5 sections extras aparecem somente quando a flag multiTenant está ativada em Admin Panel → Settings → Cloud feature flags:
| Section | O que faz |
|---|---|
| Usuários & convites | Convidar pessoas pra usar o servidor com você |
| Permissões de apps | Templates de policy (Permissivo / Padrão / Restrito) |
| Uso de recursos | CPU/RAM/disco/banda agregados (LGPD-friendly) |
| Alertas | Regras "avisar quando uso > X%" via email/Slack |
| Log de auditoria | Quem fez o quê e quando (metadata, nunca conteúdo) |
Por que gated por flag
Multi-tenant exige schema novo (Firestore + SQLite no server) que ainda não está plug-and-play em todos os deploys. Manter ligado por default exporia UI sem backend pronto. Quando o módulo members ship no roqueos-server, a flag vira default ON.
Como ligar agora (Admin Panel apenas — não é por usuário):
- Login admin em
/app - Launchpad → Admin Panel
- Settings → role até Cloud Product (recursos avançados)
- Liga Multi-tenant (membros + permissões + alertas) → Save
- Volte ao Server Admin Panel → sidebar mostra 5 itens novos
Usuários & convites

- Botão "Convidar usuário" abre modal com email + role (Owner/Admin/User)
- Email é enviado pelo SMTP do servidor com link de aceite
- Após aceitar, usuário entra na lista com badge de status (Pendente/Ativo/Revogado)
- Menu de ação por linha permite Revogar acesso (volta pra lista de revogados, não deleta dados)
Roles:
- Owner: você (1 por servidor)
- Admin: gerencia outros usuários e policies, vê tudo
- User: usa apps conforme policy ativa
Permissões de apps

3 templates pré-configurados:
| Template | Quem vê o que |
|---|---|
| Permissivo | Todos os apps liberados pra todos os roles. Time pequeno de confiança. |
| Padrão | Admin vê tudo. User vê produtividade, mídia, utilitários (não Server Admin). |
| Restrito | User só vê Finder, Notes, Browser e Chat. Tudo mais escondido. |
Aplicar template é destrutivo — reescreve overrides per-user existentes. Por isso tem modal de confirmação obrigatório:

O modal lista as 3 consequências da ação:
- ✓ Reescreve as policies do servidor pro template selecionado
- ⚠ Apaga todos os overrides per-user existentes (não pode desfazer)
- ⟲ Backup do estado anterior fica em
/admin/policies/historypor 30 dias
Usuário precisa clicar Aplicar template (botão vermelho) pra confirmar. Cancelar é o default.
Uso de recursos

Cards mostrando consumo agregado:
- CPU: % uso médio do host
- Memória RAM: GB usados / total
- Disco: GB usados / total alocado
- Banda mensal: GB transferidos / quota Hetzner (20 TB no plano padrão)
Banda colorida por threshold:
- < 75%: gradient azul (saudável)
- 75-90%: gradient laranja (atenção)
- 90%+: gradient vermelho (crítico)
Privacidade LGPD (disclaimer azul no rodapé): coletamos APENAS métricas agregadas (% CPU, MB de RAM). Nunca o conteúdo dos arquivos, sessões ou conversas dos usuários.
Alertas

Banner LGPD no header (azul, sempre visível):
Privacidade LGPD — Alertas observam SÓ métricas agregadas (% CPU, MB de RAM). NUNCA conteúdo de arquivos, sessões ou conversas do usuário.
Criar regra:
- Métrica: CPU / RAM / Disco / Banda
- Operador:
≥ - Threshold: number
- Canal: email (default), Slack/Discord webhook (planejado)
- Status: Ativa / Desativada (toggle na linha)
Quando o trigger fire, alert é enviado pelo SMTP do servidor + registrado no Audit Log.
Log de auditoria

Banner LGPD: o log registra SÓ metadata da ação (quem, quando, tipo) — NUNCA o conteúdo manipulado.
Eventos registrados:
member.invited(email + role)member.revokedpolicy.template_applied(qual template)policy.override_changed(usuário X, app Y, before/after)alert.triggered(regra X, valor Y)apikey.created/apikey.revokedserver.config.changed
Retenção: 400 dias (alinhado com requisito Google Cloud Data Access Audit Log padrão LGPD).
Demo público
Quer experimentar sem instalar nada? https://demo.level-hard.com é o servidor público de demo, atualizado pelo founder com cleanup-demo.sh (cron diário). Limites:
- Não-admin: pode usar apps mas não vê Server Admin (gate de segurança em
windowManagement.js:88) - Multi-tenant intencionalmente OFF no demo (evita poluição)
- Containers + arquivos limpados diariamente
Pra testar multi-tenant você precisa instalar próprio via install.sh e flipar a flag.
Referências cruzadas
- Add Server Wizard — como conectar o servidor recém-instalado
- Volumes e backup — onde os dados das multi-tenant tables vivem
- RoqueOS Cloud — versão gerenciada que já vem com multi-tenant ativado
- Memory
multi_user_roles_decision.md(interna) — racional LGPD + arquitetura