Mise en place de la connexion au canal privé pour la bêta avec Patreon et passage en v0.8.0
This commit is contained in:
@@ -68,3 +68,38 @@ update-check.images=${UPDATE_CHECK_IMAGES:}
|
||||
update-check.tag=${UPDATE_CHECK_TAG:latest}
|
||||
update-check.watchtower-url=${WATCHTOWER_URL:http://watchtower:8080}
|
||||
update-check.watchtower-token=${WATCHTOWER_TOKEN:}
|
||||
|
||||
# ============================================================================
|
||||
# Licensing (canal beta gate par Patreon)
|
||||
# ============================================================================
|
||||
# URL du relais OAuth Patreon (Cloudflare Workers). En prod : valeur par defaut.
|
||||
licensing.relay.base-url=${LICENSING_RELAY_BASE_URL:https://loremind-auth.igmlcreation.fr}
|
||||
|
||||
# Cle publique Ed25519 (PEM SPKI) qui verifie les JWT emis par le relais.
|
||||
# En prod : chargee automatiquement depuis classpath:licensing/jwt-public-key.pem
|
||||
# (embarquee dans le binaire). Cette propriete sert UNIQUEMENT a la rotation
|
||||
# de cle ou aux tests : si LICENSING_JWT_PUBLIC_KEY est defini, il prevaut
|
||||
# sur le fichier embarque.
|
||||
licensing.jwt.public-key=${LICENSING_JWT_PUBLIC_KEY:}
|
||||
licensing.jwt.expected-issuer=loremind-auth
|
||||
licensing.jwt.expected-audience=loremind-instance
|
||||
|
||||
# Periode de tolerance apres expiration du JWT pendant laquelle l'instance
|
||||
# garde l'acces beta meme si le relais est indisponible pour le refresh.
|
||||
licensing.grace-period-days=14
|
||||
# Avant J-N de l'expiration, le daemon tente un refresh.
|
||||
licensing.refresh-before-expiry-days=2
|
||||
|
||||
# Identifiant stable de l'instance (UUID genere a la premiere connexion Patreon
|
||||
# et conserve en base). Utilise dans le state OAuth + dans le JWT.
|
||||
licensing.instance-id-file=${LICENSING_INSTANCE_ID_FILE:}
|
||||
|
||||
# Image beta : si la licence est valide ET le toggle canal beta active,
|
||||
# UpdateCheckService check ces images en plus du canal stable.
|
||||
licensing.beta.images=${LICENSING_BETA_IMAGES:igmlcreation/loremind-beta-core,igmlcreation/loremind-beta-brain,igmlcreation/loremind-beta-web}
|
||||
licensing.beta.tag=${LICENSING_BETA_TAG:latest}
|
||||
|
||||
# Chemin de sortie pour le docker config.json partage avec Watchtower.
|
||||
# Volume Docker `docker-config` monte sur ce chemin dans Core, et sur
|
||||
# `/shared/docker` dans Watchtower (DOCKER_CONFIG=/shared/docker).
|
||||
licensing.docker-config-path=${LICENSING_DOCKER_CONFIG_PATH:/shared/docker/config.json}
|
||||
|
||||
29
core/src/main/resources/licensing/README.md
Normal file
29
core/src/main/resources/licensing/README.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Cle publique JWT du relais OAuth Patreon
|
||||
|
||||
Le fichier `jwt-public-key.pem` contient la **cle publique Ed25519** qui sert
|
||||
a verifier la signature des JWT licence emis par le relais
|
||||
(`loremind-auth.igmlcreation.fr`).
|
||||
|
||||
## Pourquoi ici ?
|
||||
|
||||
- C'est une **cle publique** : par nature non-secrete, elle peut etre committee
|
||||
dans le repo public et embarquee dans le binaire distribue.
|
||||
- Cela evite a chaque utilisateur final de devoir renseigner manuellement la
|
||||
cle dans son `.env` au moment de l'installation.
|
||||
- L'env `LICENSING_JWT_PUBLIC_KEY` peut surcharger cette valeur (utile pour
|
||||
la rotation de cle sans rebuild ou pour les tests).
|
||||
|
||||
## Si le fichier est absent
|
||||
|
||||
La feature licensing est **desactivee silencieusement** : `LicenseService.isLicensingEnabled()`
|
||||
renvoie `false`, et l'UI masque toute la section Patreon.
|
||||
|
||||
## Rotation de cle
|
||||
|
||||
1. Generer une nouvelle paire dans le relais : `npm run keys:generate`
|
||||
2. Pousser la nouvelle cle privee : `wrangler secret put JWT_PRIVATE_KEY`
|
||||
3. Remplacer `jwt-public-key.pem` ici avec la nouvelle cle publique
|
||||
4. Rebuild + redeployer LoreMind (les anciens JWT seront refuses au prochain
|
||||
refresh, l'utilisateur sera invite a reconnecter Patreon)
|
||||
5. Optionnel : pendant la transition, supporter les deux cles en parallele
|
||||
(pas implemente en MVP, peut etre ajoute si besoin operationnel)
|
||||
Reference in New Issue
Block a user