🚀 Tunnel SaaS v2

Pasang template Tunnel di banyak domain hanya dengan upload 2 file kecil. Semua logika & data terpusat di server Anda. Sempurna untuk bisnis SaaS multi-tenant.

📦 4 KB per client ⚡ 5 menit install 🔄 1 update untuk semua 🏢 Cocok cPanel hosting

1. Apa itu Tunnel SaaS v2?

Versi 2 dari Tunnel mengubah cara deploy: dari "upload semua file ke setiap domain" menjadi "upload 2 file proxy di client, semua logika di server pusat".

🏗️

1× Setup Server

Pasang sekali di hosting/VPS Anda, dipakai berkali-kali oleh banyak domain.

2 File per Client

Tiap domain client cuma butuh index.php + .htaccess ringan.

🎯

Edit 1×, Semua Update

Ubah template di server, semua client otomatis dapat versi terbaru.

🔐

API Key per Client

Tiap client dapat key unik. Bisa di-revoke kapan saja jika perlu.

💰

Jual sebagai Service

Cocok untuk bisnis SaaS: jual akses per client, atur quota & masa aktif.

🌐

SEO Tetap Sempurna

Canonical, OG, sitemap — semua otomatis pakai domain client.

💡 SaaS = Software as a Service

Konsep dimana satu sistem central melayani banyak pelanggan. Mirip seperti Shopify, WordPress.com, atau Linktree — Anda jadi penyedia layanan.

2. Beda v1 vs v2

📦 v1 Traditional

  • Upload 40+ file ke tiap domain
  • Ukuran ~500 KB per domain
  • Edit template = touch tiap client
  • Tambah brand = edit list.txt di tiap client
  • Tiap hosting client butuh GD, cURL, allow_url_fopen
  • Skala 100 domain = 100× kerja

🚀 v2 SaaS

  • Upload 2 file ke tiap domain
  • Ukuran ~4 KB per domain
  • Edit template = 1× di server, otomatis sync
  • Tambah brand = 1× di server, semua client kena
  • Client hosting cukup PHP + cURL (minimal)
  • Skala 100 domain = 1× kerja

📊 Tabel Perbandingan

Aspekv1v2 SaaS
File di client40+ file2 file
Ukuran upload~500 KB~4 KB
Setup waktu30 menit/domain5 menit/domain
Update templateManual tiap clientOtomatis sync
Hosting clientFull featureMinimal
Skala 50+ domainSangat repotMudah
MonetisasiSusahMudah (per-key)

⚠️ Kapan TIDAK Pakai v2?

  • Cuma 1 domain → v1 lebih sederhana
  • Tidak ada VPS / hosting untuk server pusat → harus pakai v1
  • Klien mau full kontrol di hosting sendiri → v1

3. Cara Kerja

Tiap request dari pengunjung di client domain akan di-proxy ke server pusat, lalu hasil HTML/gambar dikembalikan ke pengunjung:

👤
Visitor
Buka domain client
🌐
Client Domain
situs-client.com
2 file PHP
🏢
Server Pusat
api.mydomain.com
render + data
👤
🌐
📄 HTML

⚙️ Detail Tiap Komponen

Client Domain (2 file)

  • index.php — terima request, forward ke server pusat via cURL
  • .htaccess — rewrite semua URL ke index.php

Server Pusat (lengkap)

  • render.php — terima request dari client, validasi key, route ke template
  • saas_config.php — daftar API key + host yang diizinkan
  • Semua file project Tunnel (index, about, img, dst.) → render HTML
  • list.txt, config.php → data sentral untuk semua client

🎨 SEO Otomatis Pakai Domain Client

Saat render, server tahu host client (dari proxy). Maka:

  • Canonical URL → https://situs-client.com/panen138
  • Open Graph URL → domain client
  • Sitemap → semua URL pakai domain client
  • JSON-LD → struktur sesuai client

Google melihat tiap domain sebagai situs terpisah.

4. Pasang Server Pusat (1×)

Server pusat cuma perlu dipasang sekali. Setelah itu bisa melayani banyak client.

📁 Yang Akan Di-Upload

Folder tunnel-saas/server/ berisi:

server/ ├── render.php // endpoint utama SaaS ├── saas_config.php // daftar API key + host ├── .htaccess // URL rewrite + proteksi ├── index.php // halaman brand ├── about.php // halaman tentang ├── contact.php // halaman kontak ├── privacy.php // kebijakan privasi ├── img.php // generator banner ├── sitemap.php // sitemap.xml otomatis ├── robots.php // robots.txt otomatis ├── geo.php // deteksi negara ├── config.php // config Tunnel (CTA, geo) ├── list.txt // daftar brand sentral └── amp/ // versi AMP lengkap

🚀 Langkah Setup

  1. Zip folder server/ di komputer Klik kanan folder server/ → "Send to" → "Compressed (zipped) folder".
  2. Upload ke hosting Login cPanel → File Manager → upload zip ke folder yang Anda mau. Bisa ke public_html/api/ (subfolder) atau bikin subdomain dulu.
  3. Extract di server Klik kanan zip → Extract. Pastikan file render.php ada langsung di folder, bukan di sub-sub folder.
  4. Edit saas_config.php Buka file via Editor cPanel. Set api_keys untuk client Anda (lihat section "Manajemen Key").
  5. Test buka endpoint Akses https://api.mydomain.com/render.php di browser. Harus muncul: Invalid API key. Itu artinya server hidup ✓.

✅ Self-Contained

Folder server/ sudah self-contained — semua file project sudah ada di dalamnya. Tidak perlu point ke folder eksternal.

5. Pasang Client Proxy (Tiap Domain)

Untuk setiap domain client yang mau Anda hubungkan ke server pusat:

📁 Yang Di-Upload (Cuma 2 File)

public_html/ (root domain client) ├── index.php // proxy ke server pusat (~3 KB) └── .htaccess // rewrite all to index.php

🚀 Langkah Setup Per Client

  1. Generate API key untuk client Di terminal:
    php -r "echo bin2hex(random_bytes(20));"

    Hasilnya 40 karakter random. Simpan dulu.

  2. Tambahkan key ke saas_config.php server
    'api_keys' => [
        'a1b2c3d4...' => 'situs-client.com',
    ],
  3. Owner client upload 2 file Beri tahu owner client untuk upload index.php + .htaccess dari folder client/ ke root domain mereka.
  4. Owner client edit 2 baris Buka index.php di File Manager mereka:
    $SERVER_URL = 'https://api.mydomain.com/render.php';
    $API_KEY    = 'a1b2c3d4...';   // key dari Anda
  5. Test Buka https://situs-client.com/. Halaman langsung tampil dari server pusat, dengan domain client di canonical & OG.

🎉 Selesai dalam 5 Menit

Tidak perlu install database, tidak perlu konfigurasi PHP yang ribet. Cuma 2 file + edit 2 baris.

6. Deploy ke cPanel (Step-by-Step)

Panduan visual untuk pengguna shared hosting (Niagahoster, Hostinger, IDwebhost, dll).

🏢 Bagian A: Server Pusat di Subdomain

  1. Buat Subdomain di cPanel cPanel → Domains → Subdomains
    • Subdomain: api
    • Domain: mydomain.com
    • Document Root: public_html/api
    Klik Create.
  2. Aktifkan Ekstensi PHP cPanel → Select PHP Version
    • Pilih PHP 7.4 atau 8.x
    • Centang ekstensi: gd, curl, mbstring, json
    • Klik Save
  3. Upload Folder Server cPanel → File Manager → public_html/api/
    • Zip folder server/ di komputer dulu
    • Klik Upload, pilih zip
    • Setelah upload, klik kanan zip → Extract
    • Hapus file zip-nya
  4. Set Permission Folder cache/ Klik kanan folder cachePermissions → CHMOD 755.
  5. Edit saas_config.php Klik kanan saas_config.phpEdit
    'api_keys' => [
        'KEY-CLIENT-1' => 'client1.com',
        'KEY-CLIENT-2' => 'client2.com',
    ],
  6. Test Endpoint Buka https://api.mydomain.com/render.php
    • Kalau muncul "Invalid API key" → ✓ berhasil
    • Kalau 500 / blank → cek error_log di cPanel

🌐 Bagian B: Client Domain

  1. Login cPanel Client Buka cPanel hosting domain client (mis. cpanel.client.com).
  2. Upload 2 File File Manager → public_html/
    • Upload index.php
    • Upload .htaccess (centang "Show hidden files" kalau tidak terlihat)
  3. Edit index.php (2 baris)
    $SERVER_URL = 'https://api.mydomain.com/render.php';
    $API_KEY    = 'KEY-DARI-OWNER-SERVER';
  4. Cek PHP cURL Aktif cPanel client → Select PHP Version → centang curl.
  5. Test Buka https://client.com/ di browser. Halaman muncul = ✓.

💡 Bonus: Cron Auto-Update Keyword

Di server pusat, set cron job untuk update keyword tiap 6 jam:

  1. cPanel → Cron Jobs Common Settings: Once per 6 hours
  2. Command:
    /usr/bin/php /home/USERNAME/public_html/api/keyword_update.php

    Ganti USERNAME dengan username cPanel Anda.

⚠️ Pastikan AutoSSL Aktif

Di cPanel → SSL/TLS Status, aktifkan AutoSSL untuk subdomain api.mydomain.com. Tanpa SSL, banyak browser akan tolak request dari client domain (HTTPS only).

7. Manajemen API Key

Setiap client domain dapat API key sendiri. Anda yang kontrol siapa boleh akses server.

🔑 Generate Key Baru

Cara 1: Via PHP CLI

php -r "echo bin2hex(random_bytes(20));"

Cara 2: Via Generator Online

Buka randomkeygen.com → ambil "Fort Knox Password" (40+ karakter).

📝 Format di saas_config.php

'api_keys' => [
    // Format: 'KEY' => 'host_yang_diizinkan'
    'a1b2c3d4e5f6...' => 'client1.com',
    '9z8y7x6w5v4u...' => 'client2.com',

    // Wildcard '*' = boleh dari host apapun (untuk testing saja)
    'test-key-XXX' => '*',
],

🛡️ Skenario Pemakaian Key

Request dariKey ValidHost MatchStatus
client1.com✓ (client1.com)200 OK
client2.com (pakai key client1)✗ (mismatch)403 Forbidden
random.com (key salah)403 Invalid Key
Tanpa key403 Invalid Key

🔄 Cabut Akses Client

Kalau client tidak bayar / mau hentikan layanan:

  1. Hapus baris key client dari saas_config.php
  2. Save
  3. Refresh — domain client langsung dapat 403

🔐 Keamanan Key

  • Jangan share key di publik (forum, GitHub, dll)
  • Pakai HTTPS antara client ↔ server
  • Rotate key periodik (mis. tiap 6 bulan)
  • Log akses di saas_access.log — pantau aktivitas mencurigakan

8. Update Sentral (Edit Sekali, Semua Kena)

Ini adalah keuntungan utama SaaS v2. Setiap perubahan di server pusat otomatis berlaku untuk semua client.

🎯 Apa yang Bisa Diubah Sentral?

📝

Daftar Brand

Edit list.txt → semua client dapat brand baru.

🎨

Template HTML/CSS

Edit index.php → tampilan semua client update.

📊

Schema.org

Edit JSON-LD → semua client dapat markup baru.

🌐

Geo Cloaking

Edit config.php → policy negara berlaku semua client.

🔍

SEO Meta Tags

Tambah meta tag baru → semua client SEO upgrade.

📱

Versi AMP

Edit amp/index.php → AMP template semua client update.

⚙️ Apa yang TIDAK Otomatis Sync?

Yang harus diatur di tiap client (jarang):

  • 2 baris di client index.php (URL server + API key)
  • Tidak ada yang lain

🚀 Contoh Skenario Update

Misal Anda mau ganti tagline homepage dari "Direktori Unduh APK" jadi "Pusat APK Terlengkap":

  1. Login cPanel server pusat
  2. Edit index.php
  3. Ganti teks
  4. Save
  5. Selesai. 100 client domain langsung dapat tagline baru. Tanpa touch file di tiap client.

9. Estimasi Biaya Hosting

🏢 Untuk Server Pusat (1× Bayar)

Shared Hosting

Rp 30-50k/bulan

✓ < 50 client

✓ Traffic ringan

✓ Cocok mulai SaaS kecil

VPS 2 GB + CDN

Rp 200-400k/bulan

✓ 200+ client

✓ Traffic tinggi

✓ Cloudflare di depan

🌐 Untuk Tiap Client Domain

Domain Only

Rp 100-150k/tahun

✓ Tipe .com / .id

✓ Tanpa hosting sendiri

✓ Pakai hosting murah

Subdomain

Gratis

✓ Pakai subdomain Anda

✓ Tidak beli domain baru

✓ Mis. brand1.mydomain.com

💰 Contoh Bisnis Model

  • Biaya operasional Anda: Rp 100k/bulan (VPS 1 GB)
  • Jual per client: Rp 50k/bulan (akses penuh)
  • 50 client = Rp 2.500.000/bulan
  • Margin = Rp 2.400.000/bulan

10. System Check (Cek Siap Deploy)

Admin punya halaman 🩺 System Check yang verifikasi semua requirement sebelum live.

📋 Yang Di-cek (20 item)

🐘

PHP Version

Minimal 7.4 (recommended 8.x)

📦

Ekstensi PHP

gd, curl, mbstring, json

🌐

allow_url_fopen

Untuk geo lookup + keyword fetcher

⏱️

max_execution_time

Minimal 300s untuk keyword update

📂

Folder Writable

cache/img, cache/geo, data/, clients/

📄

Required Files

render.php, saas_config.php, dll

🔗

Endpoint Test

Auto-curl ke render.php, cek respon 403

🔄

mod_rewrite

URL bersih

🎯 Cara Pakai

  1. Login admin Setelah deploy, login ke admin panel.
  2. Klik menu "🩺 System Check" Halaman otomatis run 20 check.
  3. Lihat ringkasan di atas ✓ Siap deploy ATAU ⚠ N issue
  4. Perbaiki yang FAIL Kolom "Fix" kasih panduan tiap item.
  5. Re-run sampai semua hijau Setelah semua pass, server siap untuk client.

📍 Path Auto-Detection

System Check juga tampilkan path yang terdeteksi:

Admin Dir       : /home/user/public_html/manage
Server Dir      : /home/user/public_html/api
Data Dir        : /home/user/public_html/manage/data
Clients Dir     : /home/user/public_html/manage/data/clients
Endpoint URL    : https://api.mydomain.com/render.php

🔧 Path Configurable

Default admin/ dan server/ sebagai sibling. Kalau struktur Anda beda, edit saas_config.php:

'admin_data_path' => '/home/user/public_html/manage/data',

✅ Auto-Create Cache

Folder cache/ dan subfolder (img/, geo/) auto-create saat first request — tidak perlu manual buat.

10. Pertanyaan Umum

Apa beda antara folder server/ dan project Tunnel v1?

Folder server/ di v2 sudah berisi semua file project Tunnel v1, plus tambahan render.php dan saas_config.php untuk SaaS endpoint. Jadi v2 server = v1 project + SaaS layer.

Apakah project v1 saya masih bisa dipakai?

Ya. Project v1 di tunnel/ tetap berfungsi sebagai mode tradisional. v2 di tunnel-saas/ adalah cara alternatif untuk multi-tenant. Pilih sesuai kebutuhan.

Bisa pakai shared hosting biasa untuk server pusat?

Bisa, untuk < 50 client. Pastikan hosting punya PHP 7.4+, ekstensi gd + curl, dan allow_url_fopen=On. Hampir semua shared hosting modern (Niagahoster, Hostinger, IDwebhost) memenuhi.

Berapa latency tambahan dari proxy?

Biasanya 100-300ms per request (network hop + render). Untuk traffic tinggi, aktifkan cache di client ($CACHE_ENABLED = true) atau pasang Cloudflare di depan server pusat.

Bagaimana kalau server pusat down?

Semua client domain dapat error 503. Solusi: pasang Cloudflare yang punya fitur "Always Online" untuk serve dari cache, atau pasang server kedua sebagai backup (failover).

Bisa tiap client punya daftar brand berbeda?

Secara default semua client share list.txt yang sama. Untuk per-client list, edit render.php tambahkan switch berdasarkan $vHost untuk load list_{host}.txt berbeda.

Bagaimana cara monitor traffic per client?

File saas_access.log di server pusat mencatat semua request: timestamp, host, path, IP visitor. Bisa di-parse untuk statistik. Cocok untuk billing per traffic.

Bisa pakai Cloudflare untuk SSL?

Sangat recommended. Set Cloudflare DNS untuk subdomain server pusat → dapat SSL gratis + DDoS protection + CDN cache. Mode SSL: "Flexible" atau "Full".

Apakah Google bisa membedakan tiap client?

Ya. Karena canonical URL & meta tag pakai domain client, Google melihat tiap domain sebagai situs terpisah. Tidak ada duplicate content issue (selama konten sedikit beragam — bisa diatur per host kalau perlu).

Cara update dari v1 ke v2 (migrasi)?

1) Upload folder server/ ke server pusat (subdomain). 2) Edit saas_config.php. 3) Di tiap domain client, hapus semua file lama, upload 2 file client/. 4) Edit 2 baris di index.php. Selesai dalam ~15 menit per client.

Apakah aman secara hukum?

Sebagai infrastruktur SaaS: ya, sah. Pastikan konten yang Anda layani tidak melanggar TOS (gambling jurisdiction, copyright, dll). Tambahkan Privacy Policy yang jelas tentang data flow client → server pusat.

🚀 Tunnel SaaS v2 — Multi-Domain Made Easy

Panduan teknis: tunnel-saas/DEPLOY-CPANEL.txt | README.txt