Cara Install ntfy di VPS: Kirim Notifikasi Push dari Server Sendiri

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.

Jundi Husni Mubaraq

Jundi Husni Mubaraq

Saya seorang software engineer yang sejak awal 2026 megang penuh (sendirian) tanggung jawab infrastruktur server di tempat saya kerja: deploy dan maintain server Linux Ubuntu on-premises, bangun keamanan berlapis pakai CrowdSec dan Cloudflare, kelola job scheduling dan monitoring pakai Cronicle, deploy aplikasi containerized pakai Docker, sampai ngurusin mail server korporat dari nol. Sebelumnya saya 3+ tahun jadi Software Engineer/Fullstack Developer di beberapa perusahaan, termasuk proyek skala internasional (EUDR compliance system buat Lindt & Sprungli) dan sistem rumah sakit (SIMRS, rekam medis elektronik, integrasi BPJS Kesehatan) di RS PKU Muhammadiyah Surakarta. jundi.hm ini tempat saya dokumentasiin apa yang beneran saya kerjain dan pelajarin di lapangan, bukan sekadar riset teori, S.Kom dari Universitas Duta Bangsa Surakarta jadi bekal awal, tapi yang nulis di sini adalah pengalaman langsung ngelola server production sehari-hari. Selengkapnya: https://iam.jundi.hm

Lihat Juga Nih

Selanjutnya Nih

Kasih Komentar

Email kamu gak bakal ditampilin ke publik. Kalau ada tanda ini artinya wajib diisi ya *

Rekomendasi.

Lagi Viral.