Tutorial Monitoring Website dengan Uptime Kuma (Self-Hosted)
ID | EN

Tutorial Monitoring Website dengan Uptime Kuma (Self-Hosted)

Minggu, 28 Des 2025

Pernah website kamu down dan baru tahu setelah user komplain? Atau API server error tapi kamu baru sadar setelah berjam-jam? Monitoring adalah solusinya, dan Uptime Kuma adalah tool self-hosted terbaik yang bisa kamu gunakan secara gratis.

Kenapa Website Monitoring Itu Penting?

Downtime bukan cuma masalah teknis—ini masalah bisnis:

  • Revenue loss: E-commerce yang down 1 jam bisa kehilangan jutaan rupiah
  • User trust: User yang sering menemukan website down akan pindah ke kompetitor
  • SEO impact: Google menurunkan ranking website yang sering tidak accessible
  • SLA compliance: Banyak kontrak bisnis mensyaratkan uptime 99.9%

Dengan monitoring, kamu bisa:

  • Tahu masalah sebelum user komplain
  • Mendapat notifikasi instan saat ada issue
  • Track historical uptime untuk reporting
  • Identify pattern masalah (misalnya selalu down jam tertentu)

Apa Itu Uptime Kuma?

Uptime Kuma adalah self-hosted monitoring tool yang dikembangkan oleh Louis Lam. Fitur-fiturnya:

  • 100% Gratis dan Open Source
  • Self-hosted - Data kamu tetap di server kamu
  • UI Modern - Dashboard yang clean dan responsive
  • Multiple monitor types - HTTP, TCP, Ping, DNS, Docker, dan lainnya
  • 90+ notification channels - Telegram, Discord, Slack, Email, WhatsApp, dll
  • Status page - Public status page untuk user
  • Multi-user - Support multiple users dengan role berbeda

Self-Hosting dengan Docker

Prerequisites

  • Server dengan Docker & Docker Compose terinstall
  • Minimal 512MB RAM (1GB recommended)
  • Port 3001 available

Instalasi dengan Docker Compose

Buat file docker-compose.yml:

version: '3.8'

services:
  uptime-kuma:
    image: louislam/uptime-kuma:1
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - uptime-kuma-data:/app/data
      - /var/run/docker.sock:/var/run/docker.sock:ro

volumes:
  uptime-kuma-data:

Jalankan:

docker-compose up -d

Akses Uptime Kuma di http://your-server-ip:3001.

Setup Awal

Saat pertama kali akses, kamu akan diminta:

  1. Buat username dan password admin
  2. Pilih bahasa (tersedia Bahasa Indonesia)

Menambahkan Monitors

Uptime Kuma mendukung berbagai jenis monitor. Berikut yang paling sering digunakan:

HTTP(s) Monitor

Untuk monitoring website dan API endpoint:

Monitor Type: HTTP(s)
Friendly Name: Production Website
URL: https://example.com
Heartbeat Interval: 60 seconds
Retries: 3

Advanced options:

  • Method: GET, POST, PUT, DELETE, dll
  • Headers: Untuk API dengan authentication
  • Body: Untuk POST request
  • Expected Status Code: Default 200-299

Keyword Monitor

Memastikan halaman mengandung text tertentu:

Monitor Type: HTTP(s) - Keyword
URL: https://example.com/health
Keyword: "status":"ok"

Berguna untuk:

  • Health check endpoint yang return JSON
  • Memastikan halaman tidak menampilkan error message
  • Validasi content specific

Ping Monitor

Untuk monitoring server/host level:

Monitor Type: Ping
Hostname: 192.168.1.100

DNS Monitor

Memastikan DNS record resolve dengan benar:

Monitor Type: DNS
Hostname: example.com
Resolver Server: 8.8.8.8
Record Type: A

Docker Container Monitor

Monitor status container Docker:

Monitor Type: Docker Container
Container Name: nginx
Docker Host: /var/run/docker.sock

Pastikan volume Docker socket sudah di-mount di docker-compose.

Membuat Status Page

Status page adalah halaman publik yang menampilkan status semua service kamu. Berguna untuk:

  • Transparansi ke user saat ada incident
  • Mengurangi support ticket “website down gak?”
  • Professional image untuk bisnis

Setup Status Page

  1. Klik Status Pages di sidebar
  2. Klik New Status Page
  3. Konfigurasi:
Title: Status - Your Company
Slug: status (akan jadi /status)
Description: Real-time status of our services
  1. Add Group untuk kategorisasi:

    • Production Services
    • API Endpoints
    • Internal Tools
  2. Drag monitor ke group yang sesuai

Customization

  • Custom Domain: Point subdomain ke status page
  • Custom CSS: Styling sesuai brand
  • Incident Management: Post incident updates

Setup Notifikasi

Notifikasi adalah fitur krusial—percuma monitoring kalau kamu tidak tahu saat ada masalah.

Telegram

  1. Buat bot via @BotFather
  2. Dapatkan Bot Token
  3. Dapatkan Chat ID (gunakan @userinfobot)
  4. Di Uptime Kuma:
Notification Type: Telegram
Bot Token: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
Chat ID: -1001234567890

Discord

  1. Buat Webhook di Discord Server Settings → Integrations
  2. Copy Webhook URL
  3. Di Uptime Kuma:
Notification Type: Discord
Webhook URL: https://discord.com/api/webhooks/...

Slack

  1. Buat Incoming Webhook di Slack App
  2. Di Uptime Kuma:
Notification Type: Slack
Webhook URL: https://hooks.slack.com/services/...
Channel: #alerts

Email (SMTP)

Notification Type: SMTP
SMTP Host: smtp.gmail.com
SMTP Port: 587
Security: STARTTLS
Username: your-email@gmail.com
Password: app-specific-password
From Email: your-email@gmail.com
To Email: alerts@yourcompany.com

Tips: Untuk Gmail, gunakan App Password, bukan password biasa.

Notification Strategy

Best practice untuk notification:

  • Immediate: Telegram/Discord untuk alert cepat
  • Escalation: Email setelah 5 menit masih down
  • On-call: Integration dengan PagerDuty/Opsgenie untuk critical services

Maintenance Windows

Saat planned maintenance, kamu tidak ingin dapat false alarm. Uptime Kuma support scheduled maintenance:

  1. Klik monitor → Maintenance
  2. Set jadwal:
Title: Database Migration
Start: 2025-01-15 02:00
End: 2025-01-15 04:00
Timezone: Asia/Jakarta
  1. Recurring maintenance untuk weekly/monthly maintenance

Selama maintenance window:

  • Monitor tetap berjalan
  • Notifikasi di-suppress
  • Status page menampilkan “Under Maintenance”

Multi-User Setup

Untuk tim, Uptime Kuma mendukung multiple users:

Menambah User

  1. Settings → Users
  2. Add User
  3. Set role:
    • Admin: Full access
    • User: View dan manage monitors (tergantung permission)

2FA (Two-Factor Authentication)

Aktifkan 2FA untuk keamanan:

  1. Settings → Security
  2. Enable Two Factor Authentication
  3. Scan QR code dengan Google Authenticator/Authy

Reverse Proxy dengan Nginx

Untuk production, gunakan reverse proxy dengan SSL:

server {
    listen 80;
    server_name uptime.yourdomain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name uptime.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/uptime.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/uptime.yourdomain.com/privkey.pem;

    location / {
        proxy_pass http://localhost:3001;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Penting: WebSocket support (Upgrade dan Connection headers) diperlukan untuk real-time updates.

SSL dengan Let’s Encrypt

sudo certbot --nginx -d uptime.yourdomain.com

Perbandingan dengan Alternatif

FeatureUptime KumaUptimeRobot (Free)Better Uptime
HargaGratisGratis (50 monitors)$20/bulan
Self-hosted
Monitor types15+510+
Check interval20 detik5 menit30 detik
Notifications90+620+
Status page✅ (branding)
Multi-user❌ (paid)
Data ownership

Kapan pilih Uptime Kuma:

  • Kamu punya server sendiri
  • Privacy/data ownership penting
  • Butuh check interval cepat (< 1 menit)
  • Budget terbatas tapi butuh fitur lengkap

Kapan pilih SaaS (UptimeRobot/Better Uptime):

  • Tidak mau manage infrastructure
  • Perlu monitoring dari multiple geographic locations
  • Enterprise support diperlukan

Tips & Best Practices

1. Monitor dari Lokasi Berbeda

Uptime Kuma berjalan di satu server. Untuk reliability:

  • Deploy di server yang berbeda dari yang dimonitor
  • Pertimbangkan multiple instances di region berbeda

2. Set Retry yang Tepat

Retries: 3
Retry Interval: 20 seconds

Hindari false positive dari temporary network glitch.

3. Group Monitors dengan Tags

Gunakan tags untuk organisasi:

  • production, staging, development
  • frontend, backend, database
  • critical, warning, info

4. Backup Regularly

Data Uptime Kuma tersimpan di SQLite. Backup volume:

docker cp uptime-kuma:/app/data ./backup

Atau setup automated backup ke S3/cloud storage.

5. Monitor the Monitor

Ironis tapi penting—monitor Uptime Kuma instance kamu:

  • Gunakan external service (UptimeRobot free tier)
  • Setup healthcheck di Docker
healthcheck:
  test: ["CMD", "curl", "-f", "http://localhost:3001"]
  interval: 30s
  timeout: 10s
  retries: 3

6. Optimize Check Interval

  • Critical services: 20-30 detik
  • Important services: 60 detik
  • Non-critical: 5 menit

Jangan terlalu agresif—bisa membebani target server.

Kesimpulan

Uptime Kuma adalah solusi monitoring yang powerful, gratis, dan mudah di-setup. Dengan fitur lengkap seperti multiple monitor types, 90+ notification channels, dan status pages, tool ini cocok untuk individual developer hingga tim kecil-menengah.

Yang perlu diingat:

  • Deploy di server terpisah dari yang dimonitor
  • Setup notifikasi ke channel yang kamu aktif pantau
  • Backup data secara regular
  • Gunakan reverse proxy dengan SSL untuk production

Selamat monitoring! 🚀


Resources: