Skip to content

🌐 This page is not yet translated to English. Showing Portuguese (BR) reference. Help translate this page on GitHub.

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

Released under the MIT License.