Aller au contenu principal

Déployer GrowthOps et le mettre sous licence

GrowthOps est en marque blanche : vous exploitez un déploiement sous votre propre marque et le vendez à vos propres clients. Cette page traite de ce qui se joue entre vous et Kuploy — où tourne le déploiement, qui compte comme son exploitant, et sa licence. Ce que vos clients vous achètent est sur Offres, clients et tarifs.

Les mécanismes de licence que GrowthOps partage avec tous les produits — codes de rattachement, synchronisation, états — sont sur Licences.

L'usage de GrowthOps est documenté dans l'application. Chaque déploiement sert un guide utilisateur public sur /docs — premiers pas, recommandations, Ask Google, équipe et sièges, et mesure — et y renvoie depuis son pied de page. Voyez-le sur growthops.kuploy.app/docs. Cette section ne le répète pas.

1. Dites où il tourne​

Définissez GROWTHOPS_TRUST. C'est cette variable qui décide si le déploiement peut détenir une clé de licence, et rien ne la devine : toute valeur autre que exactement server est traitée comme tenant, de sorte que ne rien dire vous donne la réponse prudente.

ValeurOù tourne le déploiementUne clé de licence dans l'environnement
tenant (par défaut)Comme charge de travail sur le cluster de quelqu'un d'autre — sur Kuploy Cloud, par exempleIgnorée. La clé appartiendrait à celui qui exploite le cluster, et non à vous. Rattachez la licence à la place.
serverSur une infrastructure que vous possédez — Vercel, votre propre clusterHonorée comme amorce, depuis KUPLOY_LICENSE_KEY

La raison en est donnée dans Licences → Une clé de licence est un secret.

2. Dites qui l'exploite​

Posséder une organisation sur le déploiement ne fait de personne son exploitant : chacun possède celle qu'il crée en s'inscrivant. GrowthOps reconnaît son exploitant de deux façons, et l'une des deux suffit :

  • Le propriétaire de l'exploitant sous licence, connecté avec Kuploy. La question est posée à kuploy.app en direct, chaque fois. Cela exige que la connexion Kuploy soit configurée sur le déploiement (KUPLOY_OIDC_CLIENT_ID et KUPLOY_OIDC_CLIENT_SECRET) — voir Le SSO avec kuploy.app.
  • Une adresse vérifiée dans GROWTHOPS_OPERATOR_EMAILS, séparées par des virgules. C'est ainsi que vous entrez sur un déploiement neuf, avant qu'il n'y ait de licence à interroger. C'est une identité, et non un secret : elle n'accorde rien sur kuploy.app, et quiconque peut la définir maîtrise déjà le déploiement. Seules les adresses vérifiées comptent : il faut donc REQUIRE_EMAIL_VERIFICATION=true.

Cette liste d'adresses continue de fonctionner après le rattachement de la licence, et c'est délibéré : c'est ainsi que vous rentrez quand la licence est unlinked, ou que kuploy.app est injoignable.

3. Connectez-vous sur /admin/sign-in​

Operator sign-in est la porte de l'exploitant. Elle aboutit sur la page de licence, fonctionne même sans organisation sur le déploiement, et renvoie les clients qui s'y égarent vers le /sign-in ordinaire. Elle est tenue à l'écart des résultats de recherche.

La porte de l’exploitant, sur /admin/sign-in

4. Rattachez la licence​

Sur /admin/license, demandez un code de rattachement et saisissez-le sur kuploy.app/claim. La clé voyage de kuploy.app jusqu'au stockage propre au déploiement ; vous ne la manipulez jamais. La page affiche ensuite l'état de la licence et le niveau que rapporte kuploy.app :

La page de licence après un rattachement : fraîche, sur le niveau que rapporte le centre

Si la page indique que le déploiement n'est pointé sur aucun centre, définissez KUPLOY_HUB_URL et PUBLIC_URL — les deux sont nécessaires.

5. Planifiez le rafraîchissement de la licence​

GrowthOps ne se synchronise pas dans son propre processus. Il ne relit kuploy.app que lorsqu'on le lui demande : planifiez donc un POST /api/license/sync toutes les 30 minutes, authentifié par Authorization: Bearer $CRON_SECRET. Sur Kuploy Cloud, c'est une planification applicative qui exécute :

sh /app/scripts/license-sync.sh
  • Sans CRON_SECRET, la route répond 404 à tous les appels — celui de l'ordonnanceur compris : le symptôme est donc le silence, et non une erreur.
  • Une synchronisation en échec fait échouer l'exécution planifiée, pour que vous le voyiez.
  • Avant le rattachement, l'appel est sauté plutôt qu'échoué : un déploiement qui attend d'être rattaché n'est pas cassé.

Sans planification, la licence devient stale, puis frozen, et les changements d'offre ou une révocation n'atteignent jamais le déploiement.

6. Choisissez comment GrowthOps atteint l'IA​

GrowthOps rédige ses textes avec Claude. Il s'appuie, dans cet ordre, sur :

  1. Votre propre clé — ANTHROPIC_API_KEY, et ANTHROPIC_BASE_URL si vous passez par votre propre passerelle. Dès qu'elle est définie, elle l'emporte toujours, et rien de ce qui suit ne s'applique.
  2. L'IA fournie par Kuploy — du crédit prépayé que vous achetez sur kuploy.app. Elle exige une licence rattachée, et reste désactivée jusqu'à ce que vous l'activiez.

Activer l'IA fournie par Kuploy

  1. Achetez un lot de crédit sur kuploy.app.
  2. Sur /admin/license, cliquez sur Use Kuploy-supplied AI et confirmez. Le bouton n'apparaît que tant qu'aucune ANTHROPIC_API_KEY n'est définie.
  3. La licence se synchronise aussitôt. La carte au-dessus du bouton indique alors Generation runs on AI credit you bought on kuploy.app, avec un lien vers kuploy.app → Billing pour en racheter. Turn off Kuploy-supplied AI la désactive, avec une synchronisation immédiate également ; définir ANTHROPIC_API_KEY revient à votre propre clé.

La page de licence sur l’IA fournie par Kuploy : la ligne AI indique credit US$15.01 · spent under US$0.01, à la dernière synchronisation, au-dessus de la carte avec Buy more on kuploy.app → Billing et Turn off Kuploy-supplied AI

La ligne AI de la page de licence dit quelle source est en service : Your own key (ANTHROPIC_API_KEY) ; Off — no key set, Kuploy-supplied AI not turned on ; ou Kuploy-supplied · credit … · spent … — ou bien la raison invoquée par kuploy.app lorsqu'il refuse. Les montants sont ceux de la dernière synchronisation, et une dépense inférieure à un cent s'affiche under US$0.01. Le rafraîchissement planifié les tient à jour, et un nouveau jeton atteint le déploiement de lui-même.

Quand le crédit est épuisé

La génération est refusée jusqu'à ce que vous en rachetiez. /api/health rapporte generationSource : own, kuploy, ou null lorsqu'aucune des deux n'est disponible.

Tourner sans licence​

C'est pris en charge : rien n'est coupé. Ce que vous perdez, c'est le plafond de votre niveau : vos propres offres ne sont alors vérifiées contre aucun. Tout déploiement rapporte licence: {plan, state} sur /api/health.