ProposalCetak biru teknisDokumen internal

CerdasNet Hosting Platform

Platform hosting terpadu: klien bisa membuat situs, memasang domain, mengelola file, database, dan aplikasi dari satu dashboard, sementara admin mengelola paket, node, dan tagihan dari tempat yang sama.

Prinsip utama: satu aplikasi Node.js, npm start menjalankan semuanya. Layanan lain (MariaDB, Cloudflare, WAHA) dipanggil dari aplikasi ini, bukan ditulis ulang.

Halaman ini tidak untuk dipublikasikan di mesin pencari (ditandai noindex).

1. Latar belakang dan masalah

Layanan hosting umumnya membutuhkan banyak alat terpisah: panel kontrol, billing, DNS, notifikasi, dan monitoring. Akibatnya pengelolaan lambat, data tercecer, dan klien sering menunggu admin untuk hal sederhana.

Masalah saat ini

  • Pembuatan situs dan domain masih manual.
  • Billing, DNS, dan server tidak terhubung.
  • Tidak ada pemantauan pemakaian per akun.
  • Server tunggal berarti satu titik gagal.

Peluang

  • CerdasNet sudah punya auth, audit, fulfillment, WAHA, dan monitoring.
  • Pola provisioning otomatis sudah terbukti di modul lain.
  • Cloudflare menyediakan DNS, proxy, dan sertifikat.

Pendekatan

  • Bangun bertahap, satu node dulu.
  • Pakai ulang komponen yang ada.
  • Tiap fase punya kriteria selesai yang bisa diuji.

2. Target yang ingin dicapai

Tujuan utama

Membangun platform hosting sendiri yang otomatis dari pembayaran sampai situs aktif, aman, dapat dipantau, dan siap berkembang menjadi beberapa server.

Sasaran terukur

< 2 mnt

Dari pembuatan subdomain sampai situs aktif.

0

Intervensi admin untuk pemasangan WordPress, ganti PHP, dan buat database.

100%

Tindakan admin dan klien tercatat di audit.

RPO 5 mnt

Batas kehilangan data file saat failover (awal Fase 4, bisa diubah).

0

Secret CerdasNet yang bisa dibaca proses situs klien.

4 VPS

Target cluster: 2 aplikasi, 1 database primer, 1 backup.

Di luar cakupan (tahap awal)

3. Fitur dan manfaat

Fitur Isi Manfaat untuk klien Manfaat untuk bisnis
Subdomain otomatis Record A proxied di zona cerdasnet.com dan cnet.web.id Situs langsung punya alamat tanpa beli domain Pintu masuk murah untuk calon pelanggan
Domain sendiri Custom hostname, instruksi CNAME, verifikasi TXT Pakai nama domain sendiri dengan panduan jelas Naik kelas ke paket berbayar
Pindah nameserver Zona dibuat di akun Cloudflare kita setelah kepemilikan terbukti DNS dikelola otomatis, tanpa edit manual Kontrol DNS, lebih sedikit tiket bantuan
Runtime Node, PHP, statis Proses per situs dengan user Linux akun Bisa memasang berbagai jenis situs Segmen pasar lebih luas
PHP-FPM multi versi Pool dan php.ini per akun Kompatibel dengan aplikasi lama dan baru Kurang dukungan manual
MariaDB per akun Database, pengguna, dan kuota Siap untuk WordPress dan aplikasi lain Terukur dan bisa ditagih per paket
Installer satu klik Katalog dengan checksum, WordPress lebih dulu Pasang aplikasi dalam hitungan menit Nilai jual utama hosting
File manager Daftar, unggah, ekstrak, edit, izin, sampah Kelola file dari browser Aman karena pathGuard
Terminal browser PTY terbatas ke folder akun, batas idle Akses perintah tanpa SSH Terjejak di audit
Backup dan pemulihan Terjadwal, ke node backup Data aman, bisa dipulihkan sendiri Mengurangi risiko dan komplain
Statistik resource CPU, RAM, disk, inode, bandwidth Tahu kapan perlu upgrade Dasar upsell dan penangguhan
Billing otomatis Bayar, akun jadi, perpanjang, suspend Aktif segera setelah bayar Tanpa kerja manual
Notifikasi WhatsApp Akun baru, tagihan, domain aktif, gangguan Informasi cepat lewat aplikasi yang dipakai harian Retensi lebih baik
Cluster dan failover Beberapa node, load balancer, lease Layanan lebih tahan gangguan Kepercayaan dan SLA lebih kuat

Ringkasan manfaat

Klien

Mandiri, cepat aktif, aman, dan transparan soal pemakaian.

Admin

Satu dashboard, provisioning otomatis, audit lengkap, kerja manual berkurang.

Bisnis

Pendapatan berulang, skala bertahap, biaya terkendali karena memakai ulang kode yang ada.

4. Yang sudah ada dan dipakai ulang

Bagian Lokasi Dipakai untuk
Entry point server.js, scripts/prestart.js, ecosystem.config.cjs npm start, preflight
Konfigurasi src/config/, settingsService.js, secretsService.js Token Cloudflare, WAHA, paket
Database src/db/, Kysely, mysql2 Tabel hosting baru
Provider src/services/providers/, fulfillmentService.js Pola adapter provider
Fulfillment mikrotikFulfillment.js, wahaProvisioning.js Pola provisioning setelah bayar
WhatsApp src/services/whatsapp/, deploy/waha/ Notifikasi, bot
Monitoring src/services/monitoring/ Health check node dan situs
Job dan realtime src/jobs/, src/realtime/, src/sockets/ Antrean, progres, terminal
Auth dan audit middleware/auth.js, auditService.js Peran admin dan klien, catatan tindakan
Dashboard views/dashboard/, views/admin/ Halaman panel
Keamanan HTTP helmet, CSRF, express-rate-limit Semua form dan API

5. Struktur folder yang diusulkan

src/hosting/
  bootstrap/     preflight: OS, root, port, token, WAHA; report.js
  edge/          listener 80/443, SNI, certs, hostRouter, limits
  cloudflare/    client, zones, dns, customHostnames, tokenCheck
  domains/       subdomain, customDomain, verification, nameserverTransfer
  accounts/ plans/ sites/(runtimes) supervisor/
  filemanager/   pathGuard.js, archive.js (batas anti zip bomb)
  terminal/ php/ databases/ apps/(catalog, licenses)
  backups/ resources/ cluster/ billing/ notify/
  routes/ controllers/ jobs/ validators/ utils/

public/hosting/  js, css, vendor (xterm.js, editor ringan)
views/hosting/   admin/ dan client/
tests/           unit/hosting-*.test.mjs, integration/hosting/

Prototipe di src/services/hosting/ (subdomain, pathGuard, cloudflareClient, hostRouter) dipindah ke src/hosting/ setelah struktur disetujui.

6. Tanggung jawab modul

bootstrap

  • Idempoten, tiap langkah dicek dulu.
  • Cek OS, hak akses, port 80/443/3306, token Cloudflare, WAHA.
  • Gagal berarti pesan perbaikan yang jelas.

edge

  • 80 ke 443, SNI untuk sertifikat.
  • Host tak terdaftar: 404 tanpa bocoran info.
  • Tujuan hanya port dalam pool situs.

cloudflare

  • Satu-satunya pintu ke API.
  • Token minimal: DNS dan custom hostname pada zona terkait.

domains

  • Subdomain, domain sendiri, pindah nameserver.
  • Kepemilikan diverifikasi sebelum diterima.

accounts, plans

  • Batas: situs, domain, disk, CPU, RAM, inode, database, runtime.
  • User Linux dan kuota per akun.

sites, supervisor

  • Proses anak dengan user akun dan environment kosong.
  • Restart otomatis, log, batas resource via systemd slice.

filemanager, terminal

  • Semua operasi lewat pathGuard.
  • Terminal sebagai user akun, batas idle, dicatat audit.

php, databases, apps

  • Versi PHP per akun.
  • MariaDB per akun dengan kuota.
  • Manifest aplikasi, lisensi diperiksa.

backups, resources

  • Cadangan terjadwal ke node backup.
  • Pemakaian per akun di dashboard.

cluster, billing, notify

  • Registri node, heartbeat, lease.
  • Billing memakai fulfillment yang ada.
  • Notifikasi lewat WAHA.

7. Alur utama

A. Subdomain

  1. Klien isi label dan pilih zona.
  2. Validasi format dan daftar yang dipesan.
  3. Cek kuota paket.
  4. Job: buat record A proxied dan situs.
  5. Aktif, notifikasi WAHA terkirim.

B. Domain sendiri

  1. Klien isi domain, sistem tampilkan CNAME.
  2. Custom hostname dibuat, TXT verifikasi ditampilkan.
  3. Status dipantau, setelah aktif ditautkan ke situs.

C. Pindah nameserver

  1. Kepemilikan domain dibuktikan dulu.
  2. Zona dibuat, nameserver diberikan.
  3. Klien mengubahnya di registrar.
  4. Status dicek berkala, setelah aktif DNS otomatis.

D. Installer satu klik

  1. Pilih aplikasi, domain, database.
  2. Unduh dari sumber resmi, cek checksum, ekstrak.
  3. Konfigurasi database, catat status.
  4. Aplikasi berbayar: lisensi diverifikasi dulu.

E. Pembelian paket

  1. Pembayaran lunas memicu fulfillment.
  2. Akun, folder, kuota dibuat; gagal dicatat dan dicoba ulang.

8. Cluster beberapa VPS

Yang tidak bisa dijanjikan: "tanpa gangguan sama sekali" tidak realistis saat node mati mendadak. Yang bisa dijanjikan adalah gangguan singkat dan pemulihan otomatis. Satu server dengan IP publik juga menjadi titik tunggal, jadi gunakan beberapa origin di Cloudflare Load Balancing.

Yang realistis

Peran node

Peran Jumlah Isi
Edge / aplikasi 2+ CerdasNet, situs klien, terminal, file manager
Database primer 1 MariaDB primer
Replika database 1+ Siap dinaikkan jika primer mati
Backup 1 Cadangan situs, database, konfigurasi

Yang disinkronkan antar node

Health check dan failover

9. Penyimpanan dan data

/srv/cn/
  accounts/<akun>/sites/<situs>/   direktori kerja situs
  accounts/<akun>/home/            file manager dan terminal
  runtime/  cache/  backups/  logs/

Folder CerdasNet (kode, .env, database lokal) tidak boleh berada di dalam /srv/cn/accounts.

Tabel Isi utama
hosting_plans nama, batas situs/domain/disk/CPU/RAM/inode/database, runtime
hosting_accounts userId, planId, user Linux, folder, status, masa berlaku
hosting_sites accountId, label, zona, FQDN, runtime, PHP, port, status, nodeId
hosting_domains siteId, domain, jenis, ID custom hostname, verifikasi
hosting_zones zona, ID Cloudflare, status, nameserver
hosting_databases accountId, nama, pengguna, status
hosting_apps, hosting_licenses aplikasi terpasang; jenis, status, masa berlaku lisensi
hosting_backups, hosting_jobs target, jadwal, hasil; jenis job, payload, percobaan, log
cluster_nodes, cluster_leases peran, IP, heartbeat; nama lease, pemegang, kedaluwarsa

Migrasi mengikuti pola src/db/migrations/*.js; setiap migrasi punya down yang berfungsi.

10. Keamanan

11. Fase, kriteria selesai, dan perkiraan waktu

Perkiraan waktu bersifat indikatif untuk satu pengembang dan dapat berubah.

Fase Isi Kriteria selesai Perkiraan
0 Persiapan Struktur, prototipe (subdomain, pathGuard, Cloudflare, router) sudah diuji unit K1–K5 terjawab 1 minggu
1 Satu node Preflight, subdomain otomatis, listener 80/443, tabel inti, situs Node, file manager dasar Akun dan subdomain dibuat, situs menjawab dari internet, aman dari traversal dan symlink 4–6 minggu
2 Fitur inti Custom domain, PHP-FPM, MariaDB, installer WordPress, terminal Klien pasang WordPress, ganti PHP, buat database tanpa admin 6–8 minggu
3 Operasi Backup, monitoring resource, suspend otomatis, pindah nameserver Pemulihan satu situs teruji di VPS uji 4–5 minggu
4 Cluster Registri node, replika DB, sinkron file, load balancing, lease Satu node dimatikan, layanan pulih dalam batas disepakati; pemulihan dari replika teruji 5–7 minggu
5 Bisnis Paket berbayar, perpanjangan, lisensi, notifikasi, penyempurnaan tampilan Siklus beli sampai perpanjang berjalan otomatis 3–4 minggu

12. Contoh paket (usulan awal, belum final)

Batas Starter Bisnis Pro
Situs 1 5 20
Domain sendiri 0 3 20
Disk 1 GB 10 GB 50 GB
Database 1 5 Lebih banyak
Backup Mingguan Harian Harian + simpan lebih lama
Terminal Tidak Ya Ya
Harga Ditentukan setelah biaya VPS, Cloudflare, dan pasar dihitung.

13. Keputusan sebelum Fase 1

Kode Pertanyaan Opsi Rekomendasi
K1 CloudPanel dipasang otomatis? (a) Tidak. (b) Ya, sebagai edge. (a). Bentrok port 80/443 dan API tidak tersedia pada (b).
K2 Isolasi akun (a) User Linux + cgroup. (b) Container. (a) Fase 1–2; (b) sebelum klien berbayar banyak.
K3 Batas resource (a) cgroup v2. (b) systemd slice. (b), lebih mudah dikelola.
K4 Sinkron file (a) NFS. (b) S3. (c) rsync. (c) awal Fase 4 dengan RPO jelas; (b) jangka panjang.
K5 Database (a) MariaDB primer + replika. (b) JSON/SQLite. (a). JSON/SQLite tidak cocok untuk banyak penulis.
K6 Terminal (a) node-pty. (b) Lewat container. Mengikuti K2; node-pty butuh kompilasi native.
K7 Tahap pertama Satu node atau cluster? Satu node; cluster di Fase 4.

Untuk pengujian di VPS uji, rekomendasi di atas sudah cukup. Sebelum melayani klien sungguhan, periksa ketentuan penyedia VPS dan batas port yang diizinkan.

14. Risiko dan mitigasi

Risiko Dampak Mitigasi
Ketentuan penyedia VPS melarang hosting pihak ketiga Akun diblokir Periksa ketentuan sebelum menerima klien.
Batas paket Cloudflare (banyak zona, for SaaS) Fitur domain terhambat Cek paket akun dan dokumentasi resmi sebelum Fase 2.
Biaya load balancing, for SaaS, VPS tambahan Margin tipis Hitung sebelum Fase 4, atur harga paket.
Escape antar akun (kernel dipakai bersama) Kebocoran data Env kosong, batas resource, audit; rencana container (K2).
Kehilangan data saat failover Data terbaru hilang RPO jelas, replikasi, uji pemulihan rutin.
Aplikasi berbayar tanpa izin Masalah hukum Hanya jual dengan lisensi resmi.
RAM VPS uji kecil Jumlah situs terbatas Batas per akun sejak Fase 1.
Tampilan terlalu mirip panel merek lain Masalah merek dagang Tata letak familiar boleh, tanpa meniru merek atau tampilan persis.

15. Penutup dan persetujuan

Dengan persetujuan dokumen ini, pekerjaan dimulai dari Fase 0 dengan menjawab keputusan K1–K7, lalu lanjut ke Fase 1 (satu node).

Disusun oleh


Nama / tanggal
Disetujui oleh


Nama / tanggal