Skip to content

🌐 Cette page n'est pas encore traduite en français. Affichage de la référence portugaise (BR). Aidez-nous à traduire.

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.

Sections sempre disponíveis

SectionO que faz
MonitoramentoCPU/RAM/Disco/Docker live, top containers
API KeysCriar/revogar chaves, ver permissões, logs por chave
Histórico de usoLogs por API Key (request count, IPs únicos, atividade)
Cloudflare TunnelStatus do tunnel, criar/remover rotas, lista de subdomínios
RedeIP LAN configurado, outras LANs salvas pra acesso direto
LegendasProvedores OpenSubtitles / Subdl pro Video Player
Recursos & versãoVersão do server, update available, features ativas

Server Admin Monitor section — CPU/RAM/Disk em tempo real

Sections multi-tenant (gateadas por flag)

5 sections extras aparecem somente quando a flag multiTenant está ativada em Admin Panel → Settings → Cloud feature flags:

SectionO que faz
Usuários & convitesConvidar pessoas pra usar o servidor com você
Permissões de appsTemplates de policy (Permissivo / Padrão / Restrito)
Uso de recursosCPU/RAM/disco/banda agregados (LGPD-friendly)
AlertasRegras "avisar quando uso > X%" via email/Slack
Log de auditoriaQuem 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):

  1. Login admin em /app
  2. Launchpad → Admin Panel
  3. Settings → role até Cloud Product (recursos avançados)
  4. Liga Multi-tenant (membros + permissões + alertas) → Save
  5. Volte ao Server Admin Panel → sidebar mostra 5 itens novos

Usuários & convites

Empty state quando ninguém foi convidado

  • 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

Templates Permissivo / Padrão / Restrito

3 templates pré-configurados:

TemplateQuem vê o que
PermissivoTodos os apps liberados pra todos os roles. Time pequeno de confiança.
PadrãoAdmin vê tudo. User vê produtividade, mídia, utilitários (não Server Admin).
RestritoUser 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:

Confirm modal antes de aplicar template

O modal lista as 3 consequências da ação:

  1. ✓ Reescreve as policies do servidor pro template selecionado
  2. ⚠ Apaga todos os overrides per-user existentes (não pode desfazer)
  3. ⟲ Backup do estado anterior fica em /admin/policies/history por 30 dias

Usuário precisa clicar Aplicar template (botão vermelho) pra confirmar. Cancelar é o default.

Uso de recursos

CPU/RAM/Disco/Bandwidth com disclaimer LGPD

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

Empty state com banner LGPD obrigatório

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

Tabela de eventos administrativos

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.revoked
  • policy.template_applied (qual template)
  • policy.override_changed (usuário X, app Y, before/after)
  • alert.triggered (regra X, valor Y)
  • apikey.created / apikey.revoked
  • server.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