Panneau d'administration
Une interface web autonome pour gérer les utilisateurs, les groupes, les rôles, les remplacements de configuration et les autorisations système de LibreChat - sans modifier manuellement librechat.yaml.
Panneau d'administration LibreChat
Le Panneau d'administration LibreChat est une interface de gestion autonome basée sur navigateur pour LibreChat. Il se connecte à la même base de données que LibreChat lui-même et fournit une interface graphique pour les tâches administratives qui alimentent le contrôle d'accès granulaire : administration des utilisateurs et des groupes, gestion des rôles, remplacements de configuration étendus aux rôles ou aux groupes, et octroi de capacités au niveau du système.
Statut : Aperçu
Le panneau d'administration est disponible pour les tests dès maintenant et constitue la future interface de gestion qui s'appuie sur les API d'administration introduites dans LibreChat v0.8.5. Le code source, les problèmes et les versions se trouvent sur github.com/ClickHouse/librechat-admin-panel.
Ce qu'il fait
Le panneau d'administration est un client léger : toutes les données résident dans la base de données de LibreChat, et chaque action passe par les endpoints versionnés /api/admin/* sur le serveur API de LibreChat. Il offre aux administrateurs un emplacement unique pour :
- Gérer la configuration : affichez et modifiez chaque paramètre de LibreChat via un formulaire dynamique basé sur un schéma. Les nouveaux champs ajoutés au schéma de configuration apparaissent automatiquement, sans nécessiter de nouvelle version du panneau d'administration.
- Appliquer des remplacements par principal : limitez les remplacements de configuration à des rôles ou des groupes spécifiques, avec une cascade basée sur la priorité qui détermine la valeur finale résolue que chaque utilisateur voit lors de la connexion.
- Administrer les utilisateurs : lister, rechercher et consulter chaque compte sur l'instance.
- Gérer les groupes : créer et supprimer des groupes, ajouter/supprimer des membres, et utiliser les groupes en tant que principaux de premier ordre dans les ACL et les remplacements (overrides).
- Gérer les rôles : créez des rôles personnalisés au-delà des rôles intégrés
USER/ADMIN, modifiez leur matrice de permissions de fonctionnalités et attribuez des utilisateurs aux rôles. - Attribution de systèmes de droits : déléguez des capacités d'administration (par ex.
manage:users,read:usage,manage:mcpservers) à des utilisateurs, groupes ou rôles spécifiques sans leur accorder le statut d'administrateur complet. - Authentification : connectez-vous avec un compte administrateur local LibreChat, ou via OpenID SSO / SAML / les fournisseurs OAuth pris en charge lorsque ceux-ci sont activés sur l'instance LibreChat.
Pour le modèle de permission sous-jacent (principaux, ACL de ressources, capacités et comment les couches se composent), consultez la page Access Control.
Architecture
Le panneau d'administration s'exécute en tant que service distinct ; il ne partage pas de processus avec LibreChat. Les capacités d'administration sont vérifiées du côté de LibreChat via l'autorisation système access:admin ou le rôle SystemRoles.ADMIN, de sorte que le panneau ne peut pas s'octroyer lui-même des privilèges qu'il ne devrait pas avoir.
La surface de l'API d'administration exposée par LibreChat est :
| Montage | Objectif |
|---|---|
POST /api/admin/login /oauth/* | Points de terminaison d'authentification spécifiques à l'admin (local + SSO) |
GET /api/admin/verify | Valide la session administrateur |
/api/admin/users | Liste et recherche des utilisateurs |
/api/admin/groups | CRUD des groupes + gestion des membres |
/api/admin/roles | CRUD des rôles personnalisés + édition des permissions + gestion des membres |
/api/admin/grants | Octrois de capacités système (assigner/révoquer/lister) |
/api/admin/config | Configuration de base + remplacements par principal |
Démarrage
Prérequis
- Une instance LibreChat en cours d'exécution sur la v0.8.5 ou une version ultérieure (les API d'administration ne sont pas disponibles dans les versions antérieures)
- Accès réseau depuis le conteneur/hôte admin-panel vers l'API LibreChat
- Un compte administrateur sur LibreChat : soit le premier utilisateur enregistré (auto-admin), un utilisateur avec
role: 'ADMIN'défini dans Mongo, ou un principal auquel la capacitéaccess:admina été accordée.
Exécuter avec Docker (recommandé)
Utilisation de l'image publiée depuis GHCR :
docker run autonome :
Mise en réseau Docker
À l'intérieur d'un conteneur, localhost fait référence au conteneur lui-même, et non à votre hôte. Lorsque LibreChat s'exécute sur le même hôte, pointez VITE_API_BASE_URL vers http://host.docker.internal:3080 (Linux : ajoutez --add-host=host.docker.internal:host-gateway). En production, utilisez le nom DNS public/interne de votre API LibreChat.
Exécuter localement pour le développement
Variables d'environnement
| Variable | Required | Default | Description |
|---|---|---|---|
SESSION_SECRET | Oui en production | Solution de secours dev codée en dur lors de l'exécution de bun dev ; aucune valeur par défaut dans l'image Docker | Clé de chiffrement de session. Doit comporter au moins 32 caractères. |
VITE_API_BASE_URL | Oui dans Docker | http://localhost:3080 (développement local uniquement) | URL du serveur API LibreChat accessible depuis le navigateur, utilisée pour les redirections OAuth. |
API_SERVER_URL | Non | Utilise VITE_API_BASE_URL par défaut | URL côté serveur pour les appels API LibreChat. Utile lorsque le serveur du panneau d'administration accède à LibreChat via une URL différente de celle du navigateur (par ex. service Kubernetes interne vs nom d'hôte public). |
PORT | Non | 3000 | Port sur lequel le panneau d'administration écoute. |
ADMIN_SSO_ONLY | Non | false | Masque le formulaire e-mail/mot de passe, forçant la connexion uniquement par SSO. |
ADMIN_SESSION_IDLE_TIMEOUT_MS | Non | 1800000 (30 min) | Délai d'expiration de session inactive en millisecondes. |
SESSION_COOKIE_SECURE | Non | true en production | Indique si le cookie de session nécessite HTTPS. |
ADMIN_PANEL_METRICS_SECRET | Non | non défini | Jeton Bearer requis pour récupérer les métriques sur le point de terminaison /metrics de Prometheus. Le point de terminaison renvoie 401 lorsqu'il n'est pas défini ou en cas de non-concordance. |
URL de redirection LibreChat
Lorsque le panneau d'administration est hébergé sur une URL distincte de LibreChat, définissez ADMIN_PANEL_URL dans l'environnement de l'API LibreChat. Utilisez l'URL de base externe du panneau d'administration, incluant tout préfixe de chemin, et omettez la barre oblique finale :
Pour les déploiements Helm, définissez librechat.adminPanelUrl dans votre fichier values. Le chart le rend sous la forme ADMIN_PANEL_URL pour le flux OAuth d'administration de LibreChat :
Pour OpenID SSO, enregistrez ${DOMAIN_SERVER}/api/admin/oauth/openid/callback auprès de votre fournisseur d'identité.
Contrôles du cache
Ces variables reflètent les variables d'environnement de cache de LibreChat. Les variantes ADMIN_PANEL_* sont prioritaires et utilisent les équivalents partagés de LibreChat par défaut lorsqu'elles ne sont pas définies.
| Variable | Objectif |
|---|---|
STATIC_CACHE_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_MAX_AGE | max-age du navigateur en secondes pour les ressources hachées dans /assets/ (par défaut 172800 = 2 jours). |
STATIC_CACHE_S_MAX_AGE / ADMIN_PANEL_STATIC_CACHE_S_MAX_AGE | s-maxage du CDN en secondes (par défaut 86400 = 1 jour). |
INDEX_CACHE_CONTROL / ADMIN_PANEL_INDEX_CACHE_CONTROL | En-tête Cache-Control pour la réponse HTML de l'index. |
INDEX_PRAGMA / ADMIN_PANEL_INDEX_PRAGMA | En-tête Pragma pour la réponse HTML de l'index. |
INDEX_EXPIRES / ADMIN_PANEL_INDEX_EXPIRES | En-tête Expires pour la réponse HTML de l'index. |
Authentification
Le panneau d'administration réutilise la pile d'authentification de LibreChat et ne possède pas sa propre base de données d'utilisateurs. Deux chemins de connexion sont pris en charge :
- Comptes locaux : nom d'utilisateur/mot de passe pour tout utilisateur LibreChat dont le compte réussit la vérification d'accès administrateur.
- Single sign-on : OpenID Connect, SAML et les fournisseurs OAuth sociaux déjà configurés sur votre instance LibreChat. Définissez
ADMIN_SSO_ONLY=truepour masquer entièrement le formulaire de mot de passe.
L'accès administrateur est vérifié côté serveur par LibreChat pour chaque requête. Le compte doit soit :
- Avoir
role: 'ADMIN'dans MongoDB, ou - Détenir l'autorisation système
access:admin(attribuée à un autre mandataire via le panneau d'administration lui-même ; voir System Grants).
Les sessions sont basées sur des cookies, chiffrées avec SESSION_SECRET, et expirent en cas d'inactivité selon ADMIN_SESSION_IDLE_TIMEOUT_MS.
Gestion de la configuration
Le panneau affiche la configuration de LibreChat sous forme de formulaire dynamique piloté par le schéma de configuration. Cela présente deux propriétés utiles :
- Compatible avec les versions futures : lorsqu'une nouvelle configuration est ajoutée à LibreChat, le panneau la détecte automatiquement à partir du schéma. Aucune mise à jour ou redéploiement du panneau d'administration n'est nécessaire.
- Remplacements en couches : la configuration de base (issue de
librechat.yaml) peut être masquée par des remplacements par mandant (per-principal) limités à un rôle ou à un groupe. Lorsqu'un utilisateur se connecte, les remplacements sont résolus par ordre de priorité et fusionnés au-dessus de la base pour produire la configuration effective que l'utilisateur voit.
Ceci est l'interface derrière le système de remplacement de configuration par mandant basé sur une base de données de LibreChat. Cas d'utilisation typiques :
- Donner à un groupe "Research" une valeur
recursionLimitplus élevée et des endpoints supplémentaires - Permettre à un rôle "FinanceAdmins" de gérer les serveurs MCP tandis que les utilisateurs réguliers peuvent seulement les utiliser
- Restreindre les permissions d'
interfaceaux groupes de contractants externes
Connexe
- Access Control : le modèle de permission sur lequel le panneau d'administration est construit
- Configuration de l'interface : les indicateurs de fonctionnalité que le panneau modifie
- Authentication : authentification des utilisateurs sur LibreChat
- changelog v0.8.5 : fondations de l'API admin
- GitHub: ClickHouse/librechat-admin-panel : source, problèmes, versions
Que pensez-vous de ce guide ?