En el juego no hay usuario ni contraseña: el rol sale de ACE o del grupo de tu framework. Ejemplos para server.cfg:
# Propietario: solo por ACE, nunca por grupo del framework
add_ace identifier.license:TU_LICENSE guardian.role.owner allow
# Un grupo entero
add_ace group.admin guardian.role.admin allow
add_ace group.mod guardian.role.moderator allow
add_principal identifier.license:LICENSE_DE_ALGUIEN group.mod
Opcionalmente, los grupos del framework se traducen a roles en ServerConfig.Roles.FrameworkGroups (por defecto superadmin y god son administrador y admin es moderador). En Qbox los grupos son principales ACE (group.<nombre>), así que el ejemplo anterior ya sirve.
Rol
Qué puede hacer
owner
Todo, incluida la gestión de cuentas del panel web y el globo terráqueo (view.geo)
admin
Ver todo, sancionar, desbanear, capturas, CCTV y vídeo, escucha de voz (cctv.listen), vigilancia, revisar casos, cambiar modos de detección
Solo lectura (resumen, jugadores, detecciones, baneos)
Los permisos de cada rol se editan en ServerConfig.Roles.Permissions; la sección "Roles y accesos" del panel muestra la tabla completa. El permiso exempt deja al staff fuera de las detecciones: quítaselo a un rol si quieres que también se le vigile.
El panel web viene desactivado. Mientras lo esté, http://IP_DEL_SERVIDOR:30120/guardian/ muestra un texto que explica cómo activarlo.
En config/server.lua pon ServerConfig.WebPanel.Enabled = true y reinicia Guardian (ensure guardian).
En la consola del servidor (la ventana del FXServer o la consola de txAdmin, no la F8 del juego) escribe:
guardian_panel create nombre_de_usuario owner
El rol puede ser owner, admin, moderator o viewer. La consola muestra una contraseña aleatoria una sola vez: cópiala entera, sin espacios.
Abre http://IP_DEL_SERVIDOR:30120/guardian/ (en el mismo PC del servidor, http://localhost:30120/guardian/) y entra con ese usuario y esa contraseña.
El panel te obliga a cambiar la contraseña (mínimo PasswordMinLength, 12 caracteres).
Recomendado: activa la verificación en dos pasos en "Roles y accesos > Mi seguridad" con una app como Google Authenticator, Aegis o Authy, y guarda los códigos de recuperación (cada uno sirve una vez). Con RequireTwoFactor = true es obligatoria para todos.
Repite el paso 2 para cada miembro del staff con su rol. El propietario también puede crear cuentas desde "Roles y accesos > Cuentas del panel web".
Si alguien olvida la contraseña: guardian_panel reset nombre_de_usuario genera otra (y desbloquea la cuenta). Si pierde el móvil de la 2FA y los códigos: guardian_panel disable2fa nombre_de_usuario. Tras MaxFailedLogins intentos fallidos la cuenta se bloquea LockoutMinutes minutos.
Recomendado en producción: sirve el panel por HTTPS detrás de un proxy inverso tuyo y activa TrustProxy (con su IP en TrustedProxies) y SecureCookie.
Seguridad del panel web: contraseñas con bcrypt (natives del servidor) o PBKDF2-HMAC-SHA256, bloqueo por intentos, límite de peticiones por IP, sesión en cookie HttpOnly; SameSite=Strict ligada a la IP, token CSRF en cada petición, cabeceras de seguridad y CSP sin scripts ni estilos en línea. Cada acceso, fallo y cambio queda en la auditoría.