Uptime Kuma: Monitor Website dan Alert ke Telegram
Cara self-host Uptime Kuma pake Docker dan dapet notifikasi Telegram langsung saat website lo down. Gratis, full control, tanpa biaya langganan.

Teguran yang Nggak Gue Sangka
Itu hari Selasa sore. Klien gue tiba-tiba chat nanya kenapa website mereka udah nggak bisa diakses dari pagi. Gue nggak tau sama sekali. Gue cek, dan beneran, servernya nggak ngerespon. Site-nya down lebih dari empat jam dan gue baru tau karena kliennya yang ngasih tau.
Hari itu gue mutusin nggak bakal biarin itu kejadian lagi. Waktu itu gue handle lebih dari selusin web project. Ada yang punya klien, ada yang tool pribadi, ada yang service kecil buat seneng-seneng. Nggak ada yang punya monitoring beneran. Gue mengandalkan keberuntungan dan komplain klien, yang jelas bukan strategi yang bagus.
Gue butuh sesuatu yang ngecek setiap project secara otomatis, retry sebelum panik, dan kirimin gue pesan ke Telegram begitu ada yang aneh.
Kenapa Script Biasa Nggak Cukup
Naluri pertama gue adalah nulis script Python. Loop, requests.get(), sama panggil bot Telegram. Simpel. Tapi script punya masalah.
Script nggak retry. Satu network blip langsung firing alert. Script mati kalau server restart dan nggak ada yang sadar. Nggak ada history. Pas gue bangun jam 2 pagi karena ada alert, gue nggak bisa tau website-nya udah down berapa lama.
Tool monitoring yang beneran ngesolve semua ini. Dia handle retry, nyimpen history, nampilin persentase uptime, dan jalan sebagai service yang persistent. Pilihan paling jelas buat self-hosted monitoring di 2026 adalah Uptime Kuma.
Apa Itu Uptime Kuma
Uptime Kuma itu tool monitoring open-source yang self-hosted, dibangun dengan Node.js dan Vue.js. Jalan di Docker container, punya dashboard yang bersih dan modern, dan support puluhan notification channel termasuk Telegram secara native.
Dia ngecek site lo di interval yang udah ditentukan, retry kalau gagal, tracking expiry SSL, dan cuma kirim alert setelah beberapa kali gagal berturut-turut sesuai konfigurasi lo. Ini aja udah ngeliminasi sebagian besar false alarm.
Install Uptime Kuma Pake Docker
Lo nggak butuh Docker Compose buat setup dasar. Satu command cukup nih.
docker run -d \
--name uptime-kuma \
--restart always \
-p 3001:3001 \
-v uptime-kuma-data:/app/data \
louislam/uptime-kuma:1Bedah dulu yuk. Flag -d jalanin di background. Flag --restart always bikin container balik otomatis setelah server reboot. Flag -p 3001:3001 expose dashboard-nya. Flag -v bikin named volume biar data lo selamat kalau ada update atau restart container.
Setelah 10 sampai 30 detik, buka browser lo di http://localhost:3001 atau http://IP_SERVER_LO:3001.
Login Pertama dan Akun Admin
Pertama kali buka dashboard, Uptime Kuma nampilin halaman setup. Nggak ada password default. Lo bikin akun admin-nya langsung di situ. Pilih username, set password yang kuat, klik Create. Lo langsung masuk ke dashboard utama.
Buat aktifin Two-Factor Authentication nanti, masuk ke Settings terus Security. Worth it kalau dashboard lo exposed ke internet.
Hubungin Uptime Kuma ke Telegram
Sebelum nambahin monitor, setup notifikasi dulu yuk. Jadi setiap monitor yang lo tambahin bisa pake config Telegram yang sama.
- Masuk ke Settings terus Notifications.
- Klik Setup Notification.
- Pilih Telegram sebagai notification type.
- Paste Bot Token lo. Lo dapetnya dari @BotFather di Telegram.
- Paste Chat ID lo. Lo bisa dapetnya dengan chat ke @userinfobot di Telegram.
- Klik Test. Kalau pesan masuk ke Telegram lo, berarti oke. Klik Save.
Sekarang setiap monitor bisa pake notification channel ini deh.
Daftarin Web Project Lo
Klik tombol plus atau “Add New Monitor” di dashboard. Form-nya straightforward kok.
- Monitor Type: HTTP(s) buat website.
- Friendly Name: Yang deskriptif, misalnya “Klien A - Site Utama”.
- URL: Alamat lengkap termasuk https.
- Heartbeat Interval: 60 detik buat production, 300 detik buat dev tools.
- Retries: Set ke 2 atau 3. Ini penting. Tanpa retry, satu network blip langsung trigger pesan Telegram.
- Notification: Centang setup Telegram yang baru lo bikin.
Save monitor-nya dan dia langsung mulai ngecek.
Keyword Monitoring
Status code 200 nggak selalu berarti site-nya sehat. Kadang deploy yang rusak balik 200 tapi nampilin halaman kosong atau pesan error database. Uptime Kuma punya field Keyword. Masukin kata yang harus ada di halaman, kayak nama brand lo atau “Login”. Kalau keyword-nya nggak ada, Kuma anggep itu failure.
Baca Juga: Deploy Monitor Smart Home: Dari Fly.io ke Server Sendiri
Manage Banyak Monitor
Kalau lo punya puluhan site, dashboard-nya bisa rame. Dua fitur ini yang bikin tetap rapi.
Tags biarin lo grup monitor berdasarkan klien, environment, atau tipe project. Lo bisa filter dashboard berdasarkan tag. Status Pages biarin lo bikin URL publik yang nampilin indikator hijau atau merah buat setiap monitor. Berguna banget buat share info uptime ke klien tanpa kasih mereka akses dashboard.
Buat bulk import, masuk ke Settings terus Backup. Uptime Kuma nyimpen semuanya dalam JSON. Export file-nya, tambahin entri monitor baru pake text editor, terus import balik. Ini jauh lebih cepet daripada klik form satu per satu sampai lima puluh kali.
Handle Private IP dan Local Hostname
Nih kasus yang pernah gue hadapi. Kuma dan salah satu web service gue ada di server yang sama. Server-nya blokir request dari public IP. Gue tambahin hostname dan private IP service-nya ke /etc/hosts di server dan berhasil dari terminal. Tapi Kuma tetap timeout.
Alasannya karena Docker container punya jaringan yang terisolasi. Perubahan di /etc/hosts host nggak otomatis berlaku di dalam container yang lagi jalan.
Solusi paling simpel buat banyak private site adalah pake --network host. Ini bikin container share network stack host-nya, termasuk /etc/hosts.
docker stop uptime-kuma
docker rm uptime-kuma
docker run -d \
--name uptime-kuma \
--restart always \
--network host \
-v uptime-kuma-data:/app/data \
louislam/uptime-kuma:1Perhatiin kalau lo drop flag -p 3001:3001 waktu pake host networking. Kuma langsung bind ke port 3001 di host. Dashboard-nya tetap di http://IP_SERVER_LO:3001.
Buat site private yang lebih sedikit, pake --add-host aja. Lebih presisi.
docker run -d \
--name uptime-kuma \
--restart always \
-p 3001:3001 \
--add-host=mysite.local:192.168.1.10 \
-v uptime-kuma-data:/app/data \
louislam/uptime-kuma:1Lo bisa stack beberapa flag --add-host buat host yang berbeda.
Setelah Edit /etc/hosts
Kalau lo nambahin entri baru ke /etc/hosts sementara container udah jalan di host network mode, perubahannya nggak langsung kepickup. Lo perlu restart container-nya deh.
docker restart uptime-kumaIni bersihin DNS cache di dalam Node.js dan maksa baca ulang hosts file. Buat mastiin berhasil, jalanin test dari dalam container.
docker exec -it uptime-kuma ping -c 3 mysite.localKalau lo liat private IP di output-nya, berarti container udah bisa resolve hostname dengan bener nih.
Data Monitor Lo Selalu Aman
Kekhawatiran umum waktu recreate container adalah kehilangan semua history monitor dan settings. Lo nggak bakal kehilangan apa-apa selama lo selalu pake named volume yang sama.
Volume uptime-kuma-data nyimpen semuanya: config monitor, history uptime, settings Telegram, dan akun user. Waktu lo delete dan recreate container, volume-nya tetap ada. Waktu lo attach lagi dengan -v uptime-kuma-data:/app/data, semua data lo balik.
Bayangin container-nya sebagai software dan volume-nya sebagai hard drive. Format OS nggak ngapusin hard drive terpisah.
Baca Juga: Kubernetes Logging yang Bener: Fluent Bit ke Elasticsearch
Ringkasan Best Practice
| Practice | Kenapa Penting |
|---|---|
| Set retry ke 2 atau 3 | Hindarin false alarm dari network blip pendek |
| Pake keyword monitoring | Tangkep deploy rusak yang tetap balik 200 |
| Interval beda berdasarkan kepentingan | Production tiap 60 detik, dev tools tiap 5 menit |
| Host Kuma di server terpisah | Kalau server mati, monitor nggak boleh ikut mati |
| Selalu pake named volume | Data selamat dari update dan recreate container |
| Restart setelah edit /etc/hosts | Maksa DNS resolution baca entri baru |
Tidur Lebih Nyenyak
Nge-handle selusin web project tanpa monitoring itu kayak nunggu masalah dateng sendiri. Satu sore yang sepi tiba-tiba site klien lo down dan tetap down enam jam sebelum ada yang sadar.
Uptime Kuma dengan Docker dan Telegram butuh sekitar dua puluh menit buat di-setup. Setelah itu dia jalan sendiri, ngecek setiap site sesuai jadwal-nya, retry sebelum alarm, dan kirimin pesan begitu ada yang beneran salah. Terus kirimin pesan lagi pas balik normal.
Setup sekali. Biarin dia kerja. Tidur lebih nyenyak deh.


