Stack monitoring server yang berat sering jadi masalah tersendiri buat sysadmin yang mengelola VPS kecil atau server mikro. Prometheus plus Grafana memang powerful, tapi butuh RAM dan CPU yang tidak sedikit hanya untuk memantau server yang justru resource-nya terbatas. Di titik inilah Beszel muncul sebagai solusi server monitoring yang ringan, modern, dan cukup praktis untuk dipasang dalam hitungan menit.
Kenapa Monitoring Server Perlu Ringan
Sysadmin yang mengelola beberapa VPS kecil biasanya menghadapi dilema klasik: ingin punya visibilitas penuh terhadap CPU, RAM, disk, dan container, tapi tidak mau tool monitoring-nya justru memakan resource lebih besar dari aplikasi yang dipantau. Prometheus dengan time-series database-nya, ditambah Grafana sebagai dashboard, adalah kombinasi solid untuk skala enterprise. Namun untuk satu atau dua VPS dengan RAM 1-2 GB, stack ini terasa berlebihan.
Beszel hadir dengan pendekatan berbeda. Tool ini dibangun agar jejak memori dan CPU-nya jauh lebih kecil dibanding solusi konvensional, sekaligus tetap menyediakan fitur yang dibutuhkan sysadmin sehari-hari: statistik Docker container real-time, histori data, dan sistem alerting. Karena arsitekturnya sederhana, kita bisa menjalankan Beszel di server kecil tanpa mengorbankan resource yang seharusnya dipakai aplikasi utama.
Apa Itu Beszel
Beszel adalah platform monitoring server ringan yang mencakup statistik Docker, data historis, dan fungsi alert. Tool open-source ini punya antarmuka web yang ramah pengguna, konfigurasi sederhana, dan siap dipakai langsung setelah instalasi. Beszel mendukung backup otomatis, multi-user, otentikasi OAuth, dan akses API untuk integrasi kustom.
Tool ini paling cocok untuk sysadmin, DevOps engineer, dan praktisi self-hosting yang butuh visibilitas cepat terhadap kondisi server tanpa harus membangun stack monitoring yang rumit. Developer yang mengelola beberapa VPS untuk proyek pribadi atau tim kecil juga akan merasa terbantu karena tidak perlu belajar query language seperti PromQL hanya untuk melihat grafik CPU.
Fitur Utama Beszel
Selain ringan, Beszel membawa sejumlah fitur yang membuatnya layak dipertimbangkan sebagai pengganti stack monitoring yang lebih berat.
Statistik Docker Real-Time
Beszel melacak penggunaan CPU, memori, dan jaringan untuk setiap container secara historis. Sysadmin bisa langsung melihat container mana yang boros resource tanpa harus masuk ke docker stats secara manual satu per satu.
Alerting dan Notifikasi
Sistem alert Beszel bisa dikonfigurasi untuk CPU, memori, disk, bandwidth, suhu, kecepatan kipas, load average, hingga status sistem. Notifikasi ini dikirim melalui Shoutrrr, library Go yang mendukung lebih dari 20 channel notifikasi, termasuk Discord, Telegram, Slack, Gotify, Pushover, dan webhook generik.
Multi-User dan OAuth
Setiap user bisa mengelola sistemnya sendiri, sementara admin dapat membagikan akses ke sistem tertentu ke user lain. Beszel mendukung otentikasi OAuth/OIDC dari lebih dari 20 provider publik seperti Google, GitHub, dan Microsoft, plus dukungan provider self-hosted seperti Authelia, authentik, Keycloak, dan Zitadel.
Backup Otomatis dan API
Data historis dan konfigurasi bisa di-backup ke disk lokal atau storage yang kompatibel dengan S3. Beszel juga menyediakan akses API untuk kebutuhan integrasi kustom, misalnya menarik data metrik ke sistem lain.
Arsitektur Hub dan Agent Beszel
Beszel memakai model dua komponen: Hub dan Agent. Pemisahan ini yang membuat Beszel tetap ringan meski memantau banyak server sekaligus.
Beszel Hub
Beszel Hub adalah aplikasi web yang dibangun di atas PocketBase, berfungsi sebagai server pusat pengumpul data sekaligus penyedia antarmuka web (UI). Semua dashboard, histori grafik, dan pengaturan alert dikelola dari Hub ini.
Beszel Agent
Beszel Agent adalah service ringan yang terpasang di setiap server yang ingin kita pantau. Agent bertugas mengumpulkan metrik sistem lokal, lalu mengirimkannya ke Hub untuk divisualisasikan.
Komunikasi Hub dan Agent
Hub dan Agent bisa saling berkomunikasi lewat dua mode: SSH atau WebSocket. Pada mode SSH, koneksi diinisiasi oleh Hub yang terhubung ke SSH server milik Agent di port 45876 secara default. Mode ini cocok kalau Hub bisa menjangkau Agent, tapi Agent tidak bisa menjangkau Hub, misalnya ketika Hub berada di jaringan privat. Saat pertama kali dijalankan, Hub men-generate key ED25519, dan SSH server di sisi Agent hanya menerima koneksi dengan key ini. SSH server tersebut tidak menyediakan pseudo-terminal atau menerima input, jadi meski private key bocor, attacker tetap tidak bisa menjalankan perintah di Agent. Pada mode WebSocket, giliran Agent yang menginisiasi koneksi ke URL Hub. Beszel memakai handshake otentikasi dua arah: Agent mengirim token registrasi lewat header HTTP, Hub membuktikan identitasnya dengan menandatangani token memakai private key-nya, lalu Agent membalas dengan fingerprint unik yang mengunci registrasinya ke mesin tempat ia berjalan. Pemilihan dua mode ini masuk akal karena topologi jaringan tiap server berbeda-beda, jadi Beszel memberi fleksibilitas mode mana yang lebih mudah dibuka di firewall masing-masing sysadmin.
Instalasi Beszel Hub dan Agent
Bagian ini memandu kita memasang Beszel dari nol: menjalankan Hub, menghubungkan Agent ke server target, sampai memantau statistik Docker.
Prasyarat Instalasi
Sebelum mulai, pastikan server sudah punya:
- Linux server (Ubuntu, Debian, atau CentOS) yang sudah update.
- Docker dan Docker Compose terpasang.
- Akses
rootatau user dengan haksudountuk menjalankan container.
Deploy Beszel Hub
Hub adalah komponen pertama yang perlu kita jalankan karena Agent butuh URL Hub untuk terhubung.
- Buat direktori kerja untuk Hub:
mkdir beszel && cd beszel - Buat file
docker-compose.ymldengan isi berikut:
Ganti nilaiservices: beszel: image: henrygd/beszel:latest container_name: beszel restart: unless-stopped environment: APP_URL: http://IP-atau-domain-hub:8090 ports: - 8090:8090 volumes: - ./beszel_data:/beszel_dataAPP_URLdengan alamat yang akan dipakai untuk mengakses Hub, misalnya domain atau IP publik server. - Jalankan Hub dengan Docker Compose:
docker compose up -d - Buka
http://IP-atau-domain-hub:8090di browser, lalu buat akun admin pertama saat diminta.
Menghubungkan Server dengan Agent
Setelah Hub aktif, langkah berikutnya menghubungkan server target yang ingin dipantau. Agent bisa dijalankan sebagai container Docker atau langsung sebagai binary native tanpa Docker sama sekali, tinggal pilih mana yang lebih cocok dengan server target.
- Di UI Hub, klik tombol Add System di pojok kanan atas.
- Isi alamat server target, lalu Hub akan menghasilkan
TOKENdanKEYunik untuk Agent tersebut. Sejak versi 0.12.0, kita juga bisa memakai universal token dari menu/settings/tokenssupaya tidak perlu membuat token baru tiap kali menambah server.
Deploy Agent dengan Docker
- Di server target, buat direktori kerja untuk Agent:
mkdir beszel-agent && cd beszel-agent - Buat file
docker-compose.ymlberisi konfigurasi Agent:
Gantiservices: beszel-agent: image: henrygd/beszel-agent:latest container_name: beszel-agent restart: unless-stopped network_mode: host volumes: - ./beszel_agent_data:/var/lib/beszel-agent environment: LISTEN: 45876 HUB_URL: http://IP-atau-domain-hub:8090 TOKEN: <token-dari-add-system> KEY: "<key-dari-add-system>"TOKENdanKEYdengan nilai yang didapat dari dialog Add System di langkah sebelumnya. - Jalankan Agent:
docker compose up -d
Konfigurasi network_mode: host di atas bukan sekadar preferensi, tapi keharusan. Agent butuh akses langsung ke network interface host untuk membaca statistik jaringan, dan mode host ini otomatis membuka semua port container ke host, termasuk port 45876 untuk SSH. Kalau Hub berada di jaringan yang berbeda dan perlu menjangkau Agent lewat mode SSH, pastikan port 45876 dibuka di firewall server target. Beberapa saat setelah Agent berjalan, status server di dashboard Hub akan berubah jadi online dan grafik metrik mulai terisi.
Deploy Agent dengan Binary
Kalau server target tidak menjalankan Docker, atau sysadmin memang lebih suka menjalankan Agent sebagai service native, Beszel menyediakan script instalasi binary resmi untuk Linux dan FreeBSD. Script ini dibuat dengan Go sehingga hasil kompilasinya berupa satu file binary tunggal tanpa dependensi tambahan.
- Unduh dan jalankan script instalasi di server target:
Script ini butuh aksescurl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.shrootuntuk membuat user khusus bernamabeszeldan mendaftarkan Agent sebagai service systemd agar tetap aktif setelah reboot. Proses Agent itu sendiri tetap berjalan dengan userbeszel, bukanroot. - Kalau tidak ingin diminta input secara interaktif, sertakan
KEY,TOKEN, dan URL Hub langsung lewat flag:/tmp/install-agent.sh -k "<key-dari-add-system>" -t <token-dari-add-system> -url http://IP-atau-domain-hub:8090 - Ikuti prompt untuk mengaktifkan atau menolak update otomatis harian, lalu script akan langsung menjalankan Agent dan mendaftarkannya sebagai service.
Beberapa flag lain yang berguna: -p untuk mengubah port listen (default 45876), -v untuk memilih versi tertentu, --auto-update untuk mengatur update otomatis lewat flag alih-alih prompt interaktif, dan -u untuk uninstall. Jalankan /tmp/install-agent.sh -h untuk melihat daftar lengkap opsi.
Monitoring Statistik Docker
Cara menghubungkan Agent ke Docker beda tergantung metode deploy yang dipilih. Kalau Agent dipasang sebagai binary di server yang sama dengan Docker, Agent bisa langsung membaca /var/run/docker.sock di host tanpa perlu konfigurasi mount, asalkan user beszel yang dibuat script instalasi punya izin akses ke socket tersebut. Praktik umum di Linux untuk memberi izin ini adalah menambahkan user ke grup docker, misalnya lewat sudo usermod -aG docker beszel, tapi cek dulu kebijakan keamanan di server masing-masing karena keanggotaan grup docker setara akses root.
Kalau Agent dipasang lewat Docker Compose, kita perlu menghubungkan socket Docker ke dalam container Agent secara eksplisit. Tambahkan baris volume berikut di docker-compose.yml milik Agent:
volumes:
- ./beszel_agent_data:/var/lib/beszel-agent
- /var/run/docker.sock:/var/run/docker.sock:roMount docker.sock dengan opsi :ro (read-only) supaya Agent hanya bisa membaca statistik container, bukan mengontrolnya. Setelah menambahkan baris ini, jalankan ulang Agent dengan docker compose up -d agar perubahan diterapkan. Dashboard Hub kemudian menampilkan CPU, memori, dan jaringan tiap container secara real-time beserta historinya.
Konfigurasi Produksi Beszel
Instalasi dasar sudah cukup untuk mulai memantau server, tapi ada beberapa pengaturan tambahan yang sebaiknya diaktifkan sebelum Beszel dipakai di lingkungan produksi.
Mengaktifkan OAuth
Login berbasis password saja kurang ideal untuk tim dengan banyak user. Beszel mendukung OAuth/OIDC lewat langkah berikut:
- Buka pengaturan Hub, lalu nonaktifkan sementara switch "Hide collection create and edit controls".
- Masuk ke koleksi
usersuntuk diedit. - Pada tab "Options", aktifkan OAuth2 dan tambahkan provider pilihan, misalnya Google, GitHub, atau provider self-hosted seperti Keycloak.
- Aktifkan kembali switch perlindungan koleksi yang dinonaktifkan di langkah pertama.
Gunakan URL redirect <url-hub>/api/oauth2-redirect saat mendaftarkan aplikasi OAuth di sisi provider. Kalau ingin memaksa semua user login lewat OAuth saja, set environment variable DISABLE_PASSWORD_AUTH=true di container Hub.
Setup Alert dan Notifikasi
Alert diaktifkan per sistem lewat tabel systems di dashboard Hub, sementara channel notifikasinya dikonfigurasi di menu Settings > Notifications menggunakan format URL Shoutrrr. Sebagai contoh, notifikasi Discord memakai format discord://token@id, sedangkan Telegram memakai telegram://token@telegram?chats=channel. Setelah URL notifikasi tersimpan, kita tinggal mengaktifkan ambang batas (threshold) CPU, RAM, disk, atau metrik lain langsung dari halaman detail tiap server.
Strategi Backup
Karena Hub dibangun di atas PocketBase, data historis dan konfigurasi bisa di-backup otomatis ke disk lokal atau storage yang kompatibel S3. Sysadmin sebaiknya menjadwalkan backup rutin, terutama kalau Hub menyimpan histori data dalam jangka panjang, supaya konfigurasi user, token Agent, dan riwayat alert tidak hilang kalau terjadi masalah pada volume Docker.
Beszel vs Netdata vs Grafana dan Prometheus
Ketiga tool ini sama-sama dipakai untuk monitoring server, tapi menyasar kebutuhan yang berbeda.
| Aspek | Beszel | Netdata | Grafana + Prometheus |
|---|---|---|---|
| Kompleksitas setup | Sangat sederhana, Hub dan Agent langsung jalan lewat Docker Compose | Sederhana, satu agent per host dengan banyak collector bawaan | Lebih kompleks, perlu konfigurasi scrape target, data source, dan dashboard terpisah |
| Fokus utama | Metrik host dan Docker container, alert dasar | Metrik real-time super detail dengan ribuan collector | Platform observability serbaguna untuk metrik, log, dan tracing skala besar |
| Skala ideal | 1 sampai puluhan VPS/server kecil | Satu host sampai skala menengah | Infrastruktur skala enterprise dengan banyak service |
| Kurva belajar | Rendah | Rendah sampai menengah | Menengah sampai tinggi, perlu paham PromQL |
Sysadmin yang mengelola beberapa VPS pribadi atau server klien kecil akan lebih cocok memakai Beszel karena setupnya cepat dan resource-nya hemat. Sebaliknya, tim engineering yang mengelola puluhan hingga ratusan service dengan kebutuhan observability mendalam, termasuk tracing dan query metrik kompleks, tetap lebih diuntungkan memakai Grafana dan Prometheus.
Kesimpulan
Beszel membuktikan kalau monitoring server tidak harus rumit dan berat. Arsitektur Hub-Agent yang ringan, dukungan statistik Docker real-time, alert yang fleksibel lewat Shoutrrr, sampai otentikasi OAuth untuk multi-user, membuat tool ini jadi pilihan masuk akal buat sysadmin dan praktisi self-hosting yang mengelola VPS kecil hingga menengah. Kalau kita baru mulai membangun infrastruktur monitoring dan belum butuh kompleksitas Prometheus plus Grafana, coba pasang Beszel di server pertama, lalu tambahkan Agent baru begitu kebutuhan monitoring bertambah.




