Pernah kelewat notifikasi penting soalnya cuma muncul di log server yang jarang dicek? Kalau iya, saatnya install ntfy di VPS kamu sendiri. ntfy adalah layanan notifikasi push open source yang bisa jalan di server pribadi. Setiap cron job gagal, backup selesai, atau ada login mencurigakan, HP kamu langsung bunyi. Di artikel ini kita bahas cara install ntfy pakai Docker Compose dari nol sampai bisa dipakai buat monitoring server harian.
Kenapa Perlu Install ntfy di VPS Sendiri?
Banyak tools monitoring kirim notifikasi lewat email atau Telegram bot yang setupnya ribet dan butuh API key pihak ketiga. ntfy beda soalnya cuma butuh HTTP request biasa, tanpa akun, tanpa API key, tinggal curl ke topic yang kamu pilih. Soalnya semua data lewat server sendiri, privasi juga lebih terjaga dibanding pakai layanan gratisan orang lain. Selain itu ntfy ringan banget, jadi masih nyaman jalan bareng container lain di VPS 1 vCPU.
Kalau kamu udah pernah install Dockge buat kelola stack Docker Compose, ntfy bakal gampang ditambahin. Tinggal satu container tambahan, nggak perlu setup ribet.
Sebelum Install ntfy: Siapin Dulu VPS dan Docker
Pastikan VPS udah punya Docker dan Docker Compose plugin terpasang. Kalau belum, ikuti dulu panduan install Docker di Ubuntu VPS yang udah pernah dibahas. Siapkan juga domain atau subdomain, misalnya ntfy.domainmu.com, biar nanti bisa diakses lewat HTTPS dan gampang dipakai di aplikasi mobile.
Spesifikasi minimal juga nggak berat, 1 vCPU dan RAM 512MB udah cukup buat ntfy jalan lancar. Masalahnya kalau VPS masih dipakai buat banyak service lain, cek dulu sisa resource pakai free -h dan docker stats biar nggak bentrok.
Cara Install ntfy Pakai Docker Compose
Buat folder khusus dulu biar rapi, misalnya /opt/ntfy, lalu masuk ke folder itu.
mkdir -p /opt/ntfy/{cache,config,data}
cd /opt/ntfy
Setelah itu buat file docker-compose.yml dengan isi berikut. File ini nyimpen cache dan database user di folder lokal biar data nggak hilang tiap kali container di-restart.
services:
ntfy:
image: binwiederhier/ntfy
container_name: ntfy
command: serve
environment:
- TZ=Asia/Jakarta
volumes:
- ./cache:/var/cache/ntfy
- ./config:/etc/ntfy
- ./data:/var/lib/ntfy
ports:
- "8080:80"
restart: unless-stopped
healthcheck:
test: ["CMD-SHELL", "wget -q --tries=1 http://localhost:80/v1/health -O - | grep -Eo 'true' || exit 1"]
interval: 30s
timeout: 5s
Jalankan dengan perintah docker compose up -d, tunggu beberapa detik, lalu cek statusnya.
docker compose ps
docker logs ntfy
Kalau container statusnya healthy, artinya ntfy udah jalan dan siap dipakai. Di titik ini kamu bisa lanjut pasang reverse proxy Nginx atau Caddy biar akses ke ntfy.domainmu.com otomatis dapet SSL. Buat opsi konfigurasi lain yang lebih lengkap, cek langsung dokumentasi resmi ntfy.
Tes Kirim Notifikasi Pertama dari ntfy
Sekarang saatnya coba kirim notifikasi pertama. Buka topic apa aja, anggap aja namanya server-alerts, terus publish pesan lewat curl.
curl -d "Server VPS baru aja online lagi" http://localhost:8080/server-alerts
Install aplikasi ntfy di HP lewat Play Store atau F-Droid, lalu subscribe ke topic server-alerts dengan alamat server kamu. Notifikasi bakal langsung muncul begitu ada yang publish ke topic itu. Nggak perlu daftar akun sama sekali, cukup nama topic yang sama antara pengirim dan penerima.
Amanin Server ntfy dengan Autentikasi dan Access Token
Masalahnya, default ntfy itu terbuka buat siapa aja yang tahu alamat servernya. Kalau server bakal diakses publik lewat domain, wajib banget aktifin autentikasi biar topic nggak bisa ditulis sembarangan orang.
docker exec -it ntfy ntfy user add --role=admin admin
docker exec -it ntfy ntfy access everyone "*" deny
Perintah di atas bikin akses default jadi tertutup buat semua orang, lalu kamu tinggal kasih izin spesifik ke user atau token tertentu. Daripada taruh password langsung di script cron, mending generate token khusus biar gampang dicabut kalau bocor.
docker exec -it ntfy ntfy token add admin
Token itu tinggal dipakai sebagai bearer token di header Authorization waktu publish pesan lewat curl atau script apa pun.
Pakai ntfy buat Notifikasi Cron Job dan Backup
Setelah autentikasi beres, ntfy paling enak dipasangin ke cron job backup atau script monitoring. Contohnya, tambahin baris berikut di akhir script backup biar dapet notifikasi begitu proses selesai atau gagal.
if [ $? -eq 0 ]; then
curl -H "Title: Backup Sukses" -H "Priority: default" \
-d "Backup database selesai jam $(date)" \
-H "Authorization: Bearer tk_xxxxx" https://ntfy.domainmu.com/server-alerts
else
curl -H "Title: Backup GAGAL" -H "Priority: urgent" \
-d "Cek log backup segera" \
-H "Authorization: Bearer tk_xxxxx" https://ntfy.domainmu.com/server-alerts
fi
Dengan begitu, kamu nggak perlu buka SSH tiap hari cuma buat mastiin backup jalan normal. Cara yang sama juga bisa dipakai buat notifikasi dari Fail2Ban, Uptime Kuma, atau pipeline CI/CD. Satu server ntfy bisa jadi pusat notifikasi buat semua service di VPS.
Troubleshooting Install ntfy yang Sering Kejadian
Notifikasi nggak muncul di HP? Cek dulu apakah nama topic di aplikasi persis sama dengan yang dipakai di curl, soalnya ntfy case-sensitive buat nama topic. Error 403 forbidden waktu publish biasanya berarti akses topic itu udah di-deny. Cek lagi izinnya lewat ntfy access, atau jangan-jangan kamu lupa nyertain token di header.
Kalau container jalan tapi healthcheck gagal terus, cek log dengan docker logs ntfy dan pastikan port 80 di dalam container nggak bentrok sama service lain. Masalah SSL biasanya muncul kalau DNS domain belum propagasi sempurna, jadi tunggu beberapa menit dan tes lagi pakai dig ntfy.domainmu.com.
Segitu dulu panduan install ntfy di VPS pakai Docker. Dengan setup ini, server kamu jadi punya sistem notifikasi sendiri yang ringan, aman, dan nggak gantung ke layanan pihak ketiga. Lanjutin dengan hubungin ntfy ke semua service penting di VPS kamu, biar tiap ada masalah, kamu tahu duluan sebelum user yang komplain.

























