MC-ExamGO Server v1.2.2 Stable Golang Standalone Engine

Next-Gen Standalone High-Performance CBT Server

Engine Computer Based Test (CBT) mandiri bertenaga Golang murni & Vue 3 SPA. Dirancang khusus untuk ketahanan konkurensi ribuan siswa serentak dengan penggunaan memori ultra-rendah dan latensi instan.

Zero PHP / Node.js Runtime 🚀 ~50.000 Req / Detik 🧠 Multi-Provider AI Core 🔒 Dual JWT Auth Architecture
mc-exam-go --daemon
RUNNING
# Inisialisasi Native Binary Server...
[INFO] Starting MC-ExamGO v1.2.2 (Go 1.22.x/Gin)
[DB] PostgreSQL Connection Pool established (Max: 25, Idle: 10)
[JWT] Dual Key Auth Engine Activated [Admin/Student]
[AI] Multi-Provider Core: Gemini 1.5, OpenRouter, Groq
[SPA] Embedded Vue 3 Static Asset Router ready
Memory Footprint: 14.8 MB (RSS)
Active Goroutines: 32 routines
Engine Cold-Start: 0.00 ms (Native Binary)
HTTP Listen Address: 0.0.0.0:8080
🚀 Server ready to handle 50,000+ concurrent exam requests
ARSITEKTUR & KEUNGGULAN SISTEM

5 Pilar Utama Arsitektur MC-ExamGO

Dirancang dari nol dengan standar enterprise untuk memastikan integritas ujian, skalabilitas tinggi, dan otomatisasi asesmen modern.

1. Ultra-Low Latency Go Engine

Ditenagai Gin Framework dan GORM + pgx dengan thread ringan Goroutines. Mampu melayani hingga ~50.000 req/detik pada resource server minimal tanpa antrean bottleneck.

⚡ ~15MB RAM Footprint Sub-millisecond latency

2. Dual JWT Auth Isolation

Pemisahan kunci rahasia token antara JWT_SECRET (Admin/Guru) dan JWT_STUDENT_SECRET (Siswa). Menjamin token siswa tidak dapat disalahgunakan untuk mengeksploitasi endpoint manajerial.

🔒 Isolated Token Lifecycle Bcrypt Hashing

3. 9 Tipe Soal Asesmen Nasional

Mendukung Pilihan Ganda, PG Kompleks, Benar/Salah, Menjodohkan (*Drag & Drop*), Isian Singkat, Uraian/Essay, Audio Listening, dan penulisan rumus Matematika format LaTeX / KaTeX.

📐 TipTap Rich Text LaTeX Math Equations

4. Native AI Exam Suite

Suite AI lengkap: generator bank soal Taksonomi Bloom (C1-C6), koreksi otomatis essay dengan NLP, analisis diagnostik kesukaran ($P$) & daya beda ($D$), serta generator varian soal anti-bocor.

🤖 Multi-Model AI Gateway NLP Essay Grading

5. Realtime Telemetry & Kiosk Protection

Pengawasan langsung via dashboard proktor berbasis ApexCharts & Heartbeat Socket. Terkoneksi sempurna dengan Safe Exam Browser (SEB) dan aplikasi MC-ExamBrowser Android untuk mengunci perangkat siswa dan memblokir perpindahan aplikasi.

📡 Live Ping & Student Telemetry Kiosk Mode Anti-Cheat
Enterprise AI Capabilities (Backend Go)

6 Modul AI Unggulan untuk Revolusi Asesmen Sekolah

Modul AI bawaan di dalam engine Go tanpa perlu install script terpisah. Terintegrasi penuh dengan sistem operasional CBT.

Baru v1.0.3
🤖

ExamGO AI Copilot & Agentic Actions

Bukan sekadar chatbot biasa. Copilot dapat mengeksekusi operasi database nyata: membuat jadwal ujian, menyusun bank soal, me-reset sesi siswa yang terkunci, tambah waktu, hingga refresh token ujian lewat perintah chat & Telegram-Style Slash Commands (/).

Slash Commands (/) DB Action Tools SSE Real-Time
02

AI Question Generator & Blueprint

Buat puluhan butir soal berkualitas tinggi dalam hitungan detik hanya dari ringkasan materi atau silabus. Mendukung klasifikasi level kognitif Taksonomi Bloom (C1 s/d C6), pembahasan kunci, dan opsi pengecoh yang realistis.

Bloom C1-C6 9 Tipe Soal Auto-Rationales
03

AI Automatic Essay Grader (NLP)

Koreksi ratusan lembar jawaban uraian siswa secara instan. Menggunakan pemrosesan bahasa alami (NLP) untuk menilai kesesuaian konsep, memberikan skor proporsional (0-100), catatan perbaikan siswa, serta justifikasi penilaian untuk guru.

Rubric Scoring Semantic Match Feedback Narration
04

AI Exam Diagnostic & Psychometrics

Analisis diagnostik mendalam pasca-ujian: menghitung Indeks Tingkat Kesukaran ($P$), Daya Beda Butir ($D$), efektivitas opsi pengecoh, pemetaan kelemahan materi siswa, hingga rekomendasi remedial otomatis per topik pelajaran.

Difficulty ($P$) Discrimination ($D$) Remedial Plan
05

AI Anti-Leak Variant Generator

Cegah kebocoran soal antar sesi atau lab ujian dengan memproduksi varian soal paralel secara otomatis. AI mengubah konteks kalimat, angka matematika, atau urutan tanpa mengubah esensi kompetensi dan bobot kesukaran soal.

Multi-Batch Shield Paraphrase Engine Balanced Weight
06

Multi-LLM Gateway (BYOK)

Bebas memilih provider AI sesuai preferensi dan budget sekolah (*Bring-Your-Own-Key*): Google Gemini, DeepSeek V3, OpenAI, OpenRouter, Qwen, hingga Claude. Bebas biaya royalti dan 100% milik sekolah.

Gemini DeepSeek GPT-4o OpenRouter
Universal Smart Document Parser Zero-Effort Migration

Takut Repot Buat Template Soal Lagi Dari Awal?

Katakan selamat tinggal pada kerja lembur format ulang bank soal! Engine Golang MC-ExamGO dapat membedah dan memparsing langsung dokumen Word (.docx) dari ZenCBT, ExoCBT, hingga TC-Exam tanpa mengubah satu tabel pun.

Kompatibilitas Format Siap Impor:

Zen

Format Tabel ZenCBT

100% Cocok

Otomatis membaca tag header TIPE, TEKS, pilihan ganda A-E, serta mengekstrak gambar soal langsung dari berkas docx.

Exo

Format Tabel ExoCBT

Auto Detect

Memetakan tabel baris TS (Tipe Soal), kunci jawaban, tingkat kesulitan, hingga pembahasan tanpa perlu diedit ulang.

TC

TC-Exam (TSV & XML Package)

Instant Import

Migrasikan bank soal lawas TC-Exam berbasis TSV/XML langsung ke bank soal modern ExamGO dengan struktur asesmen terlindungi.

Doc

MS Word Standar + LaTeX Math

Formula Support

Dukungan parsing persamaan matematika MathML / KaTeX, penomoran otomatis bertingkat, dan aset audio listening tersemat.

MC-ExamGO Universal XML Parser
Standalone Go Engine
Bank_Soal_Biologi_Kelas_XII_ZenCBT.docx Ujian_Akhir_Matematika_ExoCBT.docx Export_Database_Soal_TCExam.xml Soal_Fisika_Rumus_KaTeX_Standar.docx

Format Otomatis Terdeteksi • Ukuran: 2.4 MB • Status: Siap Parsing

TERMINAL PARSER LOG LATENCY:

> [Parser] Signature ZenCBT terdeteksi: Tag <w:tbl> & header cell 'TIPE'

> [Media] 14 berkas gambar tertanam (.png/.jpg) berhasil diekstrak ke /uploads/bank/

> [Questions] 40 Soal Pilihan Ganda + 5 Soal Esai berhasil dipetakan ke struct JSON

> [Database] 45 Butir soal berhasil disimpan ke Bank Soal ID #104 (0.04s) ✓

> [Parser] Signature ExoCBT terdeteksi: Tag tabel 'TS' & opsi A-E

> [Mapping] Menyelaraskan baris KUNCI, BOBOT, dan PEMBAHASAN

> [Media] Gambar rumus fraksi kimia diekstrak & dioptimasi otomatis

> [Database] 50 Butir soal ExoCBT tersimpan tanpa error format (0.05s) ✓

> [Parser] TC-Exam TSV/XML Importer Engine dijalankan

> [Schema] Mengonversi tag <tcexam_question> ke model Asesmen Universal

> [Questions] Menghubungkan metadata kategori, durasi, dan rubrik penilaian

> [Database] Migrasi database bank soal TC-Exam tuntas (0.03s) ✓

> [Parser] Native OpenXML Word Parser Engine aktif

> [MathML/KaTeX] Persamaan integral & matriks dikonversi ke LaTeX renderable

> [Numbering] Numbering Engine mengatasi list bertingkat (1. a. i.)

> [Database] Soal sains lengkap tersimpan dengan formula KaTeX jernih ✓

Kecepatan Parsing
< 0.05 Detik
Ekstraksi Gambar
Otomatis 100%
Tipe Soal Asesmen
9 Format Lengkap
🔍

Auto-Detect Signature

Sistem otomatis mengenali struktur tabel ZenCBT atau ExoCBT tanpa mengharuskan Anda memilih jenis template secara manual.

🖼️

Ekstraksi Gambar & Audio

Gambar diagram, foto soal, dan file audio listening di dalam dokumen Word langsung diekstrak dan dioptimasi ke server.

📐

KaTeX Math & Formula

Rumus fisika, matematika, dan simbol kimia (MathML / Equation) dikonversi ke KaTeX murni yang tajam di semua ukuran layar.

Nol Hambatan Migrasi

Gunakan kembali ribuan file bank soal lama sekolah Anda langsung ke MC-ExamGO tanpa perlu mengulang input manual dari awal!

Punya Ribuan Soal di Template ZenCBT atau ExoCBT?

Unduh binary standalone MC-ExamGO sekarang, instal dalam 1 menit, dan buktikan kemudahan import bank soal tanpa hambatan format!

BENCHMARK & PERFORMA

Mengapa Memilih Engine Berbasis Golang?

Perbandingan teknis arsitektur compiled binary Golang native dibandingkan server PHP-FPM dan CMS monolitik tradisional.

Kriteria Teknis 🚀 MC-ExamGO (Go Binary) PHP-FPM (Laravel / CI) Monolithic LMS (Moodle)
Model Konkurensi Server Goroutines (Lightweight Threads) Process per request (Forking) Heavy PHP Process + Session Lock
Konsumsi RAM Base Server ~15 MB – 30 MB Total ~150 MB / Worker (2-4 GB) ~250 MB / Worker (4-8 GB)
Maksimal Throughput (1 vCPU) 50.000+ Req / Detik ~1.500 – 2.500 Req / Detik ~300 – 800 Req / Detik
Dependensi Runtime Nol (Hanya Binary + PostgreSQL) PHP, Extensions, Composer, Nginx, Redis PHP, Apache/Nginx, MySQL/MariaDB, Cron
Waktu Booting / Cold-Start 0.00 ms (Instant Native Code) 200 – 500 ms (Bootstrap) 400 – 900 ms
Arsitektur Antarmuka Vue 3 Single Page Application (SPA) Server-Side Rendered (Blade) Server-Side Multi-Page (Full Reload)
PUSAT UNDUHAN RESMI

Unduh Paket Installer MC-ExamGO

Pilih paket binary standalone sesuai sistem operasi server Anda. Semua paket sudah self-contained (tidak membutuhkan runtime PHP atau Node.js).

☁️

Akses Mirror Cloud Storage (Microsoft SharePoint)

Tersedia link unduhan alternatif berkecepatan tinggi jika unduhan direct server mengalami limit bandwidth.

Buka Folder SharePoint
v1.2.2 Stable

Windows x64 Installer

Untuk Server Lokal Sekolah, Lab Komputer, atau Laptop Proktor.

Target OS: Win 10, 11, Server x64
Ukuran File: 20 MB
Format: .ZIP Archive
  • mc-exam-go-windows-amd64-v1.2.2.exe
  • mc-exam-go-migrate.exe
  • File konfigurasi .env & folder assets
REKOMENDASI VPS
v1.2.2 Stable

Linux AMD64 Installer

Untuk Cloud VPS Ubuntu / Debian berbasis processor Intel & AMD x86_64.

Target OS: Ubuntu 20/22/24, Debian 11/12
Ukuran File: 19.7 MB
Format: .ZIP Archive
  • mc-exam-go-linux-amd64-v1.2.2
  • mc-exam-go-migrate-linux-amd64
  • File konfigurasi .env & folder assets
v1.2.2 Stable

Linux ARM64 Installer

Untuk Oracle Cloud Ampere A1 (Free Tier), AWS Graviton, atau Raspberry Pi 4/5.

Target OS: Linux aarch64 / ARM64
Ukuran File: 17.8 MB
Format: .ZIP Archive
  • mc-exam-go-linux-arm64-v1.2.2
  • mc-exam-go-migrate-linux-arm64
  • File konfigurasi .env & folder assets

Persyaratan Sistem Minimum:

Database PostgreSQL 14+ (Rekomendasi v16+), RAM 512 MB, dan Storage 500 MB.

Lihat Panduan Instalasi →
📜

Catatan Rilis (Changelog)

v1.2.2 Terbaru 6 Versi Tersedia

Rincian fitur baru, perbaikan bug, dan log pembaruan engine di setiap rilis.

v1.2.2 🌟 Versi Terbaru ⚠️ Update Wajib Build #14
07 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.2.2 — Integrasi 9Router, Alokasi Token Cerdas & Pemulihan Naskah AI

Pembaruan ini menghadirkan dukungan native gateway 9Router, alokasi token dinamis (4.096–8.192), pemulihan naskah soal yang terpotong batas token (Resume Stream), live terminal pemantauan stream lanjutan, dan normalisasi kunci jawaban soal esai.

🌐
Integrasi Native Gateway Multi-Provider 9Router

Dukungan proxy AI mandiri (9Router) dengan deteksi model otomatis (prefix 9router/ atau nr-), parameter konfigurasi lingkungan NINEROUTER_BASE_URL, serta kemampuan streaming respon SSE native yang stabil dan cepat.

Alokasi Token Dinamis & Pemulihan Naskah Terpotong

Generator kini mengalokasikan token output secara adaptif (4.096–8.192 token). Jika naskah massal terhenti karena batas token provider, parser toleran otomatis menyelamatkan butir soal utuh dan menyediakan tombol "Lanjutkan Sisa Soal" untuk melengkapi naskah tanpa pengulangan materi.

👀
Live Terminal & Banner Status Lanjutan

Banner status yang mengonfirmasi keamanan soal sebelumnya saat proses lanjutan berjalan, dilengkapi fitur toggle Pantau Live Stream AI untuk melihat teks yang sedang diketik AI secara real-time.

📝
Standardisasi Kunci Jawaban & Rubrik Esai

Pemisahan tegas kunci isian singkat (exact match) dan rubrik penilaian esai (pedoman langkah kerja). Dilengkapi auto-fallback di backend dan frontend agar jawaban esai dari AI selalu tersimpan sempurna ke Bank Soal tanpa risiko hilang.

⚠️
Diagnostik Error Saldo & Kredensial AI Ramah Pengguna

Pesan error teknis saldo kosong OpenRouter (Insufficient credits, kode 402/401) otomatis diterjemahkan ke solusi bahasa Indonesia yang mudah dipahami guru/admin.

v1.2.1 ⚠️ Update Wajib Build #13
05 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.2.1 — Deteksi Kiosk Multi-Platform & Optimasi Pemantauan Ujian

Pembaruan ini menghadirkan deteksi cerdas aplikasi kiosk ujian (MC-ExamBrowser Android/Windows & Safe Exam Browser iOS), perapian tabel monitoring, serta pemisahan arsitektur layanan aksi pemantauan yang lebih tangguh.

🛡️
Deteksi Otomatis MC-ExamBrowser & SEB

Sistem kini otomatis mendeteksi dan memberi label visual khusus untuk MC-ExamBrowser (Android), MC-ExamBrowser (Windows), serta Safe Exam Browser (iOS/Mac) di layar pemantauan proktor.

⚠️
Peringatan Browser Biasa (Non-Kiosk)

Peserta yang masuk menggunakan browser umum (seperti Chrome atau Safari standar) langsung ditandai dengan badge khusus agar proktor dapat segera mewaspadai potensi membuka tab lain.

🔒
Tampilan Penguncian Perangkat Lebih Rapi

String kode identitas perangkat yang panjang kini digantikan dengan ikon gembok Terkunci yang rapi lengkap dengan tooltip, menjaga fitur proteksi anti-joki tetap aktif tanpa mengotori tabel.

🔄
Sinkronisasi Otomatis Generator .mcode

Konfigurasi User-Agent kustom pada pembuat profil .mcode kini otomatis tersinkronisasi ke pengaturan server saat berkas diunduh, mencegah kesalahan pengaturan antar sistem.

Pemisahan Arsitektur Layanan Aksi Pemantauan

Refaktorisasi modul monitoring ke dalam MonitoringActionService terpisah memastikan eksekusi perintah proktor (force submit, reset sesi, tambah waktu) berjalan lebih cepat, stabil, dan thread-safe.

🤖
Pemusatan Pengaturan Kebijakan AI

Opsi pembagian kuota AI sekolah dan izin API key guru kini dipusatkan 100% di halaman Pengaturan AI bersamaan dengan konfigurasi API Key, serta dibersihkan dari tab Pengaturan Sistem agar antarmuka lebih fokus dan rapi.

v1.2.0 ⚠️ Update Wajib Build #12
04 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.2.0 — Stabilitas & Kemudahan Manajemen Sistem

Pembaruan ini membawa kemudahan pengelolaan lisensi langsung di dashboard, deteksi perangkat yang lebih stabil, pemeliharaan sistem otomatis, serta keandalan ujian offline/intranet.

📋
Salin Machine ID 1-Klik di Dashboard

Machine ID server kini tampil langsung di kartu Informasi Sistem Admin Dashboard lengkap dengan tombol Salin instan untuk mempermudah proses aktivasi lisensi sekolah.

🛡️
Identitas Perangkat Keras Lebih Stabil

Peningkatan deteksi hardware mencegah Machine ID berubah saat kabel LAN dilepas atau ketika adapter jaringan berganti, menjamin lisensi aktif tetap terkunci dengan aman.

🌐
Mode Siap Pakai & Dukungan Jaringan Offline

Instalasi baru kini langsung aktif dengan mode gratis bawaan (Community Edition), dan server tetap berjalan normal tanpa kendala meski dioperasikan di jaringan lokal tertutup tanpa internet.

🧹
Pemeliharaan & Pembersihan Log Otomatis

Sistem otomatis memangkas dan merotasi berkas catatan log di latar belakang, menjaga ruang penyimpanan (disk) server sekolah tetap hemat dan performa selalu ringan.

Peningkatan Kecepatan & Kestabilan Ujian

Optimasi database dan layanan background untuk memastikan kelancaran respons aplikasi saat siswa mengerjakan ujian secara bersamaan.

v1.1.0 ⚠️ Update Wajib Build #11
03 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.1.0 — Filter Cepat Soal, Rumus Matematika Rapi & Koreksi Essay Bersama

Kemudahan menyaring tipe soal di bank soal, perbaikan tampilan rumus matematika mengalir, kunci soal Benar/Salah lebih presisi, pemantauan nilai langsung, dan fitur koreksi essay bersama guru lain.

🗂️
Filter Cepat Tipe Soal 1-Klik di Bank Soal

Cukup klik kartu ringkasan tipe soal di bagian atas bank soal untuk langsung menyaring daftar butir soal yang diinginkan dengan cepat dan interaktif.

📐
Rumus Matematika & Matriks Lebih Rapi

Tampilan rumus matematika LaTeX dan matriks kini tersambung rapi tanpa jeda baris yang terputus, baik pada pratinjau bank soal maupun layar ujian siswa.

Ketelitian Kunci Soal Benar/Salah

Tombol opsi Benar dan Salah di formulir pembuatan soal kini terkunci terpisah dan menyajikan status kunci jawaban yang pasti dan akurat.

📝
Koreksi Soal Essay Bersama Guru Kolaborator

Panitia dapat menugaskan guru mata pelajaran sebagai kolaborator pasca-ujian untuk bersama-sama memeriksa dan memberi nilai soal uraian secara aman.

Pemantauan Nilai Sementara (Live Score)

Pengawas dan proktor dapat memantau perolehan skor sementara peserta yang sedang mengerjakan ujian secara langsung tanpa membebani server ujian.

🛡️
Pengaturan Hak Akses Pengawas Lebih Fleksibel

Hak akses kini dapat diatur secara detail, misalnya membedakan peran pengawas ruangan murni dengan guru yang bertugas mengoreksi nilai.

v1.0.9 ⚠️ Update Wajib Build #10
02 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.0.9 — Identitas Resmi Sekolah & Akses Cepat Dashboard

Tampilan identitas resmi sekolah pada halaman login dan portal sistem, integrasi profil instansi, serta penyelarasan tombol pintasan cepat di dashboard.

🏛️
Identitas Resmi Sekolah di Halaman Login

Menampilkan logo, nama sekolah, dan NPSN secara elegan pada halaman masuk siswa dan guru, menegaskan identitas resmi instansi penyelenggara ujian.

🖥️
Integrasi Profil Sekolah pada Menu & Navigasi

Logo dan nama sekolah tampil rapi pada bilah navigasi admin dan header portal siswa untuk memperkuat kesan profesional.

📱
Tampilan Login Mobile Lebih Adaptif

Tampilan di layar HP secara otomatis menyesuaikan proporsi logo dan nama sekolah dengan tata letak yang bersih dan ramah layar sentuh.

🔗
Penyelarasan Tautan Pintasan Cepat Dashboard

Seluruh tombol pintasan di dashboard (Buat Soal AI, Data Peserta, Rekap Nilai, dan Cadangan) kini langsung mengarah ke halaman tujuan dengan presisi.

v1.0.8 ⚠️ Update Wajib Build #9
02 September 2026

Pembaruan & Perbaikan:

🚀 Rilis v1.0.8 — Standar Excel Resmi, NIP Guru & Safe Exam Browser

Tampilan berkas ekspor Excel berstandar resmi, integrasi NIP guru pada dokumen ujian, akurasi batas kelulusan soal, serta integrasi Safe Exam Browser (SEB) untuk edisi Whitelabel.

💎
Format Ekspor & Template Excel Berstandar Resmi

Seluruh berkas unduhan Excel (Siswa, Ruang, Mapel, Pengguna) kini memiliki kop instansi resmi, petunjuk pengisian yang jelas, dan tabel bergaris rapi.

🪪
Dukungan NIP & Lembar Tanda Tangan Resmi

Kolom NIP guru pengampu kini otomatis tercetak pada lembar berita acara, daftar hadir, dan lembar analisis butir soal ujian.

📊
Akurasi Status Kelulusan & Peringkat Nilai Siswa

Penentuan status kelulusan disesuaikan dengan KKM secara konsisten, dilengkapi penentuan peringkat nilai peserta yang adil berdasarkan nilai dan waktu pengerjaan.

🛡️
Hapus Massal Pengguna Aman 2-Tahap

Penghapusan akun pengguna dilengkapi proteksi data: sistem mencegah penghapusan jika akun masih memiliki bank soal atau jadwal aktif, serta menyediakan opsi transfer kepemilikan data ke guru lain.

🖥️
Generator Safe Exam Browser (.seb) Whitelabel

Fasilitas pembuatan file setelan ujian terkunci penuh untuk laptop Windows, Mac, dan iPad khusus sekolah pengguna Whitelabel Edition.

PANDUAN LENGKAP & RUNBOOK

Tutorial Instalasi Langkah Demi Langkah

Pilih lingkungan deployment target Anda untuk melihat perintah instalasi lengkap siap salin.

JWT Secret Generator

Buat 2 secret aman (64 karakter, URL-safe) langsung di browser — tidak dikirim ke server

🔑

Klik tombol ⚡ Generate Secrets untuk membuat JWT Secret yang aman secara kriptografis.

Dibuat menggunakan crypto.getRandomValues() — 100% client-side, tidak pernah meninggalkan browser Anda.

Secret di-generate secara kriptografis aman menggunakan Web Crypto API. Kedua secret harus berbeda — admin dan siswa memiliki scope token terpisah.

💡 Paste langsung ke file .env Anda. Re-generate kapan saja untuk mendapatkan nilai baru.

1

Instalasi PostgreSQL di VPS

Jalankan perintah berikut di terminal SSH VPS Anda untuk menginstal PostgreSQL dan membuat database mc_examgo:

# 1. Update & Install PostgreSQL
sudo apt update && sudo apt install -y postgresql postgresql-contrib
sudo systemctl enable --now postgresql

# 2. Buat User & Database mc_examgo
sudo -u postgres psql -c "CREATE USER mc_user WITH PASSWORD 'PasswordKuat!2026';"
sudo -u postgres psql -c "CREATE DATABASE mc_examgo OWNER mc_user;"
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE mc_examgo TO mc_user;"
2

Ekstraksi Paket & Izin Eksekusi

Buat direktori /opt/mc-examgo, ekstrak file zip installer (AMD64 atau ARM64), dan berikan hak eksekusi binary:

sudo mkdir -p /opt/mc-examgo/uploads /opt/mc-examgo/logs && cd /opt/mc-examgo
sudo unzip MC-ExamGo-amd64-v1.2.2.zip

# Beri izin eksekusi binary & proteksi .env
sudo chmod +x mc-exam-go-linux-amd64-v1.2.2 mc-exam-go-migrate-linux-amd64
sudo chmod 600 .env
3

Konfigurasi File .env

1. Buka editor nano untuk mengedit file .env:

sudo nano /opt/mc-examgo/.env

2. Sesuaikan konfigurasi database PostgreSQL dan JWT Secrets:

# Port aplikasi (Biarkan 8080 jika tidak ada bentrok)
SERVER_PORT=8080

# Zona Waktu Ujian: Asia/Jakarta (WIB) | Asia/Makassar (WITA) | Asia/Jayapura (WIT)
DB_TIMEZONE=Asia/Jakarta

# PostgreSQL (Wajib Diisi)
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mc_examgo
DB_USER=mc_user
DB_PASS=PasswordKuat!2026

# Keamanan Sistem (Dual JWT Wajib 64+ Karakter Acak)
JWT_SECRET=isi-dengan-string-acak-panjang-min-64-karakter-admin
JWT_STUDENT_SECRET=isi-dengan-string-acak-panjang-min-64-karakter-siswa
4

Migrasi Database (Sekali Saja)

Jalankan binary migrasi untuk membuat tabel dan data inisial default:

cd /opt/mc-examgo
sudo ./mc-exam-go-migrate-linux-amd64 --seed
5

Jalankan sebagai Systemd Service (Auto-Start)

1. Buka editor untuk membuat file unit service baru di sistem Linux:

sudo nano /etc/systemd/system/mc-examgo.service

2. Salin dan tempel konfigurasi service berikut ke dalam file tersebut:

[Unit]
Description=MC-ExamGO CBT Daemon Server
After=network.target postgresql.service
Wants=postgresql.service

[Service]
Type=simple
User=root
WorkingDirectory=/opt/mc-examgo
ExecStart=/opt/mc-examgo/mc-exam-go-linux-amd64-v1.2.2
Restart=always
RestartSec=5s
StandardOutput=append:/opt/mc-examgo/logs/app.log
StandardError=append:/opt/mc-examgo/logs/app.log

[Install]
WantedBy=multi-user.target

3. Simpan file, lalu aktifkan dan nyalakan service:

sudo systemctl daemon-reload && sudo systemctl enable --now mc-examgo
6

Nginx Reverse Proxy & SSL HTTPS

1. Instal Nginx dan Certbot untuk mengelola web server dan sertifikat SSL:

sudo apt update && sudo apt install -y nginx certbot python3-certbot-nginx

2. Buka editor untuk membuat konfigurasi virtual host Nginx:

sudo nano /etc/nginx/sites-available/mc-examgo

3. Tempelkan konfigurasi proxy Nginx berikut (sesuaikan cbts.sekolahanda.sch.id dengan domain Anda):

server {
    listen 80;
    server_name cbts.sekolahanda.sch.id;
    client_max_body_size 100M;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_read_timeout 300s;
    }
}

4. Aktifkan konfigurasi situs, reload Nginx, dan pasang SSL Let's Encrypt otomatis:

sudo ln -s /etc/nginx/sites-available/mc-examgo /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d cbts.sekolahanda.sch.id
1

Buat Situs Baru dengan Template "Reverse proxy"

1. Masuk ke dashboard FastPanel Anda (https://IP-VPS:8888).
2. Klik tombol utama + Create site (+ Buat situs) di panel atas.
3. Pada layar Site Creation Wizard (Choose template), pilih template Reverse proxy (Ikon tameng dengan teks "Increase security, performance, and reliability").

2

Domain Binding, Backend Port 8080 & Setup Database

1. Domain binding: Masukkan domain/subdomain sekolah di kolom Which domain to bind? (contoh: cbts.sekolahanda.sch.id), pilih IP VPS → Klik Next step.
2. Configuration (Sesuaikan kartu konfigurasi):

A. Kartu Backend (Reverse Proxy Target)

Klik ikon edit pada kartu Backend → arahkan target ke: http://127.0.0.1:8080.

B. Kartu Database (Otomatis Buat DB & User)

Klik ikon edit pada kartu Database, lalu sesuaikan:

  • Enable: Aktifkan toggle switch (ON).
  • Name: Masukkan nama database mc_examgo.
  • Server: Pilih PostgreSQL (Jika belum muncul di dropdown, instal PostgreSQL dari menu Applications/Layanan FastPanel).
  • User: Pilih Create a new user.
  • Login: Masukkan username mc_user.
  • Password: Klik Generate atau buat password kuat, lalu catat/simpan password ini untuk file .env.

3. Klik tombol Create site. FastPanel akan otomatis menyusun Nginx Reverse Proxy, direktori webroot, dan database PostgreSQL!

3

Upload Paket & Edit File .env via File Manager

1. Buka menu Files (File Manager) pada kartu situs yang baru dibuat di FastPanel.
2. Upload file paket MC-ExamGo-amd64-v1.2.2.zip lalu klik Extract (Ekstrak) di direktori root tersebut.
3. Buat folder baru bernama uploads dan logs (jika belum ada).
4. Edit file .env langsung dari File Manager FastPanel:

SERVER_PORT=8080
DB_TIMEZONE=Asia/Jakarta

# Database PostgreSQL FastPanel
DB_HOST=127.0.0.1
DB_PORT=5432
DB_NAME=mc_examgo
DB_USER=mc_user
DB_PASS=PasswordKuatYangDibuatTadi

# Dual JWT Secrets (Wajib min. 64 karakter acak)
JWT_SECRET=isi-dengan-string-acak-panjang-min-64-karakter-admin
JWT_STUDENT_SECRET=isi-dengan-string-acak-panjang-min-64-karakter-siswa
4

Beri Hak Eksekusi & Jalankan Migrasi Database

Buka SSH Terminal di FastPanel (atau terminal SSH eksternal seperti PuTTY / Terminal), lalu jalankan perintah berikut:

# 1. Masuk ke direktori web situs Anda di FastPanel
cd /var/www/*/data/www/cbts.sekolahanda.sch.id

# 2. Beri izin eksekusi binary & proteksi .env
sudo chmod +x mc-exam-go-linux-amd64-v1.2.2 mc-exam-go-migrate-linux-amd64
sudo chmod 600 .env

# 3. Jalankan migrasi database
sudo ./mc-exam-go-migrate-linux-amd64 --seed

Tunggu hingga muncul konfirmasi: "AutoMigrate completed successfully!"

5

Jalankan Server Daemon (Systemd Service)

Agar server Go terus aktif di latar belakang dan otomatis hidup saat VPS restart:

sudo nano /etc/systemd/system/mc-examgo.service

Salin konfigurasi berikut (sesuaikan USER_ANDA dengan user pengelola situs FastPanel Anda):

[Unit]
Description=MC-ExamGO FastPanel Daemon Server
After=network.target postgresql.service
Wants=postgresql.service

[Service]
Type=simple
User=root
WorkingDirectory=/var/www/USER_ANDA/data/www/cbts.sekolahanda.sch.id
ExecStart=/var/www/USER_ANDA/data/www/cbts.sekolahanda.sch.id/mc-exam-go-linux-amd64-v1.2.2
Restart=always
RestartSec=5s
StandardOutput=append:/var/www/USER_ANDA/data/www/cbts.sekolahanda.sch.id/logs/app.log
StandardError=append:/var/www/USER_ANDA/data/www/cbts.sekolahanda.sch.id/logs/app.log

[Install]
WantedBy=multi-user.target

Aktifkan dan jalankan service:

sudo systemctl daemon-reload && sudo systemctl enable --now mc-examgo
sudo systemctl status mc-examgo
6

Pasang Sertifikat SSL Let's Encrypt 1-Klik

Karena Nginx Reverse Proxy sudah otomatis dikonfigurasikan oleh FastPanel pada langkah 2, Anda hanya perlu mengaktifkan SSL HTTPS:

1. Buka kartu situs Anda di dashboard FastPanel → Buka menu SSL Certificates.
2. Klik + New certificate → Pilih Let's Encrypt.
3. Centang opsi Redirect HTTP to HTTPS → Klik Save.
4. Buka https://cbts.sekolahanda.sch.id di browser. Server MC-ExamGO siap digunakan! 🚀

1

Install PostgreSQL untuk Windows

1. Download installer resmi PostgreSQL dari postgresql.org/download/windows.
2. Jalankan instalasi, tetapkan password superuser postgres.
3. Buka aplikasi pgAdmin 4, klik kanan DatabasesCreateDatabase → Isi nama: mc_examgo.

2

Ekstrak ZIP & Konfigurasi .env

Ekstrak file MC-ExamGo-Win-v1.2.2.zip ke folder (misal: C:\MC-ExamGo-Win). Buka file .env menggunakan Notepad dan sesuaikan:

# Port aplikasi
SERVER_PORT=8080

# Zona Waktu Ujian
DB_TIMEZONE=Asia/Jakarta

# PostgreSQL Windows
DB_HOST=localhost
DB_PORT=5432
DB_NAME=mc_examgo
DB_USER=postgres
DB_PASS=password_postgresql_anda

# Keamanan Sistem (Dual JWT Wajib 64+ Karakter Acak)
JWT_SECRET=isi-karakter-acak-panjang-min-64-karakter-admin
JWT_STUDENT_SECRET=isi-karakter-acak-berbeda-untuk-siswa
3

Migrasi Database (Sekali Saja)

Buka Command Prompt (cmd) atau PowerShell, arahkan ke folder, lalu jalankan migrasi:

cd C:\MC-ExamGo-Win
mc-exam-go-migrate.exe --seed

Tunggu hingga muncul pesan: "AutoMigrate completed successfully! Migration process finished."

4

Jalankan Server MC-ExamGO

Klik ganda file mc-exam-go-windows-amd64-v1.2.2.exe atau jalankan via Command Prompt:

cd C:\MC-ExamGo-Win
mc-exam-go-windows-amd64-v1.2.2.exe
5

Akses Aplikasi di Browser

Portal Siswa:
http://localhost:8080
Login Administrator:
http://localhost:8080/admin/login

Optimasi Performa Ekstrem (Avalanche Load Protection)

Terapkan konfigurasi ini pada server VPS produksi (Ubuntu / Debian / FastPanel) agar server mampu menampung lonjakan ribuan siswa login dan submit jawaban serentak tanpa socket drop atau 502 Bad Gateway.

1

Optimasi Kernel Linux & File Descriptors

Jalankan perintah ini melalui terminal SSH VPS untuk menaikkan batas koneksi socket dan antrean TCP kernel (sudah dilengkapi sudo siap salin):

# 1. Naikkan batas open file descriptor sesi saat ini ke 65.535
sudo ulimit -n 65535

# 2. Tambahkan tuning TCP Network ke /etc/sysctl.conf
sudo bash -c 'cat << "EOF" >> /etc/sysctl.conf
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_local_port_range = 1024 65535
EOF'

# 3. Terapkan perubahan kernel secara instan
sudo sysctl -p
2

Optimasi Nginx Global (/etc/nginx/nginx.conf)

1. Buka file konfigurasi global Nginx dengan editor nano:

sudo nano /etc/nginx/nginx.conf

2. Sesuaikan atau tambahkan baris worker_rlimit_nofile dan blok events:

user www-data;
worker_processes auto;
worker_rlimit_nofile 65535; # Batas file descriptor worker

events {
    worker_connections 20480; # Izinkan hingga 20.480 koneksi per worker
    multi_accept on;
    use epoll;
}
3

Optimasi Upstream Keepalive & Vhost Buffer

Pilih lokasi penyuntingan konfigurasi virtualhost sesuai panel yang Anda gunakan:

Linux CLI:

Buka file virtualhost Nginx:

sudo nano /etc/nginx/sites-available/mc-examgo
FastPanel Web GUI:

Buka FastPanel → Kartu Situs → Settings (Pengaturan)Manual configuration (Konfigurasi Nginx).

Gunakan koneksi pipa persisten (keepalive pool) dan konfigurasi buffer berikut pada virtual host:

# 1. Pipa koneksi persisten ke Go Backend (Letakkan di luar blok server {})
upstream mc_examgo_backend {
    server 127.0.0.1:8080;
    keepalive 512; # Mencegah Nginx membuka-tutup port lokal berulang kali
}

# 2. Blok server situs Anda
server {
    server_name cbts.sekolahanda.sch.id;

    location / {
        proxy_pass http://mc_examgo_backend;
        proxy_http_version 1.1;

        # Dukungan WebSocket / SSE & Telemetri Real-time
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        # Forward Headers
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header CF-Connecting-IP $http_cf_connecting_ip;

        # Buffer Tuning untuk Traffic Masif
        proxy_buffer_size 128k;
        proxy_buffers 4 256k;
        proxy_busy_buffers_size 256k;

        proxy_connect_timeout 60s;
        proxy_send_timeout 60s;
        proxy_read_timeout 60s;
    }
}

Terapkan dan muat ulang konfigurasi:

sudo nginx -t && sudo systemctl reload nginx
🪟

Arsitektur & Tuning Server Windows + Cloudflare (1.800 Siswa Simultan)

100% TERVERIFIKASI

Panduan teknis menyeluruh untuk menjalankan server lokal MC-ExamGO di Windows (Intel Ultra 7 / Core i7/i9, RAM 16–32GB) yang dihubungkan melalui Cloudflare Tunnel / Proxy untuk melayani hingga 1.800 siswa serentak tanpa lag, tanpa socket drop, dan tanpa IP publik statis.

Beban CPU Puncak

15% – 25%

Penggunaan RAM

~8.5 GB / 32 GB

Bandwidth Puncak

~21 Mbps / 94 Mbps

Edge Cache Ratio

~90% Statis di CDN

1

Konfigurasi Cloudflare Edge & Caching

Buka dashboard domain Anda di dash.cloudflare.com dan terapkan pengaturan berikut:

🔒 SSL / TLS Settings
  • Encryption Mode: Full (Strict)
  • Always Use HTTPS: ON
  • Minimum TLS Version: TLS 1.2
  • TLS 1.3: ON
Network & Protocols
  • HTTP/2 & HTTP/3 (QUIC): ON
  • 0-RTT Resumption: ON
  • WebSockets: ON (Wajib)
  • Brotli Compression: ON
📦 Cache Rules (Aset Statis)

Masuk ke Caching → Cache Rules → Buat rule:

URI Path match:
/assets/* OR /uploads/*
Edge TTL: 1 Month
2

Optimasi Windows OS TCP/IP & Dynamic Ports

Buka PowerShell as Administrator di server Windows dan jalankan script optimasi socket jaringan berikut:

# 1. Perluas Rentang Port Dinamis TCP (Ephemeral Ports) ke 64.511 port
netsh int ipv4 set dynamicport tcp start=1025 num=64511
netsh int ipv6 set dynamicport tcp start=1025 num=64511

# 2. Percepat Daur Ulang Socket TCP yang Selesai (30 detik, default 240 detik)
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "TcpTimedWaitDelay" -Value 30 -Type DWord
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" -Name "MaxUserPort" -Value 65534 -Type DWord

# 3. Kunci Skema Daya CPU ke High Performance (Intel / AMD Full Boost Clock)
powercfg /setactive 8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c
3

Optimasi PostgreSQL 16+ (postgresql.conf)

Buka file C:\Program Files\PostgreSQL\16\data\postgresql.conf dan sesuaikan konfigurasi RAM 32GB & NVMe SSD:

# ------------------------------------------------------------------------------
# OPTIMASI POSTGRESQL 16+ (RAM 32GB, NVMe SSD, 1.800 SISWA CONCURRENT)
# ------------------------------------------------------------------------------

# 1. KONEKSI POOLING
max_connections = 300                 # Cukup untuk pool Go (150) + Admin + Cadangan

# 2. MEMORI BUFFER
shared_buffers = 2GB                  # Maksimal 2GB-4GB di Windows
huge_pages = off                      # Wajib OFF di Windows
effective_cache_size = 18GB           # 60% dari total RAM untuk query planner
work_mem = 16MB                       # Memori sorting per operasi query
maintenance_work_mem = 512MB          # Memori untuk index & vacuum

# 3. STORAGE & CHECKPOINT (NVMe SSD High IOPS)
checkpoint_completion_target = 0.9    # Meratakan penulisan checkpoint ke SSD
checkpoint_timeout = 15min
min_wal_size = 1GB
max_wal_size = 8GB
random_page_cost = 1.1                # Nilai optimal untuk NVMe PCIe SSD
effective_io_concurrency = 200        # Paralelisasi baca-tulis SSD

# 4. QUERY PLANNER & PARALLEL WORKERS
max_worker_processes = 16
max_parallel_workers_per_gather = 4
max_parallel_workers = 16
max_parallel_maintenance_workers = 4
Restart service PostgreSQL untuk menerapkan perubahan:
4

Checklist Pengujian Pra-Ujian 1.800 Siswa

1. Uji Latensi Jaringan Internal

Buka menu Uji Jaringan di Navbar Admin MC-ExamGO untuk memastikan Ping rata-rata di bawah 30 ms.

2. Verifikasi Cloudflare Proxy

Pastikan status awan di DNS Cloudflare berwarna Orange (Proxied) untuk proteksi DDoS dan edge caching.

3. Simulasi Login Massal (Dry Run)

Lakukan uji coba login serentak dengan 1–2 lab komputer (60–100 siswa) untuk memastikan access point Wi-Fi stabil.

4. Backup Database Terjadwal

Atur backup harian otomatis ke drive penyimpanan sekunder (HDD / Cloud Storage) melalui menu Pengaturan → Backup.

🧪

Pengujian Kinerja Uji Beban Mandiri (K6 Engine)

Uji beban dilakukan dari mesin penguji terpisah (laptop atau VPS terpisah) untuk mensimulasikan 10.000 siswa melakukan login, mengambil soal, dan mengirim jawaban secara bersamaan.

1

Instalasi K6 CLI pada Mesin Penguji

Pilih OS komputer penguji Anda untuk menginstal K6:

Windows (PowerShell):
winget install k6 --source winget
Ubuntu / Debian:
sudo apt update && sudo apt install -y k6
2

Persiapan Akun & Sesi Ujian di Admin CBT

1. Login ke Dashboard Admin CBTMaster Data > Peserta/Siswa → Klik Impor Excel.
2. Unggah file akun simulasi (misal: akun ST00001 s.d ST20000 dengan password password123).
3. Buka menu Jadwal Ujian → Buat 1 Jadwal Ujian Aktif hari ini yang mencakup peserta tersebut.

3

Script Uji Beban Bertahap (stress_vps.js)

Simpan script berikut sebagai stress_vps.js di komputer penguji Anda (sesuaikan BASE_URL):

import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
  stages: [
    { duration: '45s', target: 1000 },   // Tahap 1: Pemanasan & TLS Pooling (1.000 Siswa)
    { duration: '1m',  target: 3000 },   // Tahap 2: Beban 1 Sekolah (3.000 Siswa)
    { duration: '1m',  target: 6000 },   // Tahap 3: Beban Gabungan (6.000 Siswa)
    { duration: '1m30s', target: 10000 },// Tahap 4: Lonjakan Puncak (10.000 Siswa)
    { duration: '30s', target: 0 },      // Tahap 5: Cool-down (Selesai)
  ],
  thresholds: {
    http_req_duration: ['p(95)<2000'],   // 95% request di bawah 2 detik
    http_req_failed: ['rate<0.01'],      // Error rate di bawah 1%
  },
};

const BASE_URL = 'https://cbts.sekolahanda.sch.id/api';
const STUDENT_PASSWORD = 'password123';

let cachedToken = null;
let cachedSessionId = null;

export default function () {
  const studentId = `ST${__VU.toString().padStart(5, '0')}`;

  // 1. Login Siswa
  if (!cachedToken) {
    const loginRes = http.post(`${BASE_URL}/auth/student/login`, JSON.stringify({
      student_id: studentId,
      password: STUDENT_PASSWORD,
    }), { headers: { 'Content-Type': 'application/json' } });
    if (!check(loginRes, { 'Login 200 OK': (r) => r.status === 200 })) return;
    cachedToken = loginRes.json('data.token');
    if (!cachedToken) return;
  }

  const authHeaders = { headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${cachedToken}` } };

  // 2. Mulai Ujian
  if (!cachedSessionId) {
    const dashboardRes = http.get(`${BASE_URL}/student/dashboard/schedules`, authHeaders);
    const schedules = dashboardRes.json('data');
    if (schedules && schedules.length > 0) {
      const scheduleId = schedules[0].schedule_id || schedules[0].id;
      const startRes = http.post(`${BASE_URL}/student/exam/start/${scheduleId}`, "{}", authHeaders);
      const sessionData = startRes.json('data');
      if (sessionData && sessionData.session_id) cachedSessionId = sessionData.session_id;
    }
  }

  // 3. Sync Jawaban Real-time
  if (cachedSessionId) {
    const answerPayload = JSON.stringify({ answers: { "1": { selected_id: 1, type: "multiple_choice" } } });
    http.post(`${BASE_URL}/student/exam/${cachedSessionId}/sync`, answerPayload, authHeaders);
  }

  sleep(Math.random() * 2 + 1);
}
4

Jalankan Pengujian & Standar Kelulusan Enterprise

Jalankan perintah berikut di terminal komputer penguji:

k6 run stress_vps.js
Metrik Uji Beban Standar Lulus Enterprise Keterangan
checks_succeeded ≥ 99.0% Persentase request login & submit yang sukses.
http_req_failed < 0.05% Tingkat kegagalan koneksi socket / timeout.
http_req_duration (med) < 400 ms Waktu respon server rata-rata di bawah 0.4 detik.
http_reqs (Throughput) ≥ 1.000 / detik Kapasitas transaksi serentak yang diproses server.
🤖

Panduan Instalasi & Setup 9Router AI Gateway

Unified AI Model Router & Local Proxy untuk Pembuatan Soal CBT Berkecepatan Tinggi

9Router bertindak sebagai proxy cerdas yang menyatukan berbagai provider AI (Google Gemini, Anthropic Claude, OpenAI, DeepSeek, OpenRouter) ke dalam satu endpoint standar OpenAI. Dilengkapi dengan RTK Token Saver (hemat token 20%–60%) serta Automatic Fallback otomatis antar provider.

Lingkungan 1

Instalasi di Windows (Lokal / Laptop Guru / Admin)

1
Install 9Router secara Global via NPM

Pastikan laptop/PC Anda sudah terinstall Node.js v18+ LTS (nodejs.org). Buka PowerShell atau Command Prompt (Run as Administrator), lalu jalankan perintah:

npm install -g --allow-scripts=9router 9router
2
Jalankan 9Router di Background (System Tray)

Jalankan 9Router di latar belakang agar icon muncul di pojok kanan bawah taskbar Windows:

# Jalankan di background (system tray)
9router -t

# Atau mode foreground biasa (otomatis buka browser dashboard)
9router

💡 Setelah berjalan, dashboard web dapat diakses di browser melalui alamat: http://localhost:20128

Lingkungan 2

Instalasi di Linux VPS (Ubuntu 22.04 / 24.04 / Debian)

1
Install Node.js 20 & 9Router di VPS

Masuk via SSH ke server VPS Anda dan jalankan perintah:

# 1. Setup NodeSource Node.js 20 LTS & screen
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs screen

# 2. Install 9router global
sudo npm install -g 9router
2
Jalankan 9Router sebagai Systemd Service di VPS

9Router membutuhkan TTY interaktif dan melarang login remote jika password masih default. Konfigurasi Systemd dengan wrapper screen dan variabel INITIAL_PASSWORD adalah cara paling stabil di lingkungan server:

# 1. Pasang Systemd Service (Ganti PasswordRahasiaAnda dengan password pilihan Anda)
sudo bash -c 'cat << "EOF" > /etc/systemd/system/9router.service
[Unit]
Description=9Router AI Gateway Service
After=network.target

[Service]
Type=forking
User=root
WorkingDirectory=/usr/lib/node_modules/9router/app
Environment=PORT=20128
Environment=HOSTNAME=0.0.0.0
Environment=NODE_ENV=production
# PENTING: Wajib diisi agar bisa login via Domain/Remote VPS
Environment=INITIAL_PASSWORD=PasswordRahasiaAnda123!
ExecStart=/usr/bin/screen -dmS 9router /usr/bin/9router --host 0.0.0.0 --port 20128 -n
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF'

# 2. Aktifkan dan jalankan service
sudo systemctl daemon-reload
sudo systemctl enable --now 9router
⚠️ Catatan Keamanan Remote Login (INITIAL_PASSWORD)

Jika Anda mengakses dashboard melalui Domain/Subdomain (bukan localhost), 9Router secara default menolak login jika masih menggunakan default password (123456). Dengan memasang Environment=INITIAL_PASSWORD=... di file service di atas, Anda dapat langsung login dari browser menggunakan password tersebut.

3
Konfigurasi Reverse Proxy Nginx (Opsional / Manual Non-Panel)

Jika VPS Anda menggunakan Nginx manual (bukan control panel), gunakan konfigurasi vhost berikut:

server {
    listen 80;
    server_name ai.sekolah.sch.id;

    location / {
        proxy_pass http://127.0.0.1:20128;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_cache_bypass $http_upgrade;

        # Nonaktifkan buffer agar streaming respons AI lancar
        proxy_buffering off;
        proxy_read_timeout 300s;
    }
}
Lingkungan 3

Instalasi di FastPanel VPS (Web GUI + Subdomain SSL)

1
Install Node.js & 9Router Service di VPS

Buka terminal SSH (bisa via menu SSH Console di FastPanel atau aplikasi PuTTY/Termius), lalu pasang 9Router dan service daemon-nya:

# 1. Pastikan Node.js 20 LTS & screen terpasang
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs screen

# 2. Install 9router global
sudo npm install -g 9router

# 3. Buat Systemd Service (Sertakan INITIAL_PASSWORD agar bisa login remote)
sudo bash -c 'cat << "EOF" > /etc/systemd/system/9router.service
[Unit]
Description=9Router AI Gateway Service
After=network.target

[Service]
Type=forking
User=root
WorkingDirectory=/usr/lib/node_modules/9router/app
Environment=PORT=20128
Environment=HOSTNAME=0.0.0.0
Environment=NODE_ENV=production
Environment=INITIAL_PASSWORD=PasswordRahasiaAnda123!
ExecStart=/usr/bin/screen -dmS 9router /usr/bin/9router --host 0.0.0.0 --port 20128 -n
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
EOF'

sudo systemctl daemon-reload
sudo systemctl enable --now 9router
2
Buat Subdomain Reverse Proxy di FastPanel

1. Masuk ke dashboard FastPanel Anda (https://IP-VPS:8888).
2. Klik tombol + Create site (+ Buat situs) di pojok atas.
3. Pilih template Reverse proxy (Ikon Tameng/Server).
4. Which domain to bind? Masukkan subdomain khusus AI Anda, contoh: 9r.domainanda.com (pastikan DNS A-record subdomain sudah diarahkan ke IP VPS Anda).
5. Di menu Settings situs → tab Backend (PHP, Reverse proxy, etc.):
  • Backend type: Reverse proxy
  • Address list: Type host, Address: http://127.0.0.1:20128
6. Nonaktifkan database jika ada, lalu simpan (Save).

3
Pasang Sertifikat SSL Let's Encrypt (1-Click)

Agar komunikasi AI berjalan aman via protokol HTTPS:

  • Buka kartu situs 9r.domainanda.com di FastPanel.
  • Pilih menu HTTPS / SSL certificates → Klik + New certificate.
  • Pilih tipe Let's Encrypt, aktifkan opsi Redirect HTTP to HTTPS, lalu klik Save.
  • Buka browser ke https://9r.domainanda.com/login dan login dengan password yang telah Anda pasang pada INITIAL_PASSWORD.
Langkah Akhir

Menghubungkan 9Router ke MC-ExamGO

1
Setup API Key di Dashboard 9Router:

Buka http://localhost:20128 (atau URL VPS Anda). Masukkan API Key asli Anda (Gemini, Claude, DeepSeek, dll.). Buka menu Endpoints / Keys dan salin Master Key yang digenerate (format sk-...).

2
Sesuaikan File .env MC-ExamGO (Opsional):

Secara default MC-ExamGO otomatis terhubung ke http://localhost:20128/v1. Jika 9Router Anda berada di subdomain/server terpisah, tambahkan baris berikut pada file .env backend:

NINEROUTER_BASE_URL=http://localhost:20128/v1
3
Masukkan Key di Menu Admin MC-ExamGO:

Buka panel Admin → Pengaturan Aplikasi → Tab AI Configuration → Masukkan Master Key Anda pada kolom 9Router API Key → Klik Simpan Pengaturan.

4
Daftarkan Model di Menu Model AI:

Buka menu Model AI → Klik Tambah Model Baru → Pilih Provider: 9Router (Local / Proxy) → Masukkan Kode Model yang ingin diarahkan (misal: gemini-2.0-flash, claude-3-5-sonnet-20241022, deepseek-chat) → Simpan & aktifkan!

ESTIMASI KEBUTUHAN SERVER

Kalkulator Spesifikasi Server Ujian

Geser slider untuk mengetahui estimasi spesifikasi VPS atau hardware lokal yang ideal untuk jumlah siswa Anda.

100 Siswa 1.000 Siswa 2.500 Siswa 5.000 Siswa
Processor (CPU)

Kapasitas RAM

Bandwidth Jaringan

Penyimpanan SSD

⚠️

Informasi Login Default & Keamanan Pasca Instalasi

Email Admin: admin@mc-exam.go
Password Default: admin123

*Segera ganti kata sandi Administrator dan masukkan API Key AI (Google Gemini / OpenRouter) pada menu Pengaturan Aplikasi setelah login pertama kali.

🚀 Overview 🏛️ 5 Pilar Arsitektur 🔄 Smart Importer Benchmark Kecepatan 📥 Pusat Unduhan 📜 Changelog Rilis 🛠️ Panduan Instalasi 🧮 Kalkulator Server