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:
- Buat username dan password admin
- 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
- Klik Status Pages di sidebar
- Klik New Status Page
- Konfigurasi:
Title: Status - Your Company
Slug: status (akan jadi /status)
Description: Real-time status of our services
-
Add Group untuk kategorisasi:
- Production Services
- API Endpoints
- Internal Tools
-
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
- Buat bot via @BotFather
- Dapatkan Bot Token
- Dapatkan Chat ID (gunakan @userinfobot)
- Di Uptime Kuma:
Notification Type: Telegram
Bot Token: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
Chat ID: -1001234567890
Discord
- Buat Webhook di Discord Server Settings → Integrations
- Copy Webhook URL
- Di Uptime Kuma:
Notification Type: Discord
Webhook URL: https://discord.com/api/webhooks/...
Slack
- Buat Incoming Webhook di Slack App
- 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: [email protected]
Password: app-specific-password
From Email: [email protected]
To Email: [email protected]
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:
- Klik monitor → Maintenance
- Set jadwal:
Title: Database Migration
Start: 2025-01-15 02:00
End: 2025-01-15 04:00
Timezone: Asia/Jakarta
- 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
- Settings → Users
- Add User
- Set role:
- Admin: Full access
- User: View dan manage monitors (tergantung permission)
2FA (Two-Factor Authentication)
Aktifkan 2FA untuk keamanan:
- Settings → Security
- Enable Two Factor Authentication
- 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
| Feature | Uptime Kuma | UptimeRobot (Free) | Better Uptime |
|---|---|---|---|
| Harga | Gratis | Gratis (50 monitors) | $20/bulan |
| Self-hosted | ✅ | ❌ | ❌ |
| Monitor types | 15+ | 5 | 10+ |
| Check interval | 20 detik | 5 menit | 30 detik |
| Notifications | 90+ | 6 | 20+ |
| 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,developmentfrontend,backend,databasecritical,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: