ARSITEKTUR SISTEM
User → Telegram → Hermes Agent (VPS) → 9Router proxy → NVIDIA NIM API
LANGKAH 0
Prasyarat & Persiapan VPS
Pastikan VPS sudah menyala dan kamu sudah login via SSH. Ini adalah fondasi sebelum install apapun.
⏱ ~5 menitRekomendasi VPS Provider:
IP_VPS_KAMU dengan IP publik VPS yang diberikan provider.
# Format: ssh username@ip-vps ssh root@IP_VPS_KAMU # Kalau pakai SSH key file (.pem dari AWS misalnya): ssh -i ~/.ssh/vps-key.pem root@IP_VPS_KAMU # Pertama kali login → ketik 'yes' lalu tekan Enter
root@vps:~## Update daftar package sudo apt update && sudo apt upgrade -y # Install tools yang dibutuhkan sudo apt install -y curl git build-essential ufw
Jangan skip langkah ini — port 20128 wajib dibuka agar kamu bisa akses dashboard 9Router dari browser.
# Izinkan port-port penting ufw allow 22/tcp # SSH — JANGAN LUPA INI atau kamu terkunci! ufw allow 80/tcp # HTTP ufw allow 443/tcp # HTTPS ufw allow 20128/tcp # 9Router dashboard # Aktifkan firewall ufw enable # Cek status (semua port harus tampil ALLOW) ufw status
LANGKAH 1
Install Node.js
9Router berjalan di atas Node.js. Kita install versi 22 LTS (Long Term Support) — versi yang stabil dan didukung lama.
⏱ ~3 menit# Tambah repository resmi Node.js 22 curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - # Install Node.js sudo apt install -y nodejs
# Cek versi Node.js — harus v22.x node -v v22.13.0 # output yang muncul # Cek npm (package manager Node.js) npm -v 10.9.0
v22.x.x, Node.js berhasil terinstall. Lanjut ke install 9Router.LANGKAH 2
Install 9Router
9Router adalah AI proxy router — dia menggabungkan banyak AI provider (OpenAI, Anthropic, NVIDIA, dll) jadi satu endpoint tunggal, dengan smart fallback otomatis kalau satu provider error.
⏱ ~8 menithttp://localhost:20128/v1.
-g artinya install secara global — jadi perintah 9router bisa dipanggil dari mana saja di terminal.
Versi terbaru per Mei 2026 adalah 0.4.13.
# Install 9Router secara global via npm sudo npm install -g 9router # Verifikasi versi 9router --version 9router 0.4.13 # output yang muncul
Ctrl+C untuk stop —
kita akan buat systemd service supaya jalan otomatis.
# Jalankan sekali untuk inisialisasi config & database 9router # Output yang muncul: ✓ Database initialized ✓ Listen: http://localhost:20128 # Tekan Ctrl+C untuk stop. Kita lanjut buat service.
http://IP_VPS_KAMU:20128 di browser PC kamu — kamu akan diminta set password admin. Catat password ini!# Buat file service 9Router sudo tee /etc/systemd/system/9router.service > /dev/null <<'EOF' [Unit] Description=9Router AI Router After=network.target [Service] Type=simple User=root ExecStart=/usr/bin/9router Restart=always RestartSec=5 StandardOutput=journal StandardError=journal [Install] WantedBy=multi-user.target EOF # Reload systemd, aktifkan service, dan langsung start sudo systemctl daemon-reload sudo systemctl enable --now 9router # Cek status — harus 'active (running)' dengan warna hijau sudo systemctl status 9router
active (running), 9Router sudah jalan! Akses dashboard di http://IP_VPS_KAMU:20128LANGKAH 2B · OPSIONAL TAPI RECOMMENDED
Akses Dashboard via Cloudflare Tunnel
Kalau IP VPS tidak bisa diakses langsung (misal network corporate/kampus yang strict), Cloudflare Tunnel memberikan URL publik HTTPS gratis untuk dashboard 9Router.
⏱ ~5 menitQuick tunnel — URL random, berubah tiap restart. Cocok untuk coba-coba.
Named tunnel — URL permanen dengan domain kamu. Untuk penggunaan jangka panjang.
# Download binary cloudflared curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64 \ -o /usr/local/bin/cloudflared # Beri izin eksekusi chmod +x /usr/local/bin/cloudflared # Verifikasi cloudflared --version
# Buat systemd service untuk tunnel sudo tee /etc/systemd/system/9router-tunnel.service > /dev/null <<'EOF' [Unit] Description=9Router Cloudflare Tunnel After=network.target [Service] Type=simple User=root ExecStart=/usr/local/bin/cloudflared tunnel --url http://localhost:20128 --no-autoupdate Restart=always RestartSec=10 StandardOutput=append:/tmp/9router-tunnel.log StandardError=append:/tmp/9router-tunnel.log [Install] WantedBy=multi-user.target EOF sudo systemctl enable --now 9router-tunnel # Tunggu 5 detik, lalu lihat URL tunnel di log sleep 5 tail -50 /tmp/9router-tunnel.log | grep trycloudflare.com
https://xxxxx-yyyyy.trycloudflare.com — buka URL itu di browser PC kamu untuk akses dashboard 9Router.# Login ke Cloudflare (akan buka browser untuk auth) cloudflared tunnel login # Buat named tunnel cloudflared tunnel create 9router-prod # Arahkan subdomain ke tunnel (ganti yourdomain.com) cloudflared tunnel route dns 9router-prod 9router.yourdomain.com # Edit config tunnel (ganti UUID dengan yang muncul setelah 'create') nano ~/.cloudflared/config.yml # Isi dengan: # tunnel: <UUID-tunnel> # credentials-file: /root/.cloudflared/<UUID>.json # ingress: # - hostname: 9router.yourdomain.com # service: http://localhost:20128 # - service: http_status:404 # Jalankan tunnel permanen cloudflared tunnel run 9router-prod
LANGKAH 3
Tambahkan NVIDIA NIM ke 9Router
NVIDIA NIM adalah layanan inference AI gratis untuk developer — OpenAI-compatible, bisa dipakai langsung. Kita hubungkan ke 9Router agar Hermes bisa pakai model NVIDIA.
⏱ ~8 menit1. Buka build.nvidia.com
2. Klik avatar kamu di pojok kanan atas
3. Pilih "Get API Key"
4. Salin key yang format-nya
nvapi-... — simpan di tempat aman!
http://IP_VPS_KAMU:20128 atau URL tunnel di browser PC kamu. Login dengan password yang kamu set saat pertama kali.Name : NVIDIA NIM Prefix : nvidia Base URL : https://integrate.api.nvidia.com/v1 API Key : nvapi-xxxxxxxxxxxxxxxxxxxx API Type : chat
valid: true → klik "Save"nvapi-XXX dengan API key NVIDIA kamu.# Step 1: Dapatkan CLI token (otomatis dari machine ID VPS) TOKEN=$(node -e ' const crypto = require("crypto"); const {machineIdSync} = require("node-machine-id"); const t = crypto.createHash("sha256") .update(machineIdSync() + "9r-cli-auth") .digest("hex").substring(0, 16); console.log(t); ') echo "Token: $TOKEN" # Step 2: Validasi API key NVIDIA dulu (test tanpa efek samping) curl -s -H "x-9r-cli-token: $TOKEN" \ -H "Content-Type: application/json" \ -X POST http://localhost:20128/api/provider-nodes/validate \ -d '{ "baseUrl":"https://integrate.api.nvidia.com/v1", "apiKey":"nvapi-XXX", "type":"openai-compatible", "modelId":"meta/llama-3.3-70b-instruct" }' # Harus return: {"valid":true} # Step 3: Buat provider node NODE_ID=$(curl -s -H "x-9r-cli-token: $TOKEN" \ -H "Content-Type: application/json" \ -X POST http://localhost:20128/api/provider-nodes \ -d '{ "type":"openai-compatible", "apiType":"chat", "name":"NVIDIA NIM", "prefix":"nvidia", "baseUrl":"https://integrate.api.nvidia.com/v1" }' | python3 -c "import sys,json;print(json.load(sys.stdin)['node']['id'])") echo "Node ID: $NODE_ID" # Step 4: Hubungkan API key ke node curl -s -H "x-9r-cli-token: $TOKEN" \ -H "Content-Type: application/json" \ -X POST http://localhost:20128/api/providers \ -d "{\"provider\":\"$NODE_ID\",\"apiKey\":\"nvapi-XXX\",\"name\":\"NVIDIA NIM\"}"
# Ganti sk-xxx dengan API Key 9Router kamu (bukan NVIDIA key!) NINER_KEY="sk-xxxxxxxxxxxx" # Test kirim pesan ke NVIDIA Llama lewat 9Router curl -X POST http://localhost:20128/v1/chat/completions \ -H "Authorization: Bearer $NINER_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "nvidia/meta/llama-3.3-70b-instruct", "messages": [{"role":"user","content":"halo, siapa kamu?"}], "max_tokens": 50 }'
choices[0].message.content berisi jawaban, berarti 9Router + NVIDIA NIM sudah terhubung!free_smart_fallback →
klik "Add Model" → pilih model NVIDIA. Urutan yang recommended (kuat ke ringan):
nvidia/deepseek-ai/deepseek-v4-pro
TERKUAT
nvidia/deepseek-ai/deepseek-v3.1-terminus
KUAT
nvidia/moonshotai/kimi-k2-thinking
THINKING
nvidia/meta/llama-3.3-70b-instruct
BALANCED
nvidia/google/gemma-4-31b-it
RINGAN
LANGKAH 4
Install Hermes Agent
Hermes adalah Telegram bot yang punya akses ke shell, file editor, browser, dan lain-lain. Dia pakai 9Router sebagai LLM backend — jadi kalau kamu chat di Telegram, Hermes kirim ke 9Router, 9Router terusin ke NVIDIA NIM, dapat jawaban, lalu Hermes balas ke kamu.
⏱ ~8 menit/newbot → ikuti instruksi (masukkan nama bot, lalu username diakhiri _bot)
1234567890:ABCdef... — salin dan simpan!
/start ke bot @userinfobot — ID kamu akan muncul
# Install pip (package manager Python) — dibutuhkan Hermes sudo apt install -y python3-pip python3-venv # Buat direktori kerja Hermes mkdir -p /root/.hermes cd /root/.hermes # Install Hermes Agent npm install hermes-agent # Alternatif jika via pip: pip install hermes-agent
.env berisi semua konfigurasi sensitif: token Telegram, API key, dan URL 9Router.
Ganti nilai yang ada tanda kurung siku dengan nilai kamu sendiri!
# Buat file .env — GANTI nilai dalam kurung siku! cat > /root/.hermes/.env <<'EOF' # Token bot dari @BotFather TELEGRAM_BOT_TOKEN=<token dari @BotFather> # Telegram User ID kamu (angka, bukan username) TELEGRAM_OWNER_ID=<user id kamu dari @userinfobot> # API Key 9Router (ambil dari dashboard 9Router → Settings → API Keys) OPENAI_API_KEY=<api key dari dashboard 9router> # URL 9Router — JANGAN DIGANTI, ini sudah benar untuk setup lokal OPENAI_BASE_URL=http://localhost:20128/v1 # Model default yang dipakai Hermes DEFAULT_MODEL=free_smart_fallback EOF # Amankan file .env agar hanya root yang bisa baca chmod 600 /root/.hermes/.env
chmod 600 memastikan hanya user root yang bisa membacanya. Jangan pernah share file ini atau commit ke GitHub!cat > /root/.hermes/config.yaml <<'EOF'
providers:
9router:
name: 9Router
base_url: http://localhost:20128/v1
key_env: OPENAI_API_KEY
default_model: free_smart_fallback
models:
free_smart_fallback: {}
nvidia/deepseek-ai/deepseek-v4-pro: {}
nvidia/meta/llama-3.3-70b-instruct: {}
fallback_providers:
- provider: 9router
model: free_smart_fallback
EOF
chmod 600 /root/.hermes/config.yaml
# Buat systemd service Hermes sudo tee /etc/systemd/system/hermes.service > /dev/null <<'EOF' [Unit] Description=Hermes Agent (Telegram bot) After=network.target 9router.service [Service] Type=simple User=root WorkingDirectory=/root/.hermes EnvironmentFile=/root/.hermes/.env ExecStart=/usr/bin/node /root/.hermes/node_modules/.bin/hermes-agent Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF # Reload, enable, dan start service Hermes sudo systemctl daemon-reload sudo systemctl enable --now hermes # Lihat log realtime — Ctrl+C untuk berhenti journalctl -u hermes -f
Bot started atau Polling started, Hermes sudah jalan! Langsung test di Telegram.LANGKAH 5
Verifikasi Pipeline End-to-End
Test apakah semua komponen sudah terhubung dengan benar dari Telegram hingga NVIDIA NIM.
⏱ ~3 menit/start → bot harus membalas/model → pilih 9Router → pilih free_smart_fallbacktest 1+1 → bot harus balas dengan angka 2 (atau penjelasannya)# Di chat Telegram dengan bot kamu: /model # Pilih: nvidia/meta/llama-3.3-70b-instruct # Request langsung ke NVIDIA endpoint # Test kirim pesan biasa: halo, siapa kamu dan model apa yang kamu pakai?
# Cek status 3 service sekaligus systemctl status 9router hermes 9router-tunnel # Semua harus: active (running)
REFERENSI
Monitoring & Maintenance
Perintah-perintah penting untuk memantau dan merawat sistem.
# ── Status semua service ── systemctl status 9router hermes 9router-tunnel # ── Log realtime (Ctrl+C untuk berhenti) ── journalctl -u 9router -f journalctl -u hermes -f tail -f /tmp/9router-tunnel.log # ── Update 9Router ke versi terbaru ── sudo npm install -g 9router@latest sudo systemctl restart 9router # ── Backup konfigurasi penting ── tar czf hermes-9router-backup-$(date +%Y%m%d).tar.gz \ /root/.hermes/config.yaml \ /root/.hermes/.env \ /root/.9router/db.json # ── Restart semua service ── sudo systemctl restart 9router hermes # ── Cek penggunaan resource (RAM, CPU, Disk) ── htop df -h # disk usage free -h # memory usage
REFERENSI
Troubleshooting
Masalah umum dan cara mengatasinya.
| Masalah | Solusi |
|---|---|
| Dashboard 9Router ga bisa dibuka |
Cek dengan systemctl status 9router. Pastikan port 20128 terbuka: ufw status.
Juga cek cloud security group / firewall di panel provider VPS kamu — harus allow port 20128.
|
| "API key unauthorized" saat Check NVIDIA di dashboard |
Test dulu langsung ke NVIDIA: curl https://integrate.api.nvidia.com/v1/models -H "Authorization: Bearer nvapi-XXX".
Kalau valid, coba restart 9Router: systemctl restart 9router.
|
| Hermes tidak respond di Telegram |
Cek log: journalctl -u hermes -f.
Pastikan OPENAI_BASE_URL=http://localhost:20128/v1 di .env benar.
Pastikan API key 9Router di .env masih aktif (cek di dashboard 9Router).
|
| Tunnel URL hilang setelah restart |
systemctl restart 9router-tunnel lalu tail /tmp/9router-tunnel.log.
URL baru akan muncul di log. Untuk URL permanen, gunakan named tunnel dengan domain sendiri.
|
| 429 Rate Limit dari NVIDIA | 9Router dengan smart fallback akan otomatis pindah ke model berikutnya. Kalau semua kena rate limit, tunggu beberapa menit atau tambah provider AI lain ke 9Router. |
| VPS kehabisan memory / Hermes crash |
Cek RAM: free -h. Tambah swap: fallocate -l 2G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile.
Kalau sering crash, pertimbangkan upgrade VPS ke 4GB RAM.
|
REFERENSI
Estimasi Biaya Bulanan
Setup ini dirancang seminimal mungkin. AI gratis, kamu hanya bayar VPS.
| 9Router | GRATIS (open source, self-hosted) |
| NVIDIA NIM API | GRATIS (rate-limited, cukup untuk personal) |
| Cloudflare Tunnel | GRATIS (quick & named tunnel) |
| Telegram Bot | GRATIS |
| VPS (Tencent Lighthouse SGP) | ~$5/bulan |
| VPS (AWS t3.small) | ~$15/bulan |
| TOTAL ESTIMASI | $5 – $15/bulan (hanya VPS) |
9Router: github.com/9router/9router
NVIDIA NIM: build.nvidia.com
NVIDIA API Ref: docs.api.nvidia.com
Cloudflared: developers.cloudflare.com
FAQ
Pertanyaan Umum
sudo npm install -g 9router@latest
sudo systemctl restart 9router
9router --version # konfirmasi versi baru
free_smart_fallback adalah sebuah "combo" di 9Router — kumpulan model AI yang akan dicoba secara berurutan.
Ketika kamu kirim request ke model ini, 9Router akan mencoba model pertama di list; kalau gagal (rate limit, error),
otomatis coba model berikutnya. Ini memastikan bot kamu hampir selalu bisa menjawab meski satu provider down.
SELESAI
Final Checklist
Centang semua item untuk memastikan setup kamu sudah sempurna.