Administration
Guide opérationnel pour les administrateurs : utilisateurs, rôles (RBAC), workspace, audit, licences et backups administratifs. Toutes les opérations exigent authMiddleware plus des permissions spécifiques - voir l'API Reference pour l'inventaire complet…
Guide opérationnel pour les administrateurs : utilisateurs, rôles (RBAC), workspace, audit, licences et backups administratifs. Toutes les opérations exigent authMiddleware plus des permissions spécifiques - voir l'API Reference pour l'inventaire complet des endpoints.
Bootstrap admin
Au premier démarrage (si SEED_BOOTSTRAP_ADMIN=true), le serveur crée un admin avec des identifiants depuis les env (SEED_ADMIN_USERNAME=admin, SEED_ADMIN_PASSWORD=admin123, [email protected]). Le compte a mustChangePassword=true → le premier login impose le changement. Setup wizard via GET /api/system/is-initialized → POST /api/system/initialize.
Sécurité : change immédiatement le mot de passe bootstrap et définis un JWT_SECRETfort en production. Le fallbackscryptSync(JWT_SECRET, ...)pourENCRYPTION_KEY
rend JWT_SECRET un matériel cryptographique - ne l'expose pas.Utilisateurs - /api/users
| Opération | Endpoint | Permission |
|---|---|---|
| Liste paginée | GET /users | requireAdmin |
| Détail | GET /users/:id | self/admin |
| Modification | PUT/PATCH /users/:id | self/admin (updateUserSchema) |
| Suppression | DELETE /users/:id | requireAdmin |
| Avatar | POST/DELETE /users/:id/avatar | JWT (multipart) |
Delete : DELETE est un hard delete avec cleanup des relations (UserRole, ProjectAccess, WorkspaceAccess) et invalidation du cache d'auth ; l'admin ne peut pas s'auto-supprimer. updateUserSchema valide username/email/password/firstName/lastName/customInstructions/textSize (les custom instructions sont préposées au system prompt de l'agent) ; les non-admin ne peuvent pas changer leur propre mot de passe depuis cet endpoint.
Rôles & RBAC - /api/roles
31 permissions définies dans packages/shared/src/constants/permissions.ts (PERMISSION_NAMES). 13 sections de menu (MENU_SECTIONS, inclut uploads).
| Opération | Endpoint | Permission |
|---|---|---|
| Sections menu visibles | GET /roles/me/menu-sections | JWT |
| Liste des rôles | GET /roles | requireAdmin |
| Détail | GET /roles/:roleId | requireAdmin (UUID) |
| Création | POST /roles | requireAdmin (createRoleSchema, isDefault=false) |
| Update | PUT /roles/:roleId | requireAdmin (replace atomique des permissions) |
| Sections menu du rôle | PUT /roles/:roleId/menu-sections | requireAdmin |
| Suppression | DELETE /roles/:roleId | requireAdmin |
| Assign/Revoke | POST /roles/assign /revoke | requireAdmin |
Rôles par défaut : admin (toutes les 31 permissions) et user (11 permissions : les 9 de base plus memory:read/memory:write pour les mémoires per-utilisateur ; filters:manage est réservé à admin/superuser). "Superuser" coïncide avec admin. Les permissions sont vérifiées via requirePermission(name) ou le shortcut requireAdmin. L'assignation est many-to-many (UserRole).
Workspaces & Projects
Workspace (/api/workspaces) : unité d'isolation pour chats, documents, agent config.
- Création :
workspace:create+ licensemax_workspaces(Community 3, Enterprise ∞). - Accès : middleware
requireWorkspaceAccess(join tableWorkspaceAccess). - Soft-delete + restore (
PUT /:id/restore). - Dossiers de chat :
/:id/folders[/:folderId]+ restore.
Project (/api/projects) : regroupe des workspace corrélés.
- Création :
project:create+ licensemax_projects. - Accès :
requireProjectAccess(ProjectAccess). - Export d'archive :
GET /:projectId/export(stream). - Usage stats :
GET /:projectId/usage.
Audit / Event Log - /api/event-logs
License audit_log_immutable (Enterprise). GET avec filtres entityType/entityId/userId + limit/offset (pagination). eventLogService.logEvent délègue l'écriture au plugin enterprise (no-op en Community) et dispatch les webhooks fire-and-forget. Entités loggées (EntityType) : user, workspace, project, chat, document, mcp_connection, dlp, archive/archive_page/archive_import, ocr_job, synthesis_run, wiki_edit, backup_destination/backup_job, provider, memory. Quand le flag immutable est actif, les enregistrements ne sont pas modifiables/supprimables (append-only au niveau app).
Licences
- Community (défaut) : flags limités (voir 03 - Configuration).
- Enterprise :
LICENSE_KEY(JWT HS256) +LICENSE_SECRET. Payload validé contrelicensePayloadSchema. Expiré/invalide → fallback Community avec warn, graceful degradation à la runtime (pas de restart). - Endpoint :
GET /api/license/info(public) →{ license, features }. - Gating :
requireFeature(flag)→ 402 ;requireFeatureLimit(flag, model)→ 402 sicount >= limit(Enterprise =Infinity).
Backups administratifs
Voir 05 - Feature Guide § Backup. Endpoints admin :
- Logs
/api/system/backups(backup:log:read). - Destinations
/api/backup-destinations(backup:destination:read/write, licensemax_backup_destinations). - Jobs
/api/backup-jobs(backup:job:read/write), trigger manuelPOST /:id/run. - Restore
/api/backups/restore/:logId[/dry-run](backup:restore:write). - Test de destination
POST /backup-destinations/:id/test.
Settings - /api/system/settings
GET/PUT bulk (retourne { updated, rejected }). Groupes : LLM, Embedding/Vector, ports/URL, Auth, Branding (gated white_label), Feature, OCR, Synthesis, Retention. Les clés ALWAYS_READONLY sont refusées. Chat retention uniquement via PUT /api/system/chat-retention (audité, confirmDataLoss: true). Détails dans 03 - Configuration.
SSO - /api/sso
License sso_enabled. GET/PUT /config, POST /test. Config SAML/OIDC enterprise.
Cross-link
- Permissions/flags : 03 - Configuration
- Endpoints complets : 04 - API Reference
- Deploy opérationnel : 09 - Deployment