Revendedores (marca blanca)
Ubicación en el panel de administración: Customers › Resellers › List (
/resellers), Domains & SSL (/resellers/domains), Permissions & wholesale (/resellers/entitlements), Defaults (/resellers/settings). Slots de revendedor: System › Admin › License & updates (/license).
Qué hace
Un revendedor obtiene una copia personalizada con su marca del portal de clientes en su propio dominio, con sus propios clientes, billetera, precios y (opcionalmente) canales de pago. Le compra a usted a precio mayorista y vende a su propio precio. Sus clientes nunca ven su marca y el dominio del revendedor nunca puede abrir su consola de administración. El revendedor gestiona su negocio desde la consola de partners en https://partner.<your-domain>.
Requisitos
| Elemento | Requisito |
|---|---|
| Licencia | Un slot de dominio de revendedor en su licencia por cada dominio personalizado de revendedor. La página de licencia muestra used/max slots y un enlace para comprar más. Sin un slot libre, añadir un dominio falla con «Out of license reseller domain slots». |
| DNS | Cada dominio de revendedor debe apuntar a su servidor (consulte más abajo). |
| Servidor web y TLS | El nombre de host debe llegar al panel de NexCMP a través de su proxy inverso con un certificado válido para dicho nombre. |
| Correo electrónico | SMTP configurado para los correos electrónicos de invitación y notificación. |
| Interruptor principal | Reseller settings › General › rs_enabled está activado por defecto. |
Preparar la infraestructura
Determine la dirección pública del servidor: su dirección IPv4 y, si prefiere CNAME, un nombre de host que apunte a ella (por ejemplo
sites.cloud.example.com).Abra Customers › Resellers › Defaults (
/resellers/settings), grupo Domains & SSL, y configure:Clave Significado rs_server_ipv4La IPv4 pública a la que deben apuntar los registros A de los revendedores. rs_cname_targetEl nombre de host al que deben apuntar los registros CNAME de los revendedores. rs_master_hostsNombres de host que pertenecen a su propio sitio principal (no se pueden asignar a revendedores). rs_platform_domainDominio principal opcional para subdominios de la plataforma (por ejemplo partners.cloud.example.compara dar a los revendedoresacme.partners.cloud.example.com). Dejarlo vacío deshabilita la opción.rs_sites_stale_minutesMinutos antes de que el servicio de certificados se considere desactualizado (por defecto 15). rs_ssl_fail_hoursHoras de intentos fallidos antes de generar un error (por defecto 48). Compruebe estos valores antes de enviar instrucciones
rs_server_ipv4,rs_cname_targetyrs_master_hostsse proporcionan con valores de ejemplo. Reemplácelos con su propio servidor y dominio antes de dar instrucciones de DNS a un revendedor; de lo contrario, las instrucciones en pantalla apuntarán al lugar equivocado.Haga clic en Save (se solicita un motivo).
Asegúrese de que su proxy inverso reenvíe los nombres de host del revendedor al panel de NexCMP y sirva un certificado para cada uno de ellos. El instalador configura nginx y Let's Encrypt solo para el dominio principal (y los nombres
admin.ypartner.que resuelvan). Si utiliza Cloudflare, aplique proxy al nombre de host y utilice el modo Full SSL.
Conectar en NexCMP
Crear el revendedor
Abra Customers › Resellers › List y haga clic en New reseller. El asistente consta de 8 pasos y aprovisiona todo al final; cada paso se puede reintentar de forma segura.
Paso Datos a completar Reseller Nombre legal o comercial, slug (4–31 caracteres de a–z, 0–9 o -, que comience con una letra; también es el prefijo de factura), nombre de contacto, correo electrónico y teléfono, idioma predeterminado, datos de facturación del revendedor (como comprador de recargas de billetera).Console account Nombre de usuario, correo electrónico de la cuenta, nombre completo; Send a one-time invite link by e-mail (válido 72 horas, recomendado) o mostrar una contraseña temporal una sola vez. Brand Nombre de marca, nombre corto, eslóganes, colores primarios, correo electrónico y teléfono de soporte, nombre del vendedor impreso en las facturas de clientes, logotipos (fondo claro y oscuro), isotipo cuadrado y favicon: PNG, JPEG, WEBP o ICO de hasta 256 KB, no SVG. Dominios El dominio o dominios del cliente con también www, cuál es el principal, un dominio de prueba (sslip.io) y la opción dry-run, o un subdominio de la plataforma. El asistente muestra DNS OK / DNS no listo y los registros que se deben crear. Precios y monedero Descuento mayorista (%), precio mínimo minorista (% de lista), margen predeterminado (%), límite de crédito, saldo inicial, alerta de saldo bajo, límites de clientes, VM y dominios, funciones del sitio (registro de clientes, protección DDoS, tickets de soporte, plan personalizado, cambio de tamaño, Auto Scaling). Canales de pago Quién cobra los pagos de los clientes (ver más abajo) y, opcionalmente, PayPal propio y transferencia bancaria propia de VN. Email Nombre del remitente y Reply-To. La dirección From se mantiene como la dirección de la plataforma hasta que se configure DKIM para el dominio del distribuidor. Revisión Revise todo y haga clic en Provision everything o en Guardar borrador (aprovisionar más tarde). El aprovisionamiento continúa en segundo plano (cada 30 segundos). Abra el distribuidor para ver el progreso y use Continue provisioning o Retry si un paso falló.

Apuntar el DNS (lo realiza el distribuidor)
El distribuidor (o usted) crea los registros que se muestran en la pestaña Domains & SSL:
| Registro | Nombre | Valor |
|---|---|---|
| TXT (propiedad, solo la primera vez) | _site-verify.<domain> | sv=<token> que se muestra en pantalla |
A (dominio raíz como shop.example.net) | el dominio | su rs_server_ipv4 |
CNAME (subdominio como cloud.example.net) | el dominio | su rs_cname_target (o un registro A a rs_server_ipv4) |
| CNAME (opcional) | www.<domain> | su rs_cname_target |
Además:
- Elimine cualquier registro AAAA (IPv6) a menos que su servidor responda en esa dirección IPv6.
- Desactive el proxy de CDN (desactivado, nube gris) mientras se verifica el dominio.
- Si el dominio tiene registros CAA, permita
letsencrypt.org.
El token del registro TXT es diferente para cada dominio; cópielo de la pantalla. El sistema vuelve a comprobar el DNS cada 5 minutos durante las primeras 48 horas, luego cada hora, y libera cualquier nombre cuyo registro TXT siga faltando después de 72 horas.
Estados del dominio
En Customers › Resellers › Domains & SSL (todos los distribuidores) y en la pestaña Domains & SSL de un distribuidor:
| Estado | Significado |
|---|---|
pending_verify | Esperando el registro TXT. |
pending_dns / verifying | Esperando que el registro A o CNAME apunte a usted. |
issuing | Certificado en proceso de emisión. |
active | Sirviendo el sitio del distribuidor. |
cert_expiring | Certificado próximo a caducar; renovación prevista. |
dns_lost | El DNS dejó de apuntar a usted; después de 30 días, el dominio se elimina. |
error | Consulte el código de error; use Retry tras corregirlo. |
removing / removed | En proceso de eliminación; se devuelve el espacio de la licencia. |
Acciones de fila: Check now, Retry, Establecer como principal, Test mode (para un dominio de prueba), Remove.
Permisos y venta mayorista
Customers › Resellers › Permissions & wholesale (/resellers/entitlements) es una matriz: una fila por revendedor, con el descuento mayorista y el margen, y un conmutador por servicio (por ejemplo, DDoS Shield y VPN). Un conmutador es editable cuando la función a nivel de plataforma está activada; de lo contrario, la celda es de solo lectura y enlaza con la configuración. La subpestaña Top-up codes establece cuántos códigos puede emitir cada revendedor al mes (consulte Promotions).
Reglas de precios:
- Precio mayorista = precio de lista x (1 - descuento), y se puede anular por plan y por ciclo de facturación en la pestaña Wholesale pricing del revendedor.
- El revendedor establece los precios minoristas y no puede bajar del precio mínimo (porcentaje del precio de lista).
- El wallet del revendedor paga el precio mayorista cuando sus clientes compran. El wallet tiene un límite de crédito, un período de gracia y un tope de sobregiro (consulte Defaults).
Valores predeterminados
Customers › Resellers › Defaults (/resellers/settings) son las claves rs_* que se aplican a cada revendedor. Cada cambio solicita un motivo y queda auditado.
| Grupo | Clave | Predeterminado | Significado |
|---|---|---|---|
| General | rs_enabled | 1 | Programa de revendedores activado. |
rs_platform_collect_enabled | 0 | Permite que la plataforma cobre los pagos de los clientes para los revendedores. Activar únicamente tras una revisión legal. | |
rs_totp_required | 1 | Las cuentas de la consola del revendedor deben usar autenticación de dos factores. | |
rs_agreement_version | 1 | Versión del acuerdo de revendedor que deben aceptar. | |
| Precios predeterminados | rs_default_discount_bp | 2000 (20 %) | Descuento mayorista para nuevos revendedores (puntos básicos, de 0 a 9000). |
rs_default_markup_bp | 2500 (25 %) | Margen predeterminado (de 0 a 50000). | |
rs_default_floor_bp | 9000 (90 %) | Precio mínimo minorista (de 0 a 20000). | |
rs_default_max_domains | 3 | Dominios permitidos por revendedor. | |
| Wallet y liquidaciones | rs_grace_hours | 72 | Período de gracia antes de que los servicios de los clientes se vean afectados por un wallet de revendedor vacío. |
rs_overdraft_cap_cents | 5000 | Sobregiro permitido en el wallet. | |
rs_retention_days | 14 | Días antes de que se destruyan las VM de un revendedor cerrado. | |
rs_payout_hold_days | 30 | Días que se retiene una comisión antes de poder retirarla. | |
rs_payout_min_cents | 5000 | Retiro mínimo. | |
rs_topup_min_cents | 2000 | Recarga mínima de wallet por parte de un revendedor. | |
| Pagos y correo | rs_webhook_base | vacío | URL base pública para los webhooks de pasarela del revendedor (vacío = usar la URL del sitio). |
rs_mail_from | vacío | Dirección de remitente para los correos electrónicos del revendedor. | |
rs_invoice_show_processor | 1 | Mostrar el procesador de pagos en las facturas. | |
rs_gw_stripe_enabled, rs_gw_usdt_enabled | 1 | Indica si los revendedores pueden configurar su propio Stripe o USDT. |
Quién cobra los pagos de los clientes
| Modo | Significado |
|---|---|
| El revendedor cobra (canales propios) — predeterminado | El revendedor conecta su propio Stripe, PayPal, USDT o cuenta bancaria. Sus webhooks son https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>. Las tarjetas guardadas y auto top-up no están disponibles para estos sitios. |
| La plataforma cobra | Sus canales se muestran en el sitio del revendedor. Bloqueado hasta rs_platform_collect_enabled = 1. |
| Mixto | Una combinación elegida por canal. |
Qué ve el revendedor
La consola de socios en https://partner.<your-domain> incluye Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet y Payment channels. Las cuentas de la consola tienen el rol reseller (completo) o staff (solo lectura). Para comprobarlo usted mismo, abra el revendedor y haga clic en Sign in to partner console: accederá durante 60 minutos, cada operación de escritura se registrará con su nombre tanto en el registro de administración como en el del revendedor, y las operaciones monetarias requerirán una segunda confirmación.
Verificación
- Tras el aprovisionamiento, la fila del revendedor en la lista muestra active y una columna Provisioning en verde.
- Abra el dominio del revendedor en un navegador: aparecerá su propia página de inicio de sesión con su marca.
https://<reseller-domain>/adminresponde 404. - Registre un cliente de prueba en ese dominio: el cliente aparecerá en Customers › List con el revendedor en la columna Site.
- La página de licencias muestra un slot más en uso.
Límites y notas
- Un slot de licencia por dominio personalizado o de prueba; los subdominios de la plataforma no consumen un slot.
- Suspender a un revendedor conserva los datos; Close reseller libera todos los slots de dominio, y la destrucción de VM solo se permite tras el periodo de retención.
- Los clientes del revendedor aparecen en su lista de clientes y se puede iniciar sesión en su nombre igual que con cualquier otro (el enlace se abre en el dominio del revendedor).
- Los revendedores no pueden ver ni modificar sus canales de pago, los valores predeterminados de cuotas ni a otros revendedores.
Resolución de problemas
| Síntoma | Causa | Solución |
|---|---|---|
| "Sin cupos de dominios de revendedor en la licencia" | Todos los slots están en uso | Libere un slot (elimine un dominio) o compre más en la página de licencias. |
Dominio bloqueado en pending_verify | Falta el registro TXT | Cree el registro TXT exactamente como se indica; use Check now. |
Dominio bloqueado en pending_dns | El registro A/CNAME no apunta a usted, hay un registro AAAA o el proxy CDN está activado | Corrija los DNS, desactive el proxy y haga clic en Check now. |
Estado error | Consulte el código en la fila (por ejemplo, CAA bloqueando Let's Encrypt, límite de tasa) | Corrija el problema y haga clic en Retry. |
| El navegador indica que el host es desconocido o muestra "421" | El nombre de host no está en la licencia o no está enrutado hacia el panel | Añada el dominio mediante el revendedor (consume un slot) y corrija el proxy inverso. |
| Las instrucciones muestran una IP o host incorrecto | rs_server_ipv4 / rs_cname_target aún tienen los valores de ejemplo | Configúrelos en Defaults. |
| El revendedor no puede habilitar el cobro a través de la plataforma | Bloqueado | Configure rs_platform_collect_enabled tras la revisión legal. |