DevOps

Uptime Kuma: Monitor Website dan Alert ke Telegram

Asep Alazhari

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

Uptime Kuma: Monitor Website dan Alert ke Telegram

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:1

Bedah 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.

  1. Masuk ke Settings terus Notifications.
  2. Klik Setup Notification.
  3. Pilih Telegram sebagai notification type.
  4. Paste Bot Token lo. Lo dapetnya dari @BotFather di Telegram.
  5. Paste Chat ID lo. Lo bisa dapetnya dengan chat ke @userinfobot di Telegram.
  6. 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:1

Perhatiin 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:1

Lo 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-kuma

Ini 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.local

Kalau 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

PracticeKenapa Penting
Set retry ke 2 atau 3Hindarin false alarm dari network blip pendek
Pake keyword monitoringTangkep deploy rusak yang tetap balik 200
Interval beda berdasarkan kepentinganProduction tiap 60 detik, dev tools tiap 5 menit
Host Kuma di server terpisahKalau server mati, monitor nggak boleh ikut mati
Selalu pake named volumeData selamat dari update dan recreate container
Restart setelah edit /etc/hostsMaksa 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.

Back to Blog

Related Posts

View All Posts »