---
title: Resellers (white-label)
description: Consenti ai partner di vendere il tuo cloud con il proprio brand: crea reseller, imposta domini e DNS, prezzi all'ingrosso, default e slot licenza.
url: https://nexcmp.com/it/docs/customers/resellers/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Resellers (white-label) {#resellers-white-label}

> **Dove trovarlo nell'amministrazione:** Customers › Resellers › List (`/resellers`), Domains & SSL (`/resellers/domains`), Permissions & wholesale (`/resellers/entitlements`), Defaults (`/resellers/settings`). Slot rivenditore: System › Admin › License & updates (`/license`).

## Descrizione {#what-it-does}

Un **rivenditore** ottiene una copia brandizzata del portale clienti sul **proprio dominio**, con i propri clienti, portafoglio, prezzi e (facoltativamente) canali di pagamento. Acquista da te a prezzo all'ingrosso e vende al proprio prezzo. I suoi clienti non vedranno mai il tuo brand e il dominio del rivenditore non potrà mai aprire la tua console di amministrazione. Il rivenditore gestisce la propria attività dalla **console partner** all'indirizzo `https://partner.<your-domain>`.

## Requisiti {#requirements}

| Elemento | Requisito |
|---|---|
| Licenza | Uno **slot per dominio rivenditore** sulla tua licenza per ogni dominio rivenditore personalizzato. La pagina della licenza mostra `used/max` slot e un link per acquistarne altri. Senza uno slot libero, l'aggiunta di un dominio fallisce con l'errore "Out of license reseller domain slots". |
| DNS | Ogni dominio rivenditore deve essere puntato al tuo server (vedi sotto). |
| Server web e TLS | Il nome host deve raggiungere il pannello NexCMP tramite il tuo reverse proxy con un certificato valido per quel nome. |
| setItems("E-mail"), | SMTP configurato per le e-mail di invito e notifica. |
| Interruttore principale | **Reseller settings › General › `rs_enabled`** è attivo per impostazione predefinita. |

## Prepara l'infrastruttura {#prepare-the-infrastructure}

1. Decidi l'indirizzo pubblico del server: il suo indirizzo IPv4 e, se preferisci i CNAME, un nome host che punta ad esso (ad esempio `sites.cloud.example.com`).
2. Apri **Customers › Resellers › Defaults** (`/resellers/settings`), gruppo **Domains & SSL** e imposta:

   | Key | Significato |
   |---|---|
   | `rs_server_ipv4` | L'IPv4 pubblico a cui i record A dei rivenditori devono puntare. |
   | `rs_cname_target` | Il nome host a cui i record CNAME dei rivenditori devono puntare. |
   | `rs_master_hosts` | Nomi host che appartengono al tuo sito principale (non possono essere assegnati ai rivenditori). |
   | `rs_platform_domain` | Dominio padre opzionale per i **sottodomini della piattaforma** (ad esempio `partners.cloud.example.com` per assegnare ai rivenditori `acme.partners.cloud.example.com`). Se vuoto, disabilita l'opzione. |
   | `rs_sites_stale_minutes` | Minuti prima che il servizio di certificati venga considerato obsoleto (predefinito 15). |
   | `rs_ssl_fail_hours` | Ore di tentativi falliti prima che venga generato un errore (predefinito 48). |

   ::: warning Verifica questi valori prima di inviare le istruzioni
   `rs_server_ipv4`, `rs_cname_target` e `rs_master_hosts` contengono valori di esempio. Sostituiscili con il tuo server e dominio **prima** di fornire le istruzioni DNS a un rivenditore, altrimenti le istruzioni a schermo punteranno nel posto sbagliato.
   :::

3. Fai clic su **Save** (viene richiesto un motivo).
4. Assicurati che il tuo reverse proxy inoltri i nomi host dei rivenditori al pannello NexCMP e serva un certificato per Ognuno di essi. Il programma di installazione configura nginx e Let's Encrypt solo per il dominio principale (e i nomi `admin.` e `partner.` che si risolvono). Se usi Cloudflare, fai da proxy per il nome host e usa la modalità Full SSL.

## Collega in NexCMP {#connect-in-nexcmp}

### Crea il rivenditore {#create-the-reseller}

1. Apri **Customers › Resellers › List** e fai clic su **New reseller**. La procedura guidata prevede 8 passaggi e effettua il provisioning di tutto alla fine; ogni passaggio può essere ripetuto in sicurezza.

   | Passaggio | Compila |
   |---|---|
   | **Reseller** | Nome legale o commerciale, **slug** (4–31 caratteri a–z, 0–9 o `-`, che inizia con una lettera; è anche il prefisso della fattura), nome del contatto, e-mail e telefono, lingua predefinita, dati di fatturazione del rivenditore (come acquirente di ricariche del portafoglio). |
   | **Console account** | Nome utente, e-mail dell'account, nome completo; **Send a one-time invite link by e-mail** (valido 72 ore, consigliato) o mostra una password temporanea una sola volta. |
   | **Brand** | Nome del brand, nome breve, slogan, colori primari, e-mail e telefono di supporto, nome del venditore stampato sulle fatture dei clienti, loghi (sfondo chiaro e scuro), icona quadrata e favicon: PNG, JPEG, WEBP o ICO fino a 256 KB, **no SVG**. |
   | **Domini** | I domini del cliente con **anche www**, quale è primario, un **dominio di test** (sslip.io) e l'opzione **dry-run**, oppure un sottodominio della piattaforma. La procedura guidata mostra **DNS OK / DNS not ready** e i record da creare. |
   | **Prezzi e portafoglio** | Sconto all'ingrosso (%), soglia al dettaglio (% del listino), ricarico predefinito (%), limite di credito, saldo iniziale, avviso di saldo basso, limiti su clienti, VM e domini, funzioni del sito (registrazione clienti, protezione DDoS, ticket di supporto, piano personalizzato, ridimensionamento, Auto Scaling). |
   | **Canali di pagamento** | Chi riscuote i pagamenti dei clienti (vedi sotto) e la gestione opzionale di un conto PayPal proprio o di un bonifico bancario vietnamita. |
   | **Email** | Nome del mittente e Reply-To. L'indirizzo From rimane quello della piattaforma finché non viene configurato il DKIM per il dominio del rivenditore. |
   | **Riepilogo** | Controlla tutto e fai clic su **Provision everything**, oppure **Save draft (provision later)**. |

2. Il provisioning continua in background (ogni 30 secondi). Apri il rivenditore per visualizzare i progressi e usa **Continue provisioning** o **Retry** se un passaggio non è riuscito.

![Procedura guidata per il nuovo rivenditore al primo passaggio con valori di esempio](https://nexcmp.com/it/docs/images/customers/resellers-01-wizard.webp)

### Puntare i DNS (il rivenditore esegue questa operazione) {#point-dns-the-reseller-does-this}

Il rivenditore (o tu) crea i record indicati nella scheda **Domains & SSL**:

| Record | Name | Valore |
|---|---|---|
| TXT (proprietà, solo la prima volta) | `_site-verify.<domain>` | `sv=<token>` mostrato a schermo |
| A (dominio principale come `shop.example.net`) | il dominio | il tuo `rs_server_ipv4` |
| CNAME (sottodominio come `cloud.example.net`) | il dominio | il tuo `rs_cname_target` (o un record A verso `rs_server_ipv4`) |
| CNAME (opzionale) | `www.<domain>` | il tuo `rs_cname_target` |

Inoltre:

- Rimuovi qualsiasi record **AAAA** (IPv6) a meno che il tuo server non risponda su quell'indirizzo IPv6.
- Disattiva il proxy CDN (**off**, nuvola grigia) mentre il dominio viene verificato.
- Se il dominio dispone di record **CAA**, consenti `letsencrypt.org`.

Il token nel record TXT è diverso per ogni dominio; copialo dallo schermo. Il sistema verifica nuovamente i DNS ogni 5 minuti per le prime 48 ore, poi ogni ora, e rilascia un nome il cui record TXT risulta ancora mancante dopo 72 ore.

### Stati dei domini {#domain-states}

In **Customers › Resellers › Domains & SSL** (tutti i rivenditori) e nella scheda **Domains & SSL** di un rivenditore:

| Stato | Significato |
|---|---|
| `pending_verify` | In attesa del record TXT. |
| `pending_dns` / `verifying` | In attesa che il record A o CNAME punti a te. |
| `issuing` | Certificato in fase di emissione. |
| `active` | In corso di erogazione del sito del rivenditore. |
| `cert_expiring` | Certificato prossimo alla scadenza; rinnovo previsto. |
| `dns_lost` | I DNS hanno smesso di puntare a te; dopo 30 giorni il dominio viene rimosso. |
| `error` | Visualizza il codice di errore; **Retry** dopo la correzione. |
| `removing` / `removed` | In fase di rimozione; lo slot di licenza viene restituito. |

Azioni riga: **Check now**, **Retry**, **Make primary**, **Test mode** (per un dominio di test), **Remove**.


## Permessi e listino all'ingrosso {#permissions-wholesale}

**Customers › Resellers › Permissions & wholesale** (`/resellers/entitlements`) è una matrice: una riga per rivenditore, con **discount** e **markup** all'ingrosso e un interruttore per servizio (ad esempio DDoS Shield e VPN). Un interruttore è modificabile quando la funzione a livello di piattaforma è attiva; altrimenti la cella è di sola lettura e rimanda all'impostazione. La scheda secondaria **Top-up codes** definisce quanti codici ogni rivenditore può emettere al mese (vedi [Promotions](https://nexcmp.com/it/docs/billing/promotions/)).

Regole di prezzo:

- Prezzo all'ingrosso = prezzo di listino x (1 - discount), e può essere sovrascritto per piano e per ciclo di fatturazione nella scheda **Wholesale pricing** del rivenditore.
- Il rivenditore stabilisce i prezzi al dettaglio e non può scendere sotto la **floor** (percentuale del listino).
- Il **wallet** del rivenditore paga il prezzo all'ingrosso quando i suoi clienti acquistano. Il wallet ha un limite di credito, un periodo di tolleranza e un tetto di scoperto (vedi Defaults).

## Defaults {#defaults}

**Customers › Resellers › Defaults** (`/resellers/settings`) sono le `rs_*` chiavi applicate a ogni rivenditore. Ogni modifica richiede una motivazione e viene registrata.

| Group | Key | Predefinito | Significato |
|---|---|---|---|
| General | `rs_enabled` | 1 | Programma rivenditori attivo. |
| | `rs_platform_collect_enabled` | 0 | Consente alla piattaforma di riscuotere i pagamenti dei clienti per conto dei rivenditori. **Abilitare solo dopo una revisione legale.** |
| | `rs_totp_required` | 1 | Gli account della console rivenditore devono utilizzare l'autenticazione a due fattori. |
| | `rs_agreement_version` | 1 | Versione dell'accordo di rivendita che devono accettare. |
| Default pricing | `rs_default_discount_bp` | 2000 (20 %) | Sconto all'ingrosso per i nuovi rivenditori (punti base, da 0 a 9000). |
| | `rs_default_markup_bp` | 2500 (25 %) | Markup predefinito (da 0 a 50000). |
| | `rs_default_floor_bp` | 9000 (90 %) | Soglia minima al dettaglio (da 0 a 20000). |
| | `rs_default_max_domains` | 3 | Domini consentiti per rivenditore. |
| Wallet and payouts | `rs_grace_hours` | 72 | Periodo di tolleranza prima che i servizi dei clienti siano influenzati da un wallet rivenditore vuoto. |
| | `rs_overdraft_cap_cents` | 5000 | Scoperto consentito sul wallet. |
| | `rs_retention_days` | 14 | Giorni prima che le VM di un rivenditore chiuso vengano eliminate. |
| | `rs_payout_hold_days` | 30 | Giorni in cui una commissione viene trattenuta prima di poter essere prelevata. |
| | `rs_payout_min_cents` | 5000 | Prelievo minimo. |
| | `rs_topup_min_cents` | 2000 | Ricarica minima del wallet da parte di un rivenditore. |
| Payments and mail | `rs_webhook_base` | empty | URL di base pubblico per i webhook dei gateway rivenditore (vuoto = usa l'URL del sito). |
| | `rs_mail_from` | empty | Indirizzo From per le e-mail dei rivenditori. |
| | `rs_invoice_show_processor` | 1 | Mostra il processore di pagamento sulle fatture. |
| | `rs_gw_stripe_enabled`, `rs_gw_usdt_enabled` | 1 | Indica se i rivenditori possono configurare il proprio Stripe o USDT. |

## Chi riscuote i pagamenti dei clienti {#who-collects-customer-payments}

| Modalità | Significato |
|---|---|
| **Reseller collects (own channels)** — predefinito | Il rivenditore collega il proprio account Stripe, PayPal, USDT o bancario. I suoi webhook sono `https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>`. Le carte salvate e l'[auto top-up](https://nexcmp.com/it/docs/billing/auto-top-up/) non sono disponibili per questi siti. |
| **Platform collects** | I tuoi canali vengono mostrati sul sito del rivenditore. Bloccato fino a `rs_platform_collect_enabled = 1`. |
| **Mixed** | Una combinazione scelta per canale. |

## Cosa vede il rivenditore {#what-the-reseller-sees}

La console partner all'indirizzo `https://partner.<your-domain>` include Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet e Payment channels. Gli account della console hanno il ruolo *reseller* (completo) o *staff* (sola lettura). Per visualizzarla tu stesso, apri il rivenditore e clicca su **Sign in to partner console**: accederai per 60 minuti, ogni scrittura sarà registrata con il tuo nome sia nel registro amministrativo sia in quello del rivenditore e le operazioni finanziarie richiederanno una seconda conferma.

## Verifica {#verify}

1. Dopo il provisioning, la riga del rivenditore mostra *active* e una colonna **Provisioning** verde.
2. Apri il dominio del rivenditore in un browser: compare la pagina di accesso del rivenditore con il suo marchio. `https://<reseller-domain>/admin` risponde 404.
3. Registra un cliente di prova su quel dominio: il cliente compare sotto **Customers › List** con il rivenditore nella colonna **Site**.
4. La pagina della licenza mostra uno slot utilizzato in più.

## Limiti e note {#limits-notes}

- Uno slot di licenza per ogni dominio personalizzato o di prova; i sottodomini della piattaforma non consumano alcuno slot.
- La sospensione di un rivenditore mantiene i dati; **Close reseller** restituisce tutti gli slot di dominio e la distruzione delle VM è consentita solo dopo il periodo di conservazione.
- I clienti dei rivenditori compaiono nel tuo elenco clienti e possono essere impersonati come qualsiasi altro (il link si apre sul dominio del rivenditore).
- I rivenditori non possono vedere o modificare i tuoi canali di pagamento, le quote predefinite o altri rivenditori.

## Troubleshooting {#troubleshooting}

| Sintomo | Causa | Soluzione |
|---|---|---|
| "Slot di dominio rivenditore esauriti" | All slots used | Libera uno slot (rimuovi un dominio) o acquistane altri nella pagina della licenza. |
| Domain stuck in `pending_verify` | TXT record missing | Crea il record TXT esattamente come mostrato; usa **Check now**. |
| Domain stuck in `pending_dns` | A/CNAME non puntato correttamente, record AAAA o proxy CDN attivo | Correggi il DNS, disattiva il proxy, quindi **Check now**. |
| `error` state | Vedi il codice nella riga (ad esempio CAA che blocca Let's Encrypt, limite di richieste) | Correggi e fai clic su **Retry**. |
| Il browser indica che l'host è sconosciuto o "421" | Il nome host non è presente nella licenza o non è instradato verso il pannello | Aggiungi il dominio tramite il rivenditore (consuma uno slot) e correggi il reverse proxy. |
| Le istruzioni mostrano un IP o un host errato | `rs_server_ipv4` / `rs_cname_target` contengono ancora i valori di esempio | Set them in Defaults. |
| Il rivenditore non può abilitare la riscossione della piattaforma | Locked | Imposta `rs_platform_collect_enabled` dopo una revisione legale. |


