Skip to content

Distribution commerciale DockerHub

Cette page explique comment distribuer NFZ Docs Builder comme produit commercial avec DockerHub et NFZ License Server.

Architecture retenue

  • DockerHub publie les images prêtes à déployer.
  • NFZ License Server active les éditions, quotas, abonnements, tenants et entitlements.
  • NFZ Docs Builder vérifie la licence côté serveur via license-status et applique les droits dans les hooks Feathers.

Cette séparation évite de multiplier les images pour chaque client : le conteneur reste identique, les droits changent via la licence.

Domaine produit

Le domaine produit de référence est :

text
vitepress-buider.com

Variables minimales :

ini
NFZ_PRODUCT_ID=nfz-docs-builder
NFZ_PRODUCT_DOMAIN=vitepress-buider.com
NFZ_LICENSE_MODE=remote
NFZ_LICENSE_SERVER_URL=https://licence.nfz-serveur.fr
NFZ_LICENSE_VERIFY_PATH=/api/license/verify
NFZ_LICENSE_KEY=...

Tags DockerHub recommandés

TagUsage
vevedh/nfz-docs-builder:latestCommunity stable publique
vevedh/nfz-docs-builder:community-latestCommunity explicite
vevedh/nfz-docs-builder:studio-latestPetite équipe / édition Studio commerciale
vevedh/nfz-docs-builder:pro-latestOffre Pro SaaS principale
vevedh/nfz-docs-builder:enterprise-latestClient Enterprise dédié
vevedh/nfz-docs-builder:0.1.72Version immutable exacte

Le tag Studio est volontairement mappé à NFZ_EDITION=starter dans le runtime actuel pour préserver la compatibilité technique existante.

Build local

bash
docker build -f Dockerfile.production -t vevedh/nfz-docs-builder:0.1.72 .

Test :

bash
docker run --rm -p 3000:3000 \
  -e NFZ_AUTH_SECRET='change-this-secret' \
  -e NFZ_LICENSE_MODE=local \
  -e NFZ_EDITION=community \
  -e MONGO_URL='mongodb://root:changeMe@host.docker.internal:27037/nfz_docs_notion_editor?authSource=admin' \
  -e MONGODB_URL='mongodb://root:changeMe@host.docker.internal:27037/nfz_docs_notion_editor?authSource=admin' \
  vevedh/nfz-docs-builder:0.1.72

Healthcheck :

bash
curl http://localhost:3000/api/health

Publication automatique

Le workflow .github/workflows/publish-dockerhub.yml publie l'image sur DockerHub.

Secrets GitHub nécessaires :

text
DOCKERHUB_USERNAME
DOCKERHUB_TOKEN

Le lancement manuel permet de choisir :

  • image_tag ;
  • edition : community, studio, pro, enterprise ;
  • publication ou non des tags latest.

Déploiement Portainer / Traefik

Le fichier docker-compose.production.yml sert de base pour un VPS derrière Traefik.

Exemple Pro :

ini
NFZ_DOCS_IMAGE=vevedh/nfz-docs-builder
NFZ_DOCS_IMAGE_TAG=pro-latest
NFZ_TRAEFIK_HOST=vitepress-buider.com
NFZ_LICENSE_MODE=remote
NFZ_LICENSE_KEY=...
NFZ_LICENSE_SERVER_URL=https://licence.nfz-serveur.fr
NFZ_AUTH_SECRET=...
MONGO_URL=...
MONGODB_URL=...

Bonnes pratiques

  • Ne jamais mettre NFZ_LICENSE_ENFORCEMENT=false en production.
  • Ne jamais exposer NFZ_LICENSE_KEY dans le navigateur.
  • Publier latest uniquement pour l'édition Community stable.
  • Préférer les tags immutables (0.1.72, pro-0.1.72) pour les clients sensibles.
  • Tester /admin/license, /admin/commercial-distribution et /api/health après chaque déploiement.

Prochaine brique

La prochaine étape produit consiste à ajouter une console d'activation licence : test de clé, association tenant, statut abonnement et rafraîchissement sécurisé des entitlements.

Guide utilisateur public généré avec VitePress.