Revendeurs (marque blanche)
Où trouver dans l'admin : Customers › Resellers › List (
/resellers), Domains & SSL (/resellers/domains), Permissions & wholesale (/resellers/entitlements), Defaults (/resellers/settings). Emplacements de revendeur : System › Admin › License & updates (/license).
Description
Un revendeur dispose d'une copie personnalisée du portail client sur son propre domaine, avec ses propres clients, son propre portefeuille, ses prix et (en option) ses propres canaux de paiement. Il achète chez vous au tarif de gros et vend à ses propres prix. Ses clients ne voient jamais votre marque, et le domaine du revendeur ne peut en aucun cas ouvrir votre console d'administration. Le revendeur gère son activité depuis la console partenaire à l'adresse https://partner.<your-domain>.
Prérequis
| Élément | Prérequis |
|---|---|
| Licence | Un emplacement de domaine revendeur sur votre licence pour chaque domaine de revendeur personnalisé. La page de licence indique used/max emplacements et propose un lien pour en acheter d'autres. Sans emplacement disponible, l'ajout d'un domaine échoue avec l'erreur "Out of license reseller domain slots". |
| DNS | Chaque domaine de revendeur doit pointer vers votre serveur (voir ci-dessous). |
| Serveur Web et TLS | Le nom d'hôte doit atteindre le panneau NexCMP via votre proxy inverse avec un certificat valide pour ce nom. |
| SMTP configuré pour les e-mails d'invitation et de notification. | |
| Interrupteur principal | Reseller settings › General › rs_enabled est activé par défaut. |
Préparer l'infrastructure
Définissez l'adresse publique du serveur : son adresse IPv4 et, si vous préférez des CNAME, un nom d'hôte qui y pointe (par exemple
sites.cloud.example.com).Ouvrez Customers › Resellers › Defaults (
/resellers/settings), groupe Domains & SSL, et configurez :Clé Description rs_server_ipv4L'IPv4 publique vers laquelle les enregistrements A des revendeurs doivent pointer. rs_cname_targetLe nom d'hôte vers lequel les enregistrements CNAME des revendeurs doivent pointer. rs_master_hostsNoms d'hôte appartenant à votre propre site principal (ils ne peuvent pas être attribués à des revendeurs). rs_platform_domainDomaine parent optionnel pour les sous-domaines de plateforme (par exemple partners.cloud.example.compour donner aux revendeursacme.partners.cloud.example.com). Laisser vide désactive l'option.rs_sites_stale_minutesMinutes avant qu'un service de certificats ne soit considéré comme obsolète (par défaut 15). rs_ssl_fail_hoursHeures de tentatives infructueuses avant qu'une erreur ne soit levée (par défaut 48). Vérifiez ces valeurs avant d'envoyer les instructions
rs_server_ipv4,rs_cname_targetetrs_master_hostscontiennent des valeurs d'exemple. Remplacez-les par votre propre serveur et domaine avant de transmettre les instructions DNS à un revendeur, sous peine de pointer vers un mauvais emplacement à l'écran.Cliquez sur Save (un motif est requis).
Assurez-vous que votre proxy inverse transfère les noms d'hôte des revendeurs vers le panneau NexCMP et sert un certificat pour chacun d'eux. L'installateur configure nginx et Let's Encrypt uniquement pour le domaine principal (ainsi que les noms
admin.etpartner.qui se résolvent). Si vous utilisez Cloudflare, activez le mode proxy sur le nom d'hôte et utilisez le mode Full SSL.
Connecter dans NexCMP
Créer le revendeur
Ouvrez Customers › Resellers › List et cliquez sur New reseller. L'assistant comporte 8 étapes et effectue le provisionnement complet à la fin ; chaque étape peut être relancée en toute sécurité.
Étape Renseigner Revendeur Nom légal ou commercial, slug (4 à 31 caractères a–z, 0–9 ou -, commençant par une lettre ; il sert également de préfixe de facture), nom du contact, e-mail et téléphone, langue par défaut, coordonnées de facturation du revendeur (en tant qu'acheteur de recharges de portefeuille).Compte de console Nom d'utilisateur, e-mail du compte, nom complet ; Send a one-time invite link by e-mail (valable 72 heures, recommandé) ou afficher un mot de passe temporaire unique. Marque Nom de marque, nom court, slogans, couleurs principales, e-mail et téléphone du support, nom du vendeur figurant sur les factures clients, logos (fonds clair et sombre), icône carrée et favicon : PNG, JPEG, WEBP ou ICO jusqu'à 256 Ko, pas de SVG. Domaines Le ou les domaines client avec aussi www, lequel est prioritaire, un domaine de test (sslip.io) et l'option dry-run, ou un sous-domaine de la plateforme. L'assistant indique DNS OK / DNS not ready et les enregistrements à créer. Tarifs et portefeuille Remise de gros (%), plancher de vente (% du tarif public), majoration par défaut (%), limite de crédit, solde initial, alerte de solde bas, limites sur les clients, les VM et les domaines, fonctionnalités du site (inscription client, protection DDoS, tickets de support, forfait personnalisé, redimensionnement, Auto Scaling). Canaux de paiement Qui perçoit les paiements des clients (voir ci-dessous) et optionnellement son propre PayPal et son propre virement bancaire vietnamien. Email Nom de l'expéditeur et Reply-To. L'adresse From reste celle de la plateforme tant que DKIM n'est pas configuré pour le domaine du revendeur. Révision Vérifiez le tout et cliquez sur Provision everything, ou Save draft (provision later). Le provisionnement se poursuit en arrière-plan (toutes les 30 secondes). Ouvrez le revendeur pour suivre la progression et utilisez Continue provisioning ou Retry si une étape a échoué.

Pointer les DNS (le revendeur s'en charge)
Le revendeur (ou vous-même) crée les enregistrements affichés sous l'onglet Domains & SSL :
| Enregistrement | Name | Valeur |
|---|---|---|
| TXT (propriété, première fois seulement) | _site-verify.<domain> | sv=<token> affiché à l'écran |
A (domaine apex tel que shop.example.net) | le domaine | votre rs_server_ipv4 |
CNAME (sous-domaine tel que cloud.example.net) | le domaine | votre rs_cname_target (ou un enregistrement A vers rs_server_ipv4) |
| CNAME (optionnel) | www.<domain> | votre rs_cname_target |
Également :
- Supprimez tout enregistrement AAAA (IPv6) sauf si votre serveur répond sur cette adresse IPv6.
- Désactivez le proxy CDN (off, nuage gris) pendant la vérification du domaine.
- Si le domaine possède des enregistrements CAA, autorisez
letsencrypt.org.
Le jeton de l'enregistrement TXT est unique pour chaque domaine ; copiez-le depuis l'écran. Le système revérifie les DNS toutes les 5 minutes pendant les premières 48 heures, puis toutes les heures, et libère un nom dont l'enregistrement TXT est toujours absent après 72 heures.
États des domaines
Sur Customers › Resellers › Domains & SSL (tous les revendeurs) et dans l'onglet Domains & SSL d'un revendeur :
| État | Description |
|---|---|
pending_verify | En attente de l'enregistrement TXT. |
pending_dns / verifying | En attente du pointage A ou CNAME vers vous. |
issuing | Certificat en cours d'émission. |
active | Diffusion du site du revendeur. |
cert_expiring | Certificat proche de l'expiration ; renouvellement attendu. |
dns_lost | Les DNS ne pointent plus vers vous ; le domaine est supprimé au bout de 30 jours. |
error | Consultez le code d'erreur ; Retry après correction. |
removing / removed | En cours de suppression ; l'emplacement de licence est récupéré. |
Actions sur les lignes : Check now, Retry, Make primary, Test mode (pour un domaine de test), Remove.
Permissions et gros
Customers › Resellers › Permissions & wholesale (/resellers/entitlements) est une matrice : une ligne par revendeur, avec la remise et la marge en gros, et un interrupteur par service (par exemple DDoS Shield et VPN). Un interrupteur est modifiable lorsque la fonction globale de la plateforme est activée ; sinon, la cellule est en lecture seule et renvoie vers le paramètre. Le sous-onglet Top-up codes définit le nombre de codes que chaque revendeur peut émettre par mois (voir Promotions).
Règles de tarification :
- Prix de gros = prix public x (1 - remise), et peut être remplacé par plan et par cycle de facturation dans l'onglet Wholesale pricing du revendeur.
- Le revendeur définit les prix au détail et ne peut pas descendre sous le plancher (pourcentage du prix public).
- Le portefeuille du revendeur paie le prix de gros lorsque ses clients achètent. Le portefeuille dispose d'une limite de crédit, d'un délai de grâce et d'un plafond de découvert (voir Defaults).
Defaults
Customers › Resellers › Defaults (/resellers/settings) contient les clés rs_* s'appliquant à chaque revendeur. Chaque modification demande une raison et est auditée.
| Groupe | Clé | Valeur par défaut | Description |
|---|---|---|---|
| Général | rs_enabled | 1 | Programme de revendeurs activé. |
rs_platform_collect_enabled | 0 | Permet à la plateforme de collecter les paiements des clients pour le compte des revendeurs. Activer uniquement après un examen juridique. | |
rs_totp_required | 1 | Les comptes de la console revendeur doivent utiliser l'authentification multifacteur. | |
rs_agreement_version | 1 | Version de l'accord de revendeur qu'ils doivent accepter. | |
| Tarification par défaut | rs_default_discount_bp | 2000 (20 %) | Remise en gros pour les nouveaux revendeurs (points de base, de 0 à 9000). |
rs_default_markup_bp | 2500 (25 %) | Marge par défaut (de 0 à 50000). | |
rs_default_floor_bp | 9000 (90 %) | Plancher de détail (de 0 à 20000). | |
rs_default_max_domains | 3 | Domaines autorisés par revendeur. | |
| Portefeuille et versements | rs_grace_hours | 72 | Délai de grâce avant que les services des clients ne soient affectés par un portefeuille de revendeur vide. |
rs_overdraft_cap_cents | 5000 | Découvert autorisé sur le portefeuille. | |
rs_retention_days | 14 | Jours avant la destruction des VM d'un revendeur fermé. | |
rs_payout_hold_days | 30 | Jours pendant lesquels une commission est retenue avant de pouvoir être retirée. | |
rs_payout_min_cents | 5000 | Retrait minimum. | |
rs_topup_min_cents | 2000 | Recharge de portefeuille minimale par un revendeur. | |
| Paiements et e-mails | rs_webhook_base | vide | URL de base publique pour les webhooks de la passerelle revendeur (vide = utiliser l'URL du site). |
rs_mail_from | vide | Adresse d'expéditeur pour les e-mails des revendeurs. | |
rs_invoice_show_processor | 1 | Afficher le processeur de paiement sur les factures. | |
rs_gw_stripe_enabled, rs_gw_usdt_enabled | 1 | Indique si les revendeurs peuvent configurer leur propre Stripe ou USDT. |
Qui collecte les paiements des clients
| Mode | Description |
|---|---|
| Le revendeur collecte (canaux propres) — par défaut | Le revendeur connecte son propre compte Stripe, PayPal, USDT ou bancaire. Ses webhooks sont https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>. Les cartes enregistrées et l'auto top-up ne sont pas disponibles pour ces sites. |
| La plateforme collecte | Vos canaux sont affichés sur le site du revendeur. Verrouillé jusqu'à rs_platform_collect_enabled = 1. |
| Mixte | Une combinaison choisie par canal. |
Ce que voit le revendeur
La console partenaire sur https://partner.<your-domain> propose Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet et Payment channels. Les comptes de la console ont le rôle reseller (complet) ou staff (lecture seule). Pour la consulter vous-même, ouvrez le revendeur et cliquez sur Sign in to partner console : vous y entrez pour 60 minutes, chaque écriture est enregistrée avec votre nom dans le journal administrateur et le journal revendeur, et les opérations financières nécessitent une seconde confirmation.
Vérification
- Après le provisionnement, la ligne du revendeur affiche active et une colonne Provisioning verte.
- Ouvrez le domaine du revendeur dans un navigateur : sa propre page de connexion apparaît avec sa marque.
https://<reseller-domain>/adminrépond par 404. - Inscrivez un client test sur ce domaine : le client apparaît sous Customers › List avec le revendeur dans la colonne Site.
- La page de licence indique un emplacement utilisé de plus.
Limites et notes
- Un emplacement de licence par domaine personnalisé ou test ; les sous-domaines de la plateforme n'utilisent pas d'emplacement.
- La suspension d'un revendeur conserve les données ; Close reseller restitue tous les emplacements de domaine, et la destruction de VM n'est autorisée qu'après la période de rétention.
- Les clients des revendeurs apparaissent dans votre liste de clients et peuvent être usurpés comme les autres (le lien s'ouvre sur le domaine du revendeur).
- Les revendeurs ne peuvent pas voir ni modifier vos canaux de paiement, quotas par défaut ou autres revendeurs.
Dépannage
| Symptôme | Cause | Solution |
|---|---|---|
| "Nombre de domaines revendeurs sous licence épuisé" | All slots used | Libérez un emplacement (supprimez un domaine) ou achetez-en d'autres sur la page de licence. |
Domain stuck in pending_verify | TXT record missing | Créez l'enregistrement TXT tel qu'affiché ; utilisez Check now. |
Domain stuck in pending_dns | A/CNAME ne pointant pas vers vous, enregistrement AAAA ou proxy CDN activé | Corrigez le DNS, désactivez le proxy, puis Check now. |
error state | Consultez le code sur la ligne (par exemple CAA bloquant Let's Encrypt, limite de taux) | Corrigez et cliquez sur Retry. |
| Le navigateur indique que l'hôte est inconnu ou "421" | Le nom d'hôte ne figure pas sur la licence ou n'est pas routé vers le panneau | Ajoutez le domaine via le revendeur (consomme un emplacement) et corrigez le proxy inverse. |
| Les instructions indiquent une IP ou un hôte erroné | rs_server_ipv4 / rs_cname_target contiennent toujours les valeurs d'exemple | Set them in Defaults. |
| Le revendeur ne peut pas activer la collecte de la plateforme | Locked | Définissez rs_platform_collect_enabled après examen juridique. |