---
title: Реселлеры (white-label)
description: Дайте партнерам продавать облако под своим брендом и доменом: создание реселлеров, настройка доменов, DNS, оптовых цен, параметров и слотов лицензий.
url: https://nexcmp.com/ru/docs/customers/resellers/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

# Реселлеры (white-label) {#resellers-white-label}

> **Где в панели управления:** Customers › Resellers › List (`/resellers`), Domains & SSL (`/resellers/domains`), Permissions & wholesale (`/resellers/entitlements`), Defaults (`/resellers/settings`). Слоты реселлеров: System › Admin › License & updates (`/license`).

## Назначение {#what-it-does}

**Реселлер** получает брендированную копию клиентского портала на **собственном домене**, с собственной клиентской базой, балансом, тарифами и (опционально) платежными шлюзами. Он покупает у вас по оптовой цене и продает по своей. Его клиенты не видят ваш бренд, а с домена реселлера невозможно открыть вашу консоль администратора. Реселлер ведет бизнес через **партнерскую консоль** по адресу `https://partner.<your-domain>`.

## Требования {#requirements}

| Параметр | Требование |
|---|---|
| Лицензия | Один **слот реселлерского домена** в лицензии на каждый собственный домен реселлера. На странице лицензии отображается количество слотов `used/max` и ссылка для покупки дополнительных. При отсутствии свободного слота добавление домена завершается ошибкой "Out of license reseller domain slots". |
| DNS | Каждый реселлерский домен должен быть направлен на ваш сервер (см. ниже). |
| Веб-сервер и TLS | Имя хоста должно направляться на панель NexCMP через ваш reverse proxy с действующим сертификатом для этого имени. |
| E-mail | SMTP, настроенный для отправки писем с приглашениями и уведомлениями. |
| Главный переключатель | **Reseller settings › General › `rs_enabled`** включен по умолчанию. |

## Подготовка инфраструктуры {#prepare-the-infrastructure}

1. Определите публичный адрес сервера: его IPv4-адрес и, если вы предпочитаете CNAME, имя хоста, указывающее на него (например, `sites.cloud.example.com`).
2. Откройте **Customers › Resellers › Defaults** (`/resellers/settings`), блок **Domains & SSL**, и укажите:

   | Ключ | Значение |
   |---|---|
   | `rs_server_ipv4` | Публичный IPv4, на который должны указывать A-записи реселлеров. |
   | `rs_cname_target` | Имя хоста, на которое должны указывать CNAME-записи реселлеров. |
   | `rs_master_hosts` | Имена хостов, принадлежащие вашему основному сайту (их нельзя передавать реселлерам). |
   | `rs_platform_domain` | Необязательный родительский домен для **поддоменов платформы** (например, `partners.cloud.example.com`, чтобы предоставлять реселлерам `acme.partners.cloud.example.com`). Пустое поле отключает опцию. |
   | `rs_sites_stale_minutes` | Количество минут, по истечении которых служба сертификатов считается устаревшей (по умолчанию 15). |
   | `rs_ssl_fail_hours` | Количество часов неудачных попыток до регистрации ошибки (по умолчанию 48). |

   ::: warning Проверьте эти значения перед отправкой инструкций
   Параметры `rs_server_ipv4`, `rs_cname_target` и `rs_master_hosts` содержат демонстрационные значения. Замените их на данные вашего сервера и домена **до того**, как предоставите DNS-инструкции реселлеру, иначе инструкции на экране будут указывать на неверный адрес.
   :::

3. Нажмите **Save** (потребуется указать причину).
4. Убедитесь, что ваш reverse proxy перенаправляет имена хостов реселлера на панель NexCMP и отдает сертификат для каждого из них. Установщик настраивает nginx и Let's Encrypt только для основного домена (и имен `admin.` и `partner.`, которые резолвятся). Если используется Cloudflare, включите проксирование имени хоста и режим Full SSL.

## Подключение в NexCMP {#connect-in-nexcmp}

### Создание реселлера {#create-the-reseller}

1. Откройте **Customers › Resellers › List** и нажмите **New reseller**. Мастер состоит из 8 шагов и инициализирует все настройки в конце; любой шаг можно безопасно повторить.

   | Шаг | Заполняемые данные |
   |---|---|
   | **Reseller** | Юридическое или коммерческое наименование, **slug** (от 4 до 31 символов a–z, 0–9 или `-`, начинается с буквы; также служит префиксом инвойсов), контактное лицо, e-mail и телефон, язык по умолчанию, платежные реквизиты реселлера (как покупателя пополнений баланса). |
   | **Console account** | Имя пользователя, e-mail учетной записи, ФИО; выберите **Send a one-time invite link by e-mail** (действует 72 часа, рекомендуется) или покажите временный пароль один раз. |
   | **Brand** | Название бренда, краткое наименование, слоганы, основные цвета, e-mail и телефон службы поддержки, имя продавца в инвойсах клиентов, логотипы (для светлого и темного фона), квадратный значок и favicon: PNG, JPEG, WEBP или ICO размером до 256 КБ, **без SVG**. |
   | **Domains** | Домен(ы) клиента с **also www**, выбор основного, **test domain** (sslip.io) и опция **dry-run** либо поддомен платформы. Мастер отображает **DNS OK / DNS not ready** и записи, которые необходимо создать. |
   | **Pricing & wallet** | Оптовая скидка (%), минимальная розничная цена (% от каталожной), наценка по умолчанию (%), кредитный лимит, начальный баланс, оповещение о низком балансе, лимиты на клиентов, ВМ и домены, функции сайта (регистрация клиентов, защита от DDoS, тикеты поддержки, индивидуальный тариф, изменение размера, Auto Scaling). |
   | **Payment channels** | Кто принимает платежи клиентов (см. ниже), а также подключение собственного PayPal и банковского перевода VN (опционально). |
   | **Email** | Имя отправителя и Reply-To. Адрес From остается адресом платформы до тех пор, пока для домена реселлера не будет настроен DKIM. |
   | **Review** | Проверьте все параметры и нажмите **Provision everything** или **Save draft (provision later)**. |

2. Подготовка продолжается в фоновом режиме (каждые 30 секунд). Откройте реселлера, чтобы отслеживать прогресс, и используйте **Continue provisioning** или **Retry**, если какой-либо шаг завершился с ошибкой.

![Мастер добавления реселлера на первом шаге с примерами значений](https://nexcmp.com/ru/docs/images/customers/resellers-01-wizard.webp)

### Направление DNS (выполняется реселлером) {#point-dns-the-reseller-does-this}

Реселлер (или вы) создает записи, указанные на вкладке **Domains & SSL**:

| Запись | Name | Значение |
|---|---|---|
| TXT (подтверждение владения, только в первый раз) | `_site-verify.<domain>` | `sv=<token>`, указанное на экране |
| A (apex-домен, например `shop.example.net`) | домен | ваш `rs_server_ipv4` |
| CNAME (поддомен, например `cloud.example.net`) | домен | ваш `rs_cname_target` (или A-запись на `rs_server_ipv4`) |
| CNAME (опционально) | `www.<domain>` | ваш `rs_cname_target` |

Также:

- Удалите любые записи **AAAA** (IPv6), если только ваш сервер не отвечает по этому IPv6-адресу.
- Отключите CDN-прокси (**off**, серое облако) на время проверки домена.
- Если у домена настроены записи **CAA**, разрешите `letsencrypt.org`.

Токен в TXT-записи уникален для каждого домена; скопируйте его с экрана. Система повторно проверяет DNS каждые 5 минут в течение первых 48 часов, затем каждый час, и освобождает имя, для которого TXT-запись так и не появилась спустя 72 часа.

### Статусы доменов {#domain-states}

В разделе **Customers › Resellers › Domains & SSL** (все реселлеры) и на вкладке реселлера **Domains & SSL**:

| Состояние | Значение |
|---|---|
| `pending_verify` | Ожидание TXT-записи. |
| `pending_dns` / `verifying` | Ожидание направления A или CNAME на вас. |
| `issuing` | Выпуск сертификата. |
| `active` | Обслуживает сайт реселлера. |
| `cert_expiring` | Срок действия сертификата подходит к концу; ожидается продление. |
| `dns_lost` | DNS больше не указывает на вас; через 30 дней домен будет удален. |
| `error` | См. код ошибки; нажмите **Retry** после устранения проблемы. |
| `removing` / `removed` | Удаляется; слот лицензии освобождается. |

Действия в строке: **Check now**, **Retry**, **Make primary**, **Test mode** (для тестового домена), **Remove**.


## Права доступа и оптовые цены {#permissions-wholesale}

**Customers › Resellers › Permissions & wholesale** (`/resellers/entitlements`) представляет собой матрицу: по одной строке на реселлера с оптовой **скидкой** и **наценкой**, а также переключатели для каждой услуги (например, DDoS Shield и VPN). Переключатель доступен для редактирования, если функция включена на уровне платформы; иначе ячейка доступна только для чтения и ведет к соответствующей настройке. На вкладке **Top-up codes** задается количество кодов пополнения, которое реселлер может выпускать в месяц (см. [Promotions](https://nexcmp.com/ru/docs/billing/promotions/)).

Правила ценообразования:

- Оптовая цена = базовая цена x (1 - скидка); ее можно переопределить для каждого тарифа и расчетного периода на вкладке реселлера **Wholesale pricing**.
- Реселлер сам устанавливает розничные цены, но не может опускаться ниже минимального порога (**floor**, процент от базовой цены).
- С **кошелька** реселлера списывается оптовая цена при покупках его клиентов. Для кошелька действуют кредитный лимит, льготный период и лимит овердрафта (см. Defaults).

## Defaults {#defaults}

В разделе **Customers › Resellers › Defaults** (`/resellers/settings`) находятся ключи `rs_*`, применяемые ко всем реселлерам. При каждом изменении запрашивается причина, и действие фиксируется в аудите.

| Группа | Ключ | По умолчанию | Значение |
|---|---|---|---|
| Общие | `rs_enabled` | 1 | Реселлерская программа включена. |
| | `rs_platform_collect_enabled` | 0 | Разрешает платформе принимать платежи клиентов в пользу реселлеров. **Включайте только после юридической проверки.** |
| | `rs_totp_required` | 1 | Учетные записи консоли реселлера должны использовать двухфакторную аутентификацию. |
| | `rs_agreement_version` | 1 | Версия партнерского соглашения, которую реселлеры обязаны принять. |
| Цены по умолчанию | `rs_default_discount_bp` | 2000 (20 %) | Оптовая скидка для новых реселлеров (в базисных пунктах, от 0 до 9000). |
| | `rs_default_markup_bp` | 2500 (25 %) | Наценка по умолчанию (от 0 до 50000). |
| | `rs_default_floor_bp` | 9000 (90 %) | Минимальный порог розничной цены (от 0 до 20000). |
| | `rs_default_max_domains` | 3 | Допустимое количество доменов на одного реселлера. |
| Кошелек и выплаты | `rs_grace_hours` | 72 | Льготный период до приостановки услуг клиентов при нулевом балансе реселлера. |
| | `rs_overdraft_cap_cents` | 5000 | Разрешенный овердрафт по кошельку. |
| | `rs_retention_days` | 14 | Количество дней до удаления VM закрытого реселлера. |
| | `rs_payout_hold_days` | 30 | Срок удержания комиссии (в днях) перед выводом средств. |
| | `rs_payout_min_cents` | 5000 | Минимальная сумма вывода. |
| | `rs_topup_min_cents` | 2000 | Минимальная сумма пополнения кошелька реселлером. |
| Платежи и почта | `rs_webhook_base` | пусто | Публичный базовый URL для вебхуков шлюзов реселлера (если пусто — используется URL сайта). |
| | `rs_mail_from` | пусто | Адрес отправителя (From) для писем реселлера. |
| | `rs_invoice_show_processor` | 1 | Отображать платежный шлюз в счетах. |
| | `rs_gw_stripe_enabled`, `rs_gw_usdt_enabled` | 1 | Разрешено ли реселлерам подключать собственные аккаунты Stripe или USDT. |

## Кто принимает платежи клиентов {#who-collects-customer-payments}

| Режим | Значение |
|---|---|
| **Принимает реселлер (собственные каналы)** — по умолчанию | Реселлер подключает собственный аккаунт Stripe, PayPal, USDT или банковский счет. Его вебхуки: `https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>`. Сохраненные карты и [auto top-up](https://nexcmp.com/ru/docs/billing/auto-top-up/) для таких сайтов недоступны. |
| **Принимает платформа** | На сайте реселлера отображаются ваши каналы оплаты. Заблокировано до `rs_platform_collect_enabled = 1`. |
| **Смешанный режим** | Комбинация, настраиваемая отдельно для каждого канала. |

## Что видит реселлер {#what-the-reseller-sees}

В консоли партнера по адресу `https://partner.<your-domain>` доступны разделы Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet и Payment channels. Пользователи консоли получают роль *reseller* (полный доступ) или *staff* (только чтение). Чтобы войти в нее самостоятельно, откройте карточку реселлера и нажмите **Sign in to partner console**: сессия действует 60 минут, каждая операция записи логируется с вашим именем в журнале администратора и реселлера, а финансовые операции требуют повторного подтверждения.

## Проверка {#verify}

1. После развертывания в строке реселлера в списке отображается *active* и зеленый столбец **Provisioning**.
2. Откройте домен реселлера в браузере: появится собственная страница входа реселлера с его брендингом. `https://<reseller-domain>/admin` возвращает 404.
3. Зарегистрируйте тестового клиента на этом домене: клиент появится в разделе **Customers › List** с указанием реселлера в столбце **Site**.
4. На странице лицензии отображается еще один занятый слот.

## Ограничения и примечания {#limits-notes}

- Один слот лицензии на каждый собственный или тестовый домен; поддомены платформы не занимают слоты.
- Приостановка реселлера сохраняет данные; действие **Close reseller** освобождает все слоты доменов, а удаление VM разрешено только после истечения срока хранения.
- Клиенты реселлера отображаются в общем списке клиентов; войти под их учетной записью можно как обычно (ссылка откроется на домене реселлера).
- Реселлеры не могут просматривать или изменять ваши платежные каналы, значения квот по умолчанию и других реселлеров.

## Устранение неполадок {#troubleshooting}

| Симптом | Причина | Решение |
|---|---|---|
| «Исчерпаны слоты доменов реселлера по лицензии» | Все слоты заняты | Освободите слот (удалите домен) или приобретите дополнительные слоты на странице лицензии. |
| Домен завис в статусе `pending_verify` | Отсутствует TXT-запись | Создайте TXT-запись точно так, как указано; нажмите **Check now**. |
| Домен завис в статусе `pending_dns` | Запись A/CNAME указывает не на вас, присутствует AAAA-запись либо включено проксирование CDN | Исправьте DNS, отключите проксирование, затем нажмите **Check now**. |
| Состояние `error` | См. код в строке (например, CAA блокирует Let's Encrypt, превышен лимит запросов) | Исправьте проблему и нажмите **Retry**. |
| В браузере отображается ошибка неизвестного хоста или «421» | Имя хоста не включено в лицензию или не маршрутизируется на панель | Добавьте домен через реселлера (расходует слот) и исправьте обратный прокси. |
| В инструкциях указан неверный IP-адрес или хост | В `rs_server_ipv4` / `rs_cname_target` по-прежнему указаны примерные значения | Задайте их в Defaults. |
| Реселлер не может включить сбор платежей через платформу | Заблокировано | Установите `rs_platform_collect_enabled` после юридической проверки. |


