Uptime Kuma adalah monitor open source yang Anda hosting sendiri untuk pemeriksaan HTTP(S), TCP, ping, DNS, WebSocket, dan lainnya. Di VPS terpisah, ia tetap memeriksa saat server produksi Anda tumbang, bukan ikut menghilang bersamanya.
Penyiapan Uptime Kuma di VPS ini menerapkan v2 dengan Docker Compose, menahan port 3001 di loopback, menambahkan HTTPS lewat Caddy, meneruskan notifikasi ke Telegram, Discord, dan Slack, serta menerbitkan halaman status.
Prasyarat dan Apa yang Anda Butuhkan
- VPS dengan minimal 1 vCPU, RAM 1 GB, dan penyimpanan SSD lokal 10 GB
- Ubuntu 24.04 LTS atau rilis Ubuntu terkini lain yang didukung Docker
- Docker Engine dan Docker Compose sudah terpasang di VPS
- Domain atau subdomain yang diarahkan ke VPS lewat record A (misalnya status.example.com)
- Akses SSH dan kenyamanan dasar dengan baris perintah
Jika Docker belum terpasang, ikuti panduan instalasi Docker untuk Ubuntu. Panduan itu memasang Docker Engine dan plugin Compose yang dipakai di bawah.
Mengapa VPS Pemantauan Harus Terpisah dari Hal yang Dipantaunya
Produksi dan pemantauan di server yang sama berbagi domain kegagalan yang sama. Kalau server itu mati, aplikasi dan sistem yang bertugas mengirim peringatannya hilang bersamaan.
Ada dua tata letak praktis yang memperbaiki hal ini:
- Penyedia sama, lokasi berbeda. Tempatkan produksi dan pemantauan di host terpisah pada lokasi berbeda. Ini mengurangi paparan terhadap kegagalan satu server atau satu pusat data, tetapi tidak melindungi dari setiap insiden jaringan atau control plane yang melanda seluruh penyedia.
- Penyedia yang benar-benar berbeda. Menempatkan monitor di penyedia lain menambah perlindungan dari insiden yang melanda seluruh penyedia. Konsekuensinya, ada satu akun, satu tagihan, dan satu permukaan operasional lagi yang harus dikelola.
Satu instance Uptime Kuma tetap tidak punya pengawas dari luar. Tambahkan satu pemeriksaan HTTP(S) eksternal untuk halaman status publiknya. Paket gratis UptimeRobot saat ini mencakup 50 monitor dengan interval lima menit. Ini tidak membuat Uptime Kuma menjadi high availability, tetapi akan memberi tahu Anda saat monitornya sendiri menghilang.
Aturan yang sama berlaku untuk halaman status publik: hal yang memberi tahu Anda soal kegagalan tidak boleh berbagi domain kegagalan dengan hal yang gagal.
Bangun di VPS Linux dengan akses root, NVMe, dan tenaga AMD EPYC.
Lihat Paket LinuxMenentukan Ukuran VPS
Uptime Kuma tidak punya rumus andal antara jumlah monitor dan RAM, karena bebannya berubah menurut jenis monitor, interval, pengaturan retry, dan lama penyimpanan riwayat. Pemeriksaan HTTP(S), TCP, ping, dan DNS yang sederhana lebih ringan daripada pemeriksaan Browser Engine yang menjalankan Chromium.
Untuk sekumpulan kecil pemeriksaan dasar, mulailah dengan 1 vCPU, RAM 1 GB, dan penyimpanan SSD lokal. Pantau pemakaian sebenarnya dengan docker stats uptime-kuma dan pertumbuhan basis data dengan du -sh /opt/uptime-kuma/data. Tambahkan memori saat pemakaian tetap tinggi, kontainer melaporkan OOM kill, atau Anda mulai memakai pemeriksaan Browser Engine.
Image v2 versi penuh menyertakan Chromium dan MariaDB bawaan; dokumentasi tag Docker menjelaskan perbedaan antara image full dan slim.
Menerapkan Uptime Kuma dengan Docker Compose
Simpan berkas ini sebagai docker-compose.yml di /opt/uptime-kuma/:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
container_name: uptime-kuma
restart: unless-stopped
ports:
# Bind to localhost only. The reverse proxy will expose it on 443.
- "127.0.0.1:3001:3001"
volumes:
- ./data:/app/data
Ada tiga baris yang perlu disorot:
- image: louislam/uptime-kuma:2 mengunci versi mayor. Tag :2 mengikuti jalur rilis stabil 2.x. Jangan pakai :latest.
- 127.0.0.1:3001:3001 mengikat kontainer hanya ke localhost. Internet publik tidak boleh menjangkau port 3001 secara langsung. Reverse proxy-lah yang memegang sertifikat TLS dan nama host publik.
- Volume data menyimpan basis data, konfigurasi monitor, dan riwayat. Simpan di penyimpanan lokal, karena dokumentasi instalasi Uptime Kuma memperingatkan bahwa sistem berkas tanpa penguncian POSIX yang andal, termasuk banyak konfigurasi NFS, bisa merusak SQLite. Hentikan stack sebelum menyalin di tingkat sistem berkas.
Jalankan lalu verifikasi:
sudo install -d -o "$USER" -g "$USER" /opt/uptime-kuma
cd /opt/uptime-kuma
# Paste the docker-compose.yml file above.
sudo docker compose up -d
sudo docker compose ps
Keluaran yang diharapkan dari docker compose ps:
NAME IMAGE STATUS PORTS
uptime-kuma louislam/uptime-kuma:2 Up (healthy) 127.0.0.1:3001->3001/tcp
Untuk membuka dasbor pertama kali, jangan buka port 3001 ke internet publik, sebentar pun. Gunakan terowongan SSH:
ssh -L 3001:127.0.0.1:3001 [email protected]
Buka http://localhost:3001 di peramban, buat akun admin, pasang kata sandi yang kuat, lalu tutup terowongannya. Mulai sekarang dasbor sampai ke Anda lewat HTTPS melalui reverse proxy.
Kalau Anda tidak perlu Compose manual, kami juga menyediakan Uptime Kuma sebagai aplikasi sekali klik. Halaman aplikasinya saat ini mencantumkan v1, jadi tidak cocok dengan penyiapan Compose v2 di panduan ini. Pakai jalur Compose manual kalau Anda memang butuh v2.
Reverse Proxy dan TLS
Jangan mengekspos Uptime Kuma secara langsung. Pasang reverse proxy di depannya untuk TLS, penanganan URL yang benar, dan satu titik masuk publik. Ada dua jalur.
Caddy. Kalau Caddy belum terpasang, ikuti langkah paket resminya untuk Ubuntu. Dengan Caddy berjalan sebagai layanan host, Caddyfile di bawah meneruskan ke Uptime Kuma di loopback dan mengurus penerbitan serta perpanjangan sertifikat secara otomatis.
Tips: kalau VPS pemantauan hanya menjalankan Uptime Kuma, pakai Caddy. Caddyfile-nya cuma tiga baris, dan Caddy mengurus penerbitan serta perpanjangan sertifikat otomatis. Tidak ada Certbot dan tidak ada timer perpanjangan terpisah yang harus ditunggui jam 4 pagi.
Simpan ini sebagai /etc/caddy/Caddyfile:
status.example.com {
reverse_proxy 127.0.0.1:3001
}
Muat ulang Caddy:
sudo systemctl reload caddy
Verifikasi:
curl -I https://status.example.com
Anda semestinya menerima respons 2xx atau 3xx yang berhasil dengan sertifikat yang sah. Kalau koneksinya gagal, pastikan record A atau AAAA domain mengarah ke VPS ini, port 80 dan 443 bisa dijangkau, dan Caddy bisa mengikat keduanya. Semua ini bagian dari persyaratan HTTPS otomatis Caddy.
Nginx Proxy Manager. Kalau NPM berjalan langsung di host, tambahkan Proxy Host untuk status.example.com, teruskan ke 127.0.0.1 pada port 3001, minta sertifikat Let's Encrypt, dan aktifkan Websockets Support. Kalau NPM berjalan di Docker, 127.0.0.1 justru menunjuk ke kontainer NPM itu sendiri. Hubungkan NPM dan Uptime Kuma ke jaringan Docker yang sama, lalu arahkan proxy host ke uptime-kuma pada port 3001.
Perutean Notifikasi: Telegram, Discord, Slack
Uptime Kuma bisa meneruskan peristiwa monitor yang sama ke beberapa saluran notifikasi. Konfigurasikan tiap penyedia sekali saja, lalu pasang satu atau lebih saluran ke sebuah monitor sesuai siapa yang perlu tahu.
Notifikasi dikonfigurasi secara global di Settings > Notifications, lalu ditetapkan ke masing-masing monitor. Setiap monitor bisa memicu satu atau banyak saluran. Peringatan yang sama bisa masuk ke Telegram untuk teknisi yang sedang piket, ke Slack untuk tim, dan ke email untuk catatan audit, semuanya dari satu peristiwa.
Telegram
- Di Telegram, kirim pesan ke @BotFather lalu jalankan /newbot. Pilih nama dan username. BotFather membalas dengan token bot. Simpan token itu.
- Kirim pesan apa saja ke bot baru Anda. Lalu buka https://api.telegram.org/bot<YOUR_TOKEN>/getUpdates di peramban. Cari field chat.id, itulah chat ID Anda.
- Di Uptime Kuma: Settings > Notifications > Setup Notification > Telegram. Tempelkan token bot dan chat ID. Klik Tes. Pastikan bot mengirim peringatan ujinya.
- Kalau pesan uji tidak sampai, periksa apakah token bot dan chat ID sudah benar, dan pastikan firewall VPS mengizinkan HTTPS keluar ke api.telegram.org.
Discord
- Buka server Discord tempat Anda ingin menerima peringatan. Klik kanan kanal tujuannya, lalu Edit Channel > Integrations > Webhooks > New Webhook. Beri nama (misalnya "Uptime Kuma"), pilih kanalnya, lalu salin URL webhook.
- Di Uptime Kuma: Settings > Notifications > Setup Notification > Discord. Tempelkan URL webhook. Kalau mau, atur juga username dan avatarnya.
- Klik Tes. Pastikan webhook memposting peringatan uji ke kanal tersebut.
Slack
- Di Slack, buat sebuah Incoming Webhook untuk kanal tempat Anda ingin menerima peringatan. Slack mengembalikan URL webhook berbentuk https://hooks.slack.com/services/T.../B.../....
- Di Uptime Kuma: Settings > Notifications > Setup Notification > Slack. Tempelkan URL webhook. Kalau mau, atur juga ikon dan penggantian kanalnya.
- Klik Tes.
Setelah semua tes lolos, edit tiap monitor dan pilih saluran notifikasi yang akan dipakai. Atur Max Retries (maksimum percobaan ulang) dan Retry Interval (jeda antar percobaan ulang) supaya satu kegagalan singkat tidak langsung memicu peringatan.
Halaman Status Bawaan (dan Kapan Anda Akan Melampauinya)
Uptime Kuma menyertakan halaman status publik dengan slug kustom, monitor yang dikelompokkan, domain sendiri, posting insiden, dan pesan pemeliharaan terjadwal. Anda juga bisa menerbitkan beberapa halaman status dari satu instance, untuk layanan atau audiens yang berbeda.
Keterbatasan yang lebih besar ada pada komunikasi ke pelanggan. Saat ini pengunjung belum bisa berlangganan pembaruan lewat email langsung dari halaman status, dan halaman publik itu tetap bagian dari aplikasi Uptime Kuma yang sama dengan dasbor operator. Pendaftaran mandiri oleh pengunjung masih tercatat sebagai permintaan fitur yang masih terbuka.
Kalau Anda butuh langganan pelanggan atau sistem status yang terpisah dari dasbor pemantauan, Kener adalah salah satu alternatif. Artikel kami tentang tumpukan pemantauan yang di-hosting sendiri menjelaskan bagaimana kedua alat itu bisa dipadukan.
Masalah Umum
Notifikasi gagal tanpa suara ketika firewall VPS memblokir HTTPS keluar. Gejala: tombol Test berhasil untuk sebagian saluran, tapi tidak untuk yang lain. Perbaikan: pastikan koneksi HTTPS keluar diizinkan dan curl -I https://api.telegram.org berhasil dari VPS.
Peramban menampilkan "ERR_TOO_MANY_REDIRECTS" setelah proxy diaktifkan. Periksa apakah ada pengalihan HTTP ke HTTPS ganda di Caddy, Nginx Proxy Manager, atau CDN di depannya. Uptime Kuma harus tetap melayani HTTP di port 3001 sementara reverse proxy publik yang menuntaskan TLS. Kalau Anda mengaktifkan header proxy tepercaya, jalurnya sekarang adalah Settings > Reverse Proxy > HTTP Headers > Trust Proxy.
Kontainer restart tiap beberapa menit. Periksa apakah kontainer dihentikan karena kehabisan memori, lalu pantau pemakaian saat ini dengan docker stats uptime-kuma. Kalau kontainer terkena OOM kill atau memori terus mepet batas VPS, tambah RAM, kurangi pemeriksaan berat, atau perpanjang intervalnya.
Halaman status jalan di localhost tapi tidak lewat nama host publik. Pastikan reverse proxy meneruskan path root apa adanya, mempertahankan header Host, dan mendukung WebSockets. Uptime Kuma tidak mendukung instalasi di bawah subdirektori, jadi pakailah domain atau subdomain khusus, bukan path seperti example.com/uptime-kuma.
Penutup
Uptime Kuma di VPS terpisah memberi Anda kendali atas pemeriksaan, perutean peringatan, dan halaman status publik, tetapi pembaruan, cadangan, penambalan OS, dan pengawas eksternal untuk monitornya juga jadi tanggung jawab Anda. Pilih VPS di lokasi yang berbeda dari produksi, terapkan v2 dengan Docker Compose atau pakai aplikasi sekali klik setelah memeriksa versi yang tercantum, pasang Caddy di depan, lalu sambungkan saluran yang benar-benar dipantau tim Anda.
Pertanyaan yang Sering Diajukan
Berapa RAM yang Dibutuhkan Uptime Kuma?
Uptime Kuma tidak punya rumus andal antara jumlah monitor dan RAM, karena pemakaiannya berubah menurut jenis monitor, interval pemeriksaan, pengaturan retry, lama penyimpanan riwayat, dan penggunaan Browser Engine. Untuk sekumpulan kecil pemeriksaan dasar, mulailah dengan RAM 1 GB dan pantau pemakaian sebenarnya lewat docker stats uptime-kuma. Tambah memori kalau pemakaian terus mepet batas atau kontainer kena OOM kill.
Haruskah Uptime Kuma Dijalankan di Server yang Sama dengan Aplikasi Saya?
Tidak. Kalau alat pemantauan dan aplikasinya berbagi server, satu kegagalan membuat keduanya mati bersamaan dan Anda kehilangan peringatan justru saat paling membutuhkannya. Jalankan Uptime Kuma di VPS terpisah, idealnya di lokasi pusat data yang berbeda.
Bisakah Uptime Kuma Mengirim Peringatan ke Telegram, Discord, dan Slack?
Bisa. Telegram, Discord, dan Slack termasuk layanan notifikasi bawaan, bersama email, webhook umum, PagerDuty, ntfy, Mattermost, dan banyak lainnya. Telegram memakai token bot dan chat ID, sedangkan Discord dan Slack memakai URL webhook. Anda bisa memasang beberapa saluran notifikasi ke monitor yang sama.
Apa Bedanya Uptime Kuma dan UptimeRobot?
Uptime Kuma di-hosting sendiri, jadi Anda yang mengurus server, pembaruan, cadangan, dan perutean peringatan. Ia mendukung interval pemeriksaan sampai 20 detik. UptimeRobot adalah SaaS yang dihosting, dan paket gratisnya saat ini mencakup 50 monitor dengan pemeriksaan tiap lima menit. Pilih Uptime Kuma kalau Anda mau kendali, atau UptimeRobot kalau tidak ingin mengoperasikan server pemantauan.
Apakah Uptime Kuma Punya Halaman Status Publik?
Punya. Anda bisa memilih monitor mana yang tampil, mengelompokkannya, menerbitkan beberapa halaman status, memetakannya ke domain sendiri, dan menjadwalkan pesan pemeliharaan. Pendaftaran email mandiri oleh pengunjung tidak tersedia bawaan, jadi gunakan alat halaman status khusus pelanggan bila pelanggan perlu berlangganan pembaruan.
