---
title: Resellers (white-label)
description: Biarkan mitra menjual cloud Anda dengan merek dan domain mereka sendiri — buat reseller, atur domain dan DNS, harga grosir, default, dan slot lisensi.
url: https://nexcmp.com/id/docs/customers/resellers/
applies_to: NexCMP 1.6.1
updated: 2026-11-02
---

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

> **Lokasi di admin:** Customers › Resellers › List (`/resellers`), Domains & SSL (`/resellers/domains`), Permissions & wholesale (`/resellers/entitlements`), Defaults (`/resellers/settings`). Slot reseller: System › Admin › License & updates (`/license`).

## Fungsi {#what-it-does}

Seorang **reseller** mendapatkan salinan portal pelanggan dengan merek mereka sendiri di **domain mereka sendiri**, dengan pelanggan, dompet, harga, dan (opsional) saluran pembayaran mereka sendiri. Mereka membeli dari Anda dengan harga grosir dan menjual dengan harga mereka sendiri. Pelanggan mereka tidak akan pernah melihat merek Anda, dan domain reseller tidak akan pernah dapat membuka konsol admin Anda. Reseller menjalankan bisnis mereka dari **konsol mitra** di `https://partner.<your-domain>`.

## Persyaratan {#requirements}

| Item | Persyaratan |
|---|---|
| License | Satu **slot domain reseller** pada lisensi Anda untuk setiap domain reseller kustom. Halaman lisensi menampilkan slot `used/max` dan tautan untuk membeli lebih banyak. Tanpa slot gratis, penambahan domain akan gagal dengan "Out of license reseller domain slots". |
| DNS | Setiap domain reseller harus diarahkan ke server Anda (lihat di bawah). |
| Web server dan TLS | Nama host harus dapat mencapai panel NexCMP melalui reverse proxy Anda dengan sertifikat yang valid untuk nama tersebut. |
| Email | SMTP dikonfigurasi untuk email undangan dan pemberitahuan. |
| Master switch | **Reseller settings › General › `rs_enabled`** aktif secara default. |

## Siapkan infrastruktur {#prepare-the-infrastructure}

1. Tentukan alamat publik server: alamat IPv4-nya dan, jika Anda lebih menyukai CNAME, nama host yang mengarah ke sana (misalnya `sites.cloud.example.com`).
2. Buka **Customers › Resellers › Defaults** (`/resellers/settings`), grup **Domains & SSL**, dan atur:

   | Kunci | Arti |
   |---|---|
   | `rs_server_ipv4` | IPv4 publik yang harus dituju oleh record A reseller. |
   | `rs_cname_target` | Nama host yang harus dituju oleh record CNAME reseller. |
   | `rs_master_hosts` | Nama host milik situs utama Anda sendiri (tidak dapat diberikan kepada reseller). |
   | `rs_platform_domain` | Domain induk opsional untuk **sub-domain platform** (misalnya `partners.cloud.example.com` untuk memberi reseller `acme.partners.cloud.example.com`). Kosong berarti menonaktifkan opsi. |
   | `rs_sites_stale_minutes` | Menit sebelum layanan sertifikat dianggap kedaluwarsa (default 15). |
   | `rs_ssl_fail_hours` | Jam percobaan yang gagal sebelum kesalahan dinaikkan (default 48). |

   ::: warning Periksa nilai-nilai ini sebelum mengirimkan instruksi
   `rs_server_ipv4`, `rs_cname_target`, dan `rs_master_hosts` dikirimkan dengan nilai contoh. Ganti dengan server dan domain Anda sendiri **sebelum** Anda memberikan instruksi DNS kepada reseller, jika tidak, instruksi di layar akan mengarah ke tempat yang salah.
   :::

3. Klik **Save** (alasan diperlukan).
4. Pastikan reverse proxy Anda meneruskan nama host reseller ke panel NexCMP dan menyajikan sertifikat untuk masing-masing host. Installer mengonfigurasi nginx dan Let's Encrypt hanya untuk domain utama (serta nama `admin.` dan `partner.` yang ter-resolve). Jika Anda menggunakan Cloudflare, proxy nama host tersebut dan gunakan mode Full SSL.

## Hubungkan di NexCMP {#connect-in-nexcmp}

### Membuat reseller {#create-the-reseller}

1. Buka **Customers › Resellers › List** dan klik **New reseller**. Wizard ini memiliki 8 langkah dan menyediakan semuanya di akhir; setiap langkah dapat dicoba ulang dengan aman.

   | Langkah | Isi |
   |---|---|
   | **Reseller** | Nama resmi atau dagang, **slug** (4–31 karakter a–z, 0–9 atau `-`, diawali dengan huruf; ini juga menjadi prefiks faktur), nama kontak, email dan telepon, bahasa default, detail penagihan reseller (sebagai pembeli top-up saldo). |
   | **Akun konsol** | Nama pengguna, email akun, nama lengkap; **Send a one-time invite link by e-mail** (berlaku 72 jam, disarankan) atau tampilkan kata sandi sementara satu kali. |
   | **Merek** | Nama merek, nama pendek, tagline, warna primer, email dan telepon dukungan, nama penjual yang tercetak pada invoice pelanggan, logo (latar belakang terang dan gelap), tanda persegi, dan favicon: PNG, JPEG, WEBP, atau ICO hingga 256 KB, **tanpa SVG**. |
   | **Domain** | Domain pelanggan beserta **juga www**, mana yang utama, **domain uji** (sslip.io) dan opsi **dry-run**, atau sub-domain platform. Wizard menampilkan **DNS OK / DNS not ready** beserta record yang harus dibuat. |
   | **Harga & dompet** | Diskon grosir (%), batas bawah ritel (% dari daftar), mark-up default (%), batas kredit, saldo awal, peringatan saldo rendah, batasan pelanggan, VM, dan domain, fitur situs (pendaftaran pelanggan, perlindungan DDoS, tiket dukungan, paket kustom, ubah ukuran, Auto Scaling). |
   | **Saluran pembayaran** | Pihak yang menagih pembayaran pelanggan (lihat di bawah) serta opsi PayPal mandiri dan transfer bank VN mandiri. |
   | **Email** | Nama pengirim dan Reply-To. Alamat From akan tetap menggunakan alamat platform hingga DKIM disiapkan untuk domain reseller. |
   | **Tinjauan** | Periksa semuanya lalu klik **Provision everything**, atau **Save draft (provision later)**. |

2. Provisioning berlanjut di latar belakang (setiap 30 detik). Buka reseller untuk melihat progresnya dan gunakan **Continue provisioning** atau **Retry** jika suatu langkah gagal.

![Wizard reseller baru pada langkah pertama dengan nilai contoh](https://nexcmp.com/id/docs/images/customers/resellers-01-wizard.webp)

### Arahkan DNS (dilakukan oleh reseller) {#point-dns-the-reseller-does-this}

Reseller (atau Anda) membuat record yang ditampilkan pada tab **Domains & SSL**:

| Record | Name | Nilai |
|---|---|---|
| TXT (kepemilikan, kali pertama saja) | `_site-verify.<domain>` | `sv=<token>` ditampilkan di layar |
| A (domain apex seperti `shop.example.net`) | domain | `rs_server_ipv4` Anda |
| CNAME (sub-domain seperti `cloud.example.net`) | domain | `rs_cname_target` Anda (atau record A ke `rs_server_ipv4`) |
| CNAME (opsional) | `www.<domain>` | `rs_cname_target` Anda |

Juga:

- Hapus record **AAAA** (IPv6) apa pun kecuali server Anda merespons pada alamat IPv6 tersebut.
- Matikan proxy CDN **off** (awan abu-abu) saat domain sedang diverifikasi.
- Jika domain memiliki record **CAA**, izinkan `letsencrypt.org`.

Token dalam record TXT berbeda untuk setiap domain; salin dari layar. Sistem memeriksa ulang DNS setiap 5 menit selama 48 jam pertama, lalu setiap jam, dan melepaskan nama yang record TXT-nya masih belum ada setelah 72 jam.

### Status domain {#domain-states}

Pada **Customers › Resellers › Domains & SSL** (semua reseller) dan di tab **Domains & SSL** milik reseller:

| Status | Arti |
|---|---|
| `pending_verify` | Menunggu record TXT. |
| `pending_dns` / `verifying` | Menunggu A atau CNAME mengarah ke Anda. |
| `issuing` | Sertifikat sedang diterbitkan. |
| `active` | Melayani situs reseller. |
| `cert_expiring` | Sertifikat hampir kedaluwarsa; pembaruan diharapkan. |
| `dns_lost` | DNS berhenti mengarah ke Anda; setelah 30 hari domain dihapus. |
| `error` | Lihat kode error; **Retry** setelah memperbaiki. |
| `removing` / `removed` | Sedang ditarik; slot lisensi dikembalikan. |

Tindakan baris: **Check now**, **Retry**, **Make primary**, **Test mode** (untuk domain uji), **Remove**.


## Izin & grosir {#permissions-wholesale}

**Customers › Resellers › Permissions & wholesale** (`/resellers/entitlements`) adalah matriks: satu baris per reseller, dengan **diskon** dan **markup** grosir serta satu tombol untuk setiap layanan (misalnya DDoS Shield dan VPN). Tombol dapat diedit saat fitur tingkat platform aktif; jika tidak, sel tersebut bersifat baca-saja dan menautkan ke pengaturan. Sub-tab **Top-up codes** menentukan berapa banyak kode yang dapat dikeluarkan oleh setiap reseller per bulan (lihat [Promotions](https://nexcmp.com/id/docs/billing/promotions/)).

Aturan harga:

- Harga grosir = harga daftar x (1 - diskon), dan dapat ditimpa per paket dan per siklus penagihan di tab **Wholesale pricing** milik reseller.
- Reseller menetapkan harga eceran dan tidak boleh lebih rendah dari batas **floor** (persentase dari harga daftar).
- **Wallet** reseller membayar harga grosir saat pelanggan mereka melakukan pembelian. Wallet memiliki batas kredit, masa tenggang, dan batas cerukan (lihat Defaults).

## Defaults {#defaults}

**Customers › Resellers › Defaults** (`/resellers/settings`) adalah kunci `rs_*` yang berlaku untuk setiap reseller. Setiap perubahan memerlukan alasan dan akan diaudit.

| Grup | Kunci | Default | Arti |
|---|---|---|---|
| Umum | `rs_enabled` | 1 | Program reseller aktif. |
| | `rs_platform_collect_enabled` | 0 | Memungkinkan platform untuk mengumpulkan pembayaran pelanggan untuk reseller. **Aktifkan hanya setelah tinjauan hukum.** |
| | `rs_totp_required` | 1 | Akun konsol reseller wajib menggunakan autentikasi dua faktor. |
| | `rs_agreement_version` | 1 | Versi perjanjian reseller yang harus mereka setujui. |
| Harga default | `rs_default_discount_bp` | 2000 (20 %) | Diskon grosir untuk reseller baru (basis poin, 0 hingga 9000). |
| | `rs_default_markup_bp` | 2500 (25 %) | Markup default (0 hingga 50000). |
| | `rs_default_floor_bp` | 9000 (90 %) | Batas eceran (0 hingga 20000). |
| | `rs_default_max_domains` | 3 | Domain yang diizinkan per reseller. |
| Wallet dan pembayaran | `rs_grace_hours` | 72 | Masa tenggang sebelum layanan pelanggan terpengaruh oleh wallet reseller yang kosong. |
| | `rs_overdraft_cap_cents` | 5000 | Cerukan diizinkan pada wallet. |
| | `rs_retention_days` | 14 | Hari sebelum VM dari reseller yang ditutup dihapus. |
| | `rs_payout_hold_days` | 30 | Hari komisi ditahan sebelum dapat ditarik. |
| | `rs_payout_min_cents` | 5000 | Penarikan terkecil. |
| | `rs_topup_min_cents` | 2000 | Top-up wallet terkecil oleh reseller. |
| Pembayaran dan email | `rs_webhook_base` | kosong | URL dasar publik untuk webhook gateway reseller (kosong = gunakan URL situs). |
| | `rs_mail_from` | kosong | Alamat pengirim untuk email reseller. |
| | `rs_invoice_show_processor` | 1 | Tampilkan pemroses pembayaran pada faktur. |
| | `rs_gw_stripe_enabled`, `rs_gw_usdt_enabled` | 1 | Apakah reseller diizinkan mengonfigurasi Stripe atau USDT mereka sendiri. |

## Siapa yang mengumpulkan pembayaran pelanggan {#who-collects-customer-payments}

| Mode | Arti |
|---|---|
| **Reseller mengumpulkan (saluran sendiri)** — default | Reseller menghubungkan akun Stripe, PayPal, USDT, atau rekening bank mereka sendiri. Webhook mereka adalah `https://<reseller-domain>/v1/billing/<gateway>/webhook/r/<id>`. Kartu yang disimpan dan [auto top-up](https://nexcmp.com/id/docs/billing/auto-top-up/) tidak tersedia untuk situs-situs ini. |
| **Platform mengumpulkan** | Saluran Anda ditampilkan di situs reseller. Dikunci hingga `rs_platform_collect_enabled = 1`. |
| **Campuran** | Kombinasi yang dipilih per saluran. |

## Apa yang dilihat reseller {#what-the-reseller-sees}

Konsol mitra di `https://partner.<your-domain>` memiliki menu Overview, Reports, Customers, VMs, Tickets, Orders, Payments, Prices, Brand, Landing & legal, Domains & SSL, Email, Wallet, dan Payment channels. Akun konsol memiliki peran *reseller* (penuh) atau *staff* (baca-saja). Untuk melihatnya sendiri, buka reseller dan klik **Sign in to partner console**: Anda masuk selama 60 menit, setiap penulisan dicatat dengan nama Anda di log admin dan log reseller, serta operasi keuangan memerlukan konfirmasi kedua.

## Verifikasi {#verify}

1. Setelah provisioning, baris daftar reseller menunjukkan *active* dan kolom **Provisioning** berwarna hijau.
2. Buka domain reseller di browser: halaman login milik reseller sendiri akan muncul dengan brand mereka. `https://<reseller-domain>/admin` mengembalikan 404.
3. Daftarkan pelanggan uji coba pada domain tersebut: pelanggan akan muncul di bawah **Customers › List** dengan reseller pada kolom **Site**.
4. Halaman lisensi menunjukkan penambahan satu slot yang digunakan.

## Batas & catatan {#limits-notes}

- Satu slot lisensi per domain kustom atau uji coba; sub-domain platform tidak menggunakan slot.
- Menangguhkan reseller akan mempertahankan data; **Close reseller** mengembalikan semua slot domain, dan penghapusan VM hanya diizinkan setelah masa retensi.
- Pelanggan reseller muncul dalam daftar pelanggan Anda dan dapat di-impersonate seperti pelanggan lainnya (tautan terbuka pada domain reseller).
- Reseller tidak dapat melihat atau mengubah saluran pembayaran Anda, default kuota, atau reseller lainnya.

## Pemecahan Masalah {#troubleshooting}

| Gejala | Penyebab | Solusi |
|---|---|---|
| "Slot domain reseller kehabisan lisensi" | Semua slot terpakai | Kosongkan slot (hapus domain) atau beli lebih banyak di halaman lisensi. |
| Domain mandek di `pending_verify` | Catatan TXT hilang | Buat catatan TXT persis seperti yang ditunjukkan; gunakan **Check now**. |
| Domain mandek di `pending_dns` | A/CNAME tidak mengarah ke Anda, catatan AAAA aktif, atau proxy CDN aktif | Perbaiki DNS, matikan proxy, lalu **Check now**. |
| Status `error` | Lihat kode pada baris (misalnya CAA memblokir Let's Encrypt, batas tarif) | Perbaiki dan klik **Retry**. |
| Browser mengatakan host tidak dikenal atau "421" | Nama host tidak ada pada lisensi, atau tidak dirutekan ke panel | Tambahkan domain melalui reseller (menghabiskan slot) dan perbaiki reverse proxy. |
| Instruksi menunjukkan IP atau host yang salah | `rs_server_ipv4` / `rs_cname_target` masih memiliki nilai sampel | Atur nilainya di Defaults. |
| Reseller tidak dapat mengaktifkan platform collection | Terkunci | Atur `rs_platform_collect_enabled` setelah tinjauan hukum. |


