b.lan — Remote Desktop Sesaat dari Browser untuk Home Server yang Ogah Dipasangi Desktop Environment
Beberapa minggu terakhir aku cukup sering bolak-balik antara terminal dan browser untuk ngurusin home server. Kadang butuh buka halaman admin router, kadang butuh tes tampilan website dari sisi client, atau sekedar download file dengan Chrome yang sudah login akun tertentu. Tiap kali harus SSH dengan port forwarding, atau copy link ke browser lokal, rasanya ribet banget untuk ukuran pekerjaan 5 detik.
Pikiran untuk pasang Desktop Environment (DE) sempat muncul. Tapi DE kayak XFCE, apalagi GNOME atau KDE, terlalu berat buat server yang tugas utamanya cuma naruh Nginx, MySQL, dan beberapa service ringan. Belum lagi mereka narik dependensi puluhan paket, display manager, compositor — yang notabene bakal jalan terus 24/7 walaupun nggak dipakai.
Makanya aku buat b.lan: remote desktop on-demand yang cuma jalan kalau dipakai, mati otomatis kalau nganggur, dan total cuma 50 MB RAM saat idle.
Kenapa Nggak Pasang DE Saja?
Ini pertanyaan yang sering muncul tiap aku cerita soal setup ini. Jawabannya sederhana: resource. Server HP 14s ini cuma punya 8 GB RAM dan processor yang pas-pasan. Nginx, PHP-FPM, MySQL, dan beberapa service lain udah makan 1–2 GB. Nambah DE berarti nambah 300 MB–2 GB yang jalan terus meskipun nggak ada yang login.
Yang aku butuhin bukan desktop 24/7. Yang aku butuhin adalah: kemampuan untuk "meminjam" layar sesaat saat diperlukan, lalu mengembalikannya saat selesai. Kayak nyewa komputer, bukan beli.
| Komponen | RAM | Jalan Terus? |
|---|---|---|
| Full DE (XFCE) | ~300 MB | Ya |
| Full DE (GNOME/KDE) | ~1–2 GB | Ya |
| b.lan (idle) | ~50 MB | Tidak — mati saat idle |
| Chrome (1 tab) | ~200 MB | Hanya saat dipakai |
Ini Dia b.lan
b.lan (b.lan — iya, cuma 4 huruf) adalah remote desktop berbasis browser yang bisa diakses dari perangkat mana pun di jaringan lokal. Cukup buka https://b.lan di browser, klik "Mulai Session", dan dalam beberapa detik kamu punya desktop virtual lengkap dengan Chrome, file manager, dan terminal.
Tampilan awal — remote desktop siap dinyalakan dengan satu klik
Waktu session sudah jalan, tampilannya berubah jadi toolbar sederhana dengan iframe yang nyambung langsung ke virtual desktop via noVNC. Dari sini kamu bisa:
- Browsing pake Chrome yang sudah login dengan akun-akunmu
- Jelajahi file server pake Thunar File Manager (Ctrl+Alt+F)
- Akses terminal langsung pake xfce4-terminal (Ctrl+Alt+T)
- Buka Chrome baru (Ctrl+Alt+C)
- Stop session kapan saja dengan tombol Stop
Session sedang berjalan — toolbar minimal di atas, desktop virtual di dalam iframe
Yang Bisa Dilakukan di Virtual Desktop
1. Chrome Browser
Chrome Stable 149 berjalan di virtual display. Profilnya terpisah dari Chrome lokalku — jadi bisa login dengan akun-akun tertentu yang khusus untuk keperluan server (tes website, akses router, download file).
Chrome berjalan di Xvfb display :99 — terlihat seperti desktop biasa padahal cuma virtual
2. File Explorer — Thunar
Ini fitur yang paling sering kupakai. Dengan Thunar, aku bisa navigasi file server pakai GUI — copy-paste file, buka direktori, lihat thumbnail gambar. Jauh lebih cepat daripada ls berulang-ulang di terminal kalau lagi explorasi folder yang nggak familiar.
Thunar File Manager — browsing file server jadi lebih直观 daripada ls berkali-kali
3. Terminal — xfce4-terminal
Iya, di dalam virtual desktop yang isinya Chrome dan file manager, ada terminal juga. Multitasking jadi lebih enak: terminal di satu jendela, browser di jendela lain, dalam satu layar yang sama.
Terminal di samping browser — kerja jadi lebih fleksibel
Arsitektur Teknis
Di balik tampilan sederhananya, b.lan menggunakan stack yang ringan tapi powerful:
Alur datanya gini:
Browser (client)
↓ HTTPS
Nginx (b.lan:443)
↓ proxy
noVNC / websockify (:6080)
↓ WebSocket
x11vnc (:5900)
↓
Xvfb (:99)
↓
openbox + tint2 + Chrome + Thunar + Terminal
Buka halaman b.lan → Nginx serve index.html → JavaScript cek status → kalau mati, tampilkan tombol start → klik start, trigger systemctl start browser-session.service → Xvfb, x11vnc, websockify, openbox, tint2, Chrome jalan → noVNC konek via WebSocket → kamu lihat desktop.
Manajemen Siklus Hidup
Fitur yang paling aku suka: idle auto-stop. Setiap kali ada client VNC yang terhubung, file timestamp di-update. Kalau timer nggak di-reset (karena client disconnect) selama 30 menit, systemd langsung matiin service. Bersih, nggak ada proses menggantung.
| Endpoint | Fungsi |
|---|---|
/ | Halaman utama — offline page atau iframe noVNC |
/start | Mulai session (trigger systemctl start) |
/stop | Hentikan session |
/status | Cek status (running/stopped + idle seconds) |
/heartbeat | Update timestamp aktivitas (biar nggak ke-stop) |
Open Source di GitHub
Aku upload semua script-nya ke GitHub supaya siapa pun bisa pakai atau modifikasi: github.com/adammuizweb/browser.
Ada install.sh yang tinggal jalanin dengan sudo — dia akan install semua dependensi, setup systemd service, deploy Nginx config, dan siapkan web UI. Cocok untuk Debian/Ubuntu dan turunannya.
# Cara instalasi (sebagai root)
sudo bash install.sh
# Atau kustom domain
DOMAIN=browser.lan sudo bash install.sh
Setelah instalasi, tinggal set DNS (dnsmasq atau /etc/hosts) dan akses dari browser. HTTPS dengan self-signed cert via mkcert recommended biar nggak kena mixed content warning pas noVNC konek.
Kesimpulan
b.lan bukan pengganti SSH atau terminal — dia adalah pelengkap untuk situasi-situasi dimana CLI terasa kurang. Kadang kamu emang butuh GUI, tapi nggak berarti harus pasang DE heavyweight yang jalan 24/7.
Prinsipnya: service yang nggak dipakai seharusnya nggak pakai resource. b.lan hidup saat dibutuhkan, mati saat selesai. Simple, ringan, efektif.
Kalau kamu punya home server di rumah dan sering merasa "andai aja ada desktopnya bentar", coba deploy b.lan. Atau kalo nemu ide, pull request di repo selalu aku tunggu.