Skip to content

Administration plateforme et administrateurs système ​

Les administrateurs système gèrent les paramètres globaux du déploiement WeKnora, les files de tâches, les clés API plateforme et l’audit inter-espaces. Le Owner d’un espace administre un seul workspace ; les deux statuts sont indépendants. Rôles au sein d’un espace : Espaces, utilisateurs et authentification.

Périmètres respectifs :

Owner d’espaceAdministrateur système
PortéeUn workspaceTout le déploiement
AttributionÀ la création de l’espace ou transfert par l’OwnerPar un admin système existant ; le premier via variable d’environnement de bootstrap
Contenu géréMembres, modèles, bases, intégrations, audit d’espaceParamètres système, files, clés API plateforme, audit inter-espaces, réinitialisation de mots de passe
Cumul automatique—Non : Owner d’un espace ≠ admin système, et inversement

L’accès aux données d’autres espaces passe par CanAccessAllTenants. Le statut administrateur système n’ouvre pas automatiquement le contenu des bases ailleurs.

Console plateforme : paramètres système, files, clés API plateforme et journal d’audit système
Console plateforme : paramètres système, files, clés API plateforme et journal d’audit système

Configurer le premier administrateur système ​

Sur un déploiement neuf :

  1. Enregistrer un compte via le flux habituel ;
  2. Définir WEKNORA_BOOTSTRAP_SYSTEM_ADMIN_EMAIL=<email du compte> pour le service app, redémarrer ;
  3. Au démarrage, si aucun admin système n’existe encore, l’utilisateur correspondant est promu.

Le bootstrap ne crée pas de compte : email inconnu → alerte journal, nouvelle tentative au redémarrage ; erreur de config sans bloquer le service. Une fois un admin système présent, la variable n’accorde plus de droits.

Ensuite, promotion/révocation dans l’interface. Impossible de se révoquer soi-même ni le dernier admin système actif. API : POST /system/admin/promote et /revoke ; révocation d’un non-admin → 200, audit changed=false.

Utiliser la console plateforme ​

Dans « Paramètres », barre latérale réservée aux admins système :

SectionRôleAPI
Paramètres systèmeInterrupteurs runtime globaux (inscription, politique espaces, concurrence, liste blanche SSRF, etc.), règles d’effet par clé — tableau ci-dessousGET/PUT/DELETE /system/admin/settings[/:key]
Catalogue modèlesModèles du catalogue, source, édition/ajout/JSON batch (effet immédiat), restauration par version ; voir Gestion du catalogue/system/admin/model-catalog*
Files de tâchesBacklog asynq en direct, retry/archivage/suppression par tâche, purge des archivées ; mode Lite → available=false/system/admin/runtime/queues*
Clés API plateformeClés scope platform pour l’automatisation control plane : system_tenants_read/manage, system_settings_read/manage, system_runtime_read/manage, system_audit_read/system/admin/api-keys
Journal d’audit systèmeÉvénements plateforme tenant_id = 0 (paramètres, promote/revoke, files, etc.). Les API d’audit d’espace filtrent par tenant et n’affichent pas ces lignesGET /system/admin/audit-log

Autres actions réservées :

  • Réinitialiser le mot de passe utilisateur (POST /system/admin/users/reset-password) : remplace le mot de passe local cible et révoque toutes ses sessions. Pas sur soi-même — changement personnel exige l’ancien mot de passe ;
  • Appliquer le quota stockage par défaut (POST /system/admin/tenants/apply-default-storage-quota) : écrit le quota par défaut courant sur tous les espaces existants.

Gestion des utilisateurs plateforme ​

« Paramètres → Paramètres système → Gestion des utilisateurs » : liste du déploiement, création, activation/désactivation, reset mot de passe, grant/revoke admin système. Désactiver un compte révoque immédiatement ses sessions ; impossible de se désactiver ou de désactiver le dernier admin système actif. La liste n’expose ni mot de passe ni hash.

Paramètres système : gestion des utilisateurs plateforme
Paramètres système : gestion des utilisateurs plateforme

Trois modes d’inscription : libre, sur invitation uniquement, fermée ; invite_only = pas d’inscription mot de passe — comptes existants via invitation. OIDC et création par admin ignorent la restriction mot de passe.

Créer un utilisateur ​

Depuis v0.8.2, « Paramètres → Paramètres système → Gestion des utilisateurs » → « Créer un utilisateur » : nom (2–50 car.), email, mot de passe aléatoire (défaut) ou saisi conforme à la politique. Utile si l’inscription publique est fermée. Affectation d’espace selon auth.default_tenant_mode : create_personal crée un espace personnel, tenantless attend une invitation.

Utilisateur créé : copier les identifiants et le mot de passe à usage unique
Utilisateur créé : copier les identifiants et le mot de passe à usage unique

Le mot de passe généré n’apparaît qu’à la création — copier avant fermeture ; fermeture du dialogue avant confirmation impossible, plus de lecture en clair ensuite. Chaque création → audit system.user_created. Identité dupliquée → utilisateur existant, mot de passe inchangé ; email et nom pointant vers des comptes différents → refus. API : API système.

Création utilisateur ≠ bootstrap premier admin : le bootstrap promeut un compte existant.

Référence des paramètres runtime ​

Paramètres modifiables en console. Valeur en base prioritaire sur l’environnement ; effet immédiat pour la plupart ; voir tableau pour les exceptions (nouvelles ressources, rebuild worker).

CléTypeDéfautEffet
auth.registration_modeself_serve / invite_register / invite_onlyself_serveImmédiat
auth.default_tenant_modecreate_personal / tenantlesscreate_personalNouveaux inscrits seulement
tenant.self_service_creation_enabledbooltrueImmédiat
tenant.max_owned_per_userint10 (0 = défaut intégré, négatif = illimité)À chaque création d’espace
tenant.default_storage_quota_gbint10Quota défaut (Go) si MB non actif
tenant.default_storage_quota_mbint0MB > 0 prime sur Go ; 0 ou négatif → Go. Inclut l’espace perso auto à l’inscription
tenant.auto_create_api_keyboolfalseÀ chaque création d’espace
ssrf.whitelistliste stringvideImmédiat (SSRF_WHITELIST_EXTRA reste côté déploiement)
asynq.core/postprocess/enrichment/maintenance/shared/wiki_concurrencyintvoir Tâches asynchronesReconfiguration des pools worker
model.max_concurrencyint32Immédiat

Autres clés (priorité base > env) :

CléDéfautRôle
auth.complex_password_enabledfalseNouveaux mots de passe : maj/min, chiffre, caractère spécial
tenant.auto_accept_invitationfalseInvitation email → adhésion directe si compte existant
sandbox.docker_enabledfalseAutorise config et instances sandbox Docker

tenant.auto_create_api_key est off par défaut ; activer pour compatibilité intégrations qui attendaient une clé full-access à la création d’espace.

Réinitialiser un paramètre runtime

Après enregistrement en console, changer la variable d’environnement ne remplace pas la valeur en base. Si la config « ne prend pas », vérifier les paramètres runtime ; DELETE /system/admin/settings/:key supprime l’override et restaure env ou défaut intégré.

Documentation associée ​

Référence d’implémentation ​

  • cmd/server/bootstrap.go : premier administrateur système.
  • frontend/src/config/settingsAccess.ts : sections paramètres plateforme.
  • internal/application/service/system_setting.go : registre des paramètres runtime.

Quota stockage par défaut des espaces ​

Création manuelle, inscription classique ou OIDC avec espace perso auto : même quota par défaut à la création. Ex. WEKNORA_TENANT_DEFAULT_STORAGE_QUOTA_MB=50 → 50 × 1024² octets. MB positif prime sur Go ; MB 0 ou négatif → Go ; Go non positif → 10 Go. Ordre par clé : override base > variable d’environnement > défaut intégré ; enregistrer MB=0 annule l’env et réactive Go. MB hors plage int64 → repli Go ; overflow Go → 10 Go, pas de quota illimité.

Le défaut n’affecte que les espaces créés ensuite. storage_quota explicite (octets) reste prioritaire ; les espaces existants ne sont pas mis à jour seuls. Pour les mettre à jour : action « Appliquer à tous les espaces existants », confirmation avec MB/Go effectifs. Écrase tous les quotas, y compris les ajustements individuels.

Pas besoin de modifier la DEFAULT SQL de la colonne : le service écrit des octets explicites, évitant qu’un ALTER TABLE ... SET DEFAULT en upgrade soit écrasé par GORM ; l’ancienne DEFAULT reste pour les insertions SQL hors service.

Documentation issue de WeKnora v0.9.0 · MIT License