Serveur de licences du parc Ocade RAG
Licences
0 active
Vérifications
0
0 site actifappels de vérification cumulés
Catalogue plugins
0 plugin
0 licence équipée · gouvernance par liste blanche
Chargement...
Miroir du groupe GitLab plugins-ocade-rag. Le toggle « Disponible » rend un plugin proposable (axe global, distinct des droits par licence).
Aucun plugin. Cliquez sur « Synchroniser GitLab » pour remonter le catalogue.
Chaque instance RAG Platform (le « produit », ex. rag.autocade2.fr) vérifie sa licence en appelant POST /api/verify de ce serveur avec sa LICENCE_KEY (variable Coolify). La réponse fait autorité — elle vit dans cette base, le client n'y a pas accès et ne peut pas se réactiver lui-même. La plateforme revérifie au boot, toutes les ~30 min, et de façon paresseuse sur le chemin chaud.
| active | Tout fonctionne, mises à jour autorisées. |
| suspended | L'outil fonctionne (HTTP 200, valid:true) mais updates:false → badge + bannière ambre « Licence suspendue ». Ne bloque jamais l'usage. |
| revoked | L'instance se bloque (403 sur le chat) si le mode ENFORCE est actif. Pour une rupture de contrat. |
| expired | Comme revoked, automatique au passage de expires_at. |
Depuis le 2026-06-11, la plateforme est en ENFORCE par défaut : une licence révoquée/expirée bloque le chat (403) sans qu'aucune variable ne soit à poser. Le badge/bannière s'affichent comme avant.
Pour désactiver le blocage (mode observation — débloquer tout le monde sans redéployer une autre version) : poser LICENCE_ENFORCE=0 sur l'app RAG INTERFACE + redeploy. suspended ne bloque jamais (seul revoked/expired bloque).
Le client n'est pas bloqué malgré la révocation ? Deux causes : (1) l'instance tourne une version antérieure au 2026-06-11 (avant le blocage par défaut) → Redeploy la dernière version ; (2) la variable LICENCE_ENFORCE est restée à 0 (mode observation) → la retirer (ou la passer à 1) dans la section « Environment Variables » (PAS « Preview Deployments »), « Available at Runtime », puis Redeploy. Signe que c'est bon : badge rouge ET le chat renvoie 403.
suspended. L'outil tourne toujours, badge ambre côté client. Pour couper réellement les mises à jour : désactiver aussi la deploy key GitLab (voir §7).revoked → en ENFORCE, le chat renvoie 403 dans ~1 min (ou au reload côté client). Désactiver aussi la deploy key pour bloquer les màj de contournement.active (le client retrouve l'accès en ~1 min) + réactiver la deploy key si tu l'avais coupée.| App | Variable | Rôle |
|---|---|---|
| LICENCE RAG | SUPABASE_DB_URL | OBLIGATOIRE — sinon les auto-migrations ne s'appliquent pas (voir §8). |
| LICENCE RAG | LICENCE_SIGN_KEY | Clé privée Ed25519 → le serveur signe ses réponses (anti faux-serveur). |
| RAG INTERFACE | LICENCE_KEY | La clé de licence du client (celle créée ici). |
| RAG INTERFACE | LICENCE_ENFORCE | Plus besoin de la poser — blocage actif par défaut (403) généré nativement. Mettre 0 seulement pour désactiver (mode observation). |
| RAG INTERFACE | LICENCE_REQUIRE_SIG | 1 = refuse les réponses NON signées (ferme le faux serveur). À poser après LICENCE_SIGN_KEY (voir §5). |
| RAG INTERFACE | LICENCE_INSTANCE_ID | Optionnel — ID stable de l'instance (sinon aléatoire à chaque boot ; utile pour la géoloc/anomalies). |
Sans signature, un client malin pointe LICENCE_VERIFY_URL vers un faux serveur renvoyant valid:true. La signature ferme ce trou : le serveur signe, la plateforme exige + vérifie avec la clé publique embarquée. L'ordre évite de bloquer un client légitime (clé publique sur la plateforme AVANT que le serveur ne signe) :
LICENCE_SIGN_KEY sur LICENCE RAG → redeploy. Le serveur signe./api/verify renvoie une sig non nulle et valide.LICENCE_REQUIRE_SIG=1 sur RAG INTERFACE → redeploy. Faux serveur bloqué.Le dashboard recalcule à chaque chargement, à partir des vérifications (qui portent IP, pays, instance_id) :
Les anomalies apparaissent en rouge en haut ; bouton Acquitter pour les retirer. E-mail proactif : à venir (nécessite une config SMTP sur ce serveur).
Sur suspended : badge ambre « Licence suspendue » + bannière (partout) + page /licence au clic. Sur revoked : badge rouge « Licence révoquée » + bannière rouge. La page /licence explique le statut et donne le contact contact@ocadefusion.fr.
SUPABASE_DB_URL obligatoire sur LICENCE RAG : le repli RPC des auto-migrations ne fonctionne pas sur cette base (la fonction exec_migration n'y existe pas). Sans cette variable, toute nouvelle migration échoue en silence (ex. le statut suspended renverra une 500 au suspend). Format : postgresql://postgres:PWD@supabase-db-…:5432/postgres.
Deploy key : par convention coolify-rag-<client> (champ deploy_key_hint = aide-mémoire). La désactiver coupe les mises à jour immédiatement (levier le plus rapide, indépendant du statut).
Le client a la main sur son code et son Coolify. Un client déterminé peut retirer la vérification du code source ou poser LICENCE_ENFORCE=0 → imbloquable à 100 %. La parade : la deploy key (coupe les màj) + la détection d'anomalies (l'instance muette le trahit) + la traçabilité des vérifications. Reculer l'horloge pour étendre la grâce 7 j est bloqué (anti-rollback).
Le marketplace distribue des plugins (extensions de l'outil RAG) aux instances clientes, par licence et de façon contrôlée. Chaque instance ne reçoit que ce à quoi sa licence lui donne droit, sans jamais accéder au code source privé.
Chaque plugin est un repo GitLab privé du groupe PLUGINS-OCADE-RAG. Le bouton « Synchroniser GitLab » (section Catalogue plugins) remonte ces repos dans le Catalogue (lecture du manifest : nom, description, version).
Deux axes distincts contrôlent la distribution :
Une instance ne reçoit que les plugins « Disponible » ET accordés à sa licence(l'intersection des deux axes ci-dessus). La liste est fournie par l'endpoint signé entitlements, que l'instance interroge :
plugins_rev (renvoyé par /api/verify) change et l'instance se rafraîchit ;Une licence marquée « Pilote » (toggle sous le bouton « Plugins », badge Pilote sur sa ligne) reçoit la dernière version de chaque plugin (le head_ref, dernier commit) en avant-première. Toutes les autres licences reçoivent la version « publiée » — une réf figée (published_ref), qui ne bouge pas tant qu'on ne publie pas.
Le bouton « Publier » sur un plugin (catalogue) fige la version courante comme publiée(head → published) et la propage à toutes les instances (le pilote, lui, est déjà sur head). Les sites l'installent en ~1 min.
Le badge « MAJ en attente » (catalogue) signale qu'une version plus récente existe (head ≠ publié) mais n'a pas encore été publiée : seul le pilote la voit pour l'instant.
entitlements) sont signées Ed25519 : un faux serveur de licence local ne peut pas fabriquer une liste d'autorisations acceptée.