Tutorial

b.lan — Remote Desktop Sesaat dari Browser untuk Home Server yang Ogah Dipasangi Desktop Environment

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.

KomponenRAMJalan Terus?
Full DE (XFCE)~300 MBYa
Full DE (GNOME/KDE)~1–2 GBYa
b.lan (idle)~50 MBTidak — mati saat idle
Chrome (1 tab)~200 MBHanya saat dipakai
Catatan: Service b.lan mati total setelah 30 menit tidak ada koneksi VNC. Saat mati, resource yang dipakai = 0. Nol. Bandingkan dengan DE yang prosesnya tetap jalan walaupun kamu lagi tidur.

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 b.lan saat session sedang mati 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
Tampilan b.lan saat session berjalan dengan toolbar dan iframe noVNC 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 browser berjalan di virtual desktop 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 menampilkan file server 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 berjalan di virtual desktop Terminal di samping browser — kerja jadi lebih fleksibel

Arsitektur Teknis

Di balik tampilan sederhananya, b.lan menggunakan stack yang ringan tapi powerful:

Xvfb
Virtual framebuffer — bikin display palsu tanpa monitor
x11vnc
VNC server — share display X ke jaringan
websockify + noVNC
WebSocket bridge — VNC lewat browser tanpa plugin
openbox + tint2
Window manager minimal — taskbar + window management
Chrome Stable
Browser utama — profil persistent dengan login tersimpan
Thunar + xfce4-terminal
File manager + terminal — GUI lengkap tanpa DE

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.

Hasilnya: Tinggal tutup tab browser, balik 1 jam kemudian, service sudah mati sendiri. Nggak perlu ingat-ingat buat matiin manual. Resource server kembali lega tanpa beban.
EndpointFungsi
/Halaman utama — offline page atau iframe noVNC
/startMulai session (trigger systemctl start)
/stopHentikan session
/statusCek status (running/stopped + idle seconds)
/heartbeatUpdate 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.