Ntfy adalah sebuah layanan notifikasi berbasis publish-subscribe yang memungkinkan Kita mengirimkan notifikasi ke berbagai perangkat melalui HTTP. Singkatnya, ntfy bertindak sebagai perantara yang menerima pesan dari satu sumber dan meneruskannya ke banyak pelanggan (subscriber). Layanan ini bersifat open-source, mudah di-host sendiri, dan sangat fleksibel dalam penggunaannya.
Fitur Utama Ntfy
Ntfy memiliki sejumlah fitur utama yang menjadikannya pilihan menarik untuk sistem notifikasi:
- Publish-Subscribe: Model publish-subscribe memungkinkan pengirim (publisher) mengirim pesan tanpa mengetahui siapa atau berapa banyak penerima (subscriber). Ini membuat ntfy sangat cocok untuk arsitektur terdistribusi dan aplikasi yang membutuhkan decoupling.
- HTTP-based: Ntfy menggunakan HTTP sebagai protokol utama untuk komunikasi. Ini membuatnya mudah diintegrasikan dengan berbagai bahasa pemrograman dan platform tanpa memerlukan library khusus.
- End-to-End Encryption: Ntfy mendukung enkripsi end-to-end untuk memastikan kerahasiaan pesan. Hanya pengirim dan penerima yang memiliki kunci enkripsi yang dapat membaca isi pesan.
- Attachment: Ntfy memungkinkan Kita mengirimkan attachment bersama dengan notifikasi. Ini berguna untuk mengirimkan gambar, file audio, atau jenis file lainnya.
- Prioritas: Kita dapat mengatur prioritas notifikasi untuk memastikan pesan-pesan penting segera sampai ke penerima. Notifikasi dengan prioritas tinggi akan ditampilkan lebih menonjol atau bahkan membunyikan alarm.
- Action: Ntfy mendukung action yang memungkinkan Kita menambahkan tombol atau tautan ke notifikasi. Action ini dapat digunakan untuk memicu tindakan tertentu, seperti membuka aplikasi atau mengunjungi website.
- Multi-Platform: Ntfy memiliki client untuk berbagai platform, termasuk Android, iOS, browser web, dan command line. Ini memungkinkan Kita menerima notifikasi di perangkat mana pun yang Kita gunakan.
- Self-Hosting: Ntfy dapat di-host sendiri di server Kita. Ini memberi Kita kendali penuh atas data dan infrastruktur notifikasi Kita.
Instalasi Ntfy dengan Docker
Salah satu cara termudah untuk menginstal ntfy adalah dengan menggunakan Docker. Docker memungkinkan Kita menjalankan ntfy di dalam container yang terisolasi, sehingga memudahkan pengelolaan dan deployment.

Berikut adalah langkah-langkah untuk menginstal ntfy dengan Docker:
Instal Docker: Jika Kita belum menginstal Docker, Kita perlu mengunduh dan menginstalnya terlebih dahulu. Kunjungi situs web Docker untuk mendapatkan petunjuk instalasi yang sesuai dengan sistem operasi Kita.
Buat Direktori untuk Data Ntfy: Buat direktori di server Kita untuk menyimpan data ntfy. Direktori ini akan digunakan untuk menyimpan konfigurasi dan data lainnya.
mkdir /var/lib/ntfy
Jalankan Container Ntfy: Gunakan perintah docker run untuk menjalankan container ntfy. Berikut adalah contoh perintahnya:
docker run -d \ -p 80:80 \ -v /var/lib/ntfy:/var/lib/ntfy \ --name ntfy \ --restart unless-stopped \ binwiederhier/ntfy
Penjelasan dari opsi-opsi di atas:
- -d: Menjalankan container di background (detached mode).
- -p 80:80: Memetakan port 80 dari container ke port 80 di host. Kita dapat mengubah port host sesuai kebutuhan.
- -v /var/lib/ntfy:/var/lib/ntfy: Memasang volume untuk menyimpan data ntfy di direktori /var/lib/ntfy di host.
- –name ntfy: Memberi nama “ntfy” pada container.
- –restart unless-stopped: Mengatur container untuk otomatis restart kecuali dihentikan secara manual.
- binwiederhier/ntfy: Image Docker yang digunakan untuk menjalankan ntfy.
Akses Ntfy: Setelah container berjalan, Kita dapat mengakses ntfy melalui browser web di alamat http://<alamat_server>. Kita akan melihat halaman web ntfy yang sederhana.
Konfigurasi Ntfy (Opsional)
Secara default, ntfy berjalan dengan konfigurasi dasar. Namun, Kita dapat menyesuaikan konfigurasi ntfy sesuai kebutuhan. Konfigurasi ntfy disimpan dalam file server.yml di direktori /var/lib/ntfy.
Berikut adalah beberapa opsi konfigurasi yang umum digunakan:
- base-url: URL dasar untuk server ntfy. Secara default, nilai ini adalah URL tempat server diakses.
- listen-address: Alamat IP dan port tempat server mendengarkan koneksi. Secara default, server mendengarkan semua alamat IP pada port 80 atau 443 (jika TLS diaktifkan).
- cache-dir: Direktori tempat ntfy menyimpan cache. Secara default, direktori ini adalah /var/cache/ntfy.
- attachment-cache-dir: Direktori tempat ntfy menyimpan cache attachment. Secara default, direktori ini adalah /var/cache/ntfy/attachments.
- enable-uploads: Mengaktifkan atau menonaktifkan upload attachment. Secara default, upload attachment diaktifkan.
- enable-mqtt: Mengaktifkan atau menonaktifkan dukungan MQTT. Secara default, dukungan MQTT dinonaktifkan.
- mqtt-broker-url: URL broker MQTT yang digunakan.
- mqtt-client-id: ID client MQTT yang digunakan.
- firebase-credentials-file: Path ke file kredensial Firebase untuk mengirim notifikasi push.
- enable-registration: Mengaktifkan atau menonaktifkan pendaftaran pengguna. Secara default, pendaftaran pengguna dinonaktifkan.
- admin-username: Username untuk akun admin.
- admin-password: Password untuk akun admin.
Untuk mengubah konfigurasi ntfy, edit file server.yml dan restart container Docker.
Cara Menggunakan Ntfy
Setelah ntfy terinstal dan berjalan, Kita dapat mulai menggunakannya untuk mengirim dan menerima notifikasi. Berikut adalah beberapa cara untuk menggunakan ntfy:
Mengirim Notifikasi dengan Curl
Cara termudah untuk mengirim notifikasi ke ntfy adalah dengan menggunakan perintah curl. Berikut adalah contoh perintahnya:
curl -d "Hello, world!" https://ntfy.sh/mytopic
Penjelasan dari opsi-opsi di atas:
- -d “Hello, world!”: Mengirimkan string “Hello, world!” sebagai isi pesan.
- https://ntfy.sh/mytopic: URL topik yang ingin Kita kirimkan pesan. Ganti ntfy.sh dengan alamat server ntfy Kita dan mytopic dengan nama topik yang Kita inginkan.
Menerima Notifikasi dengan Aplikasi Ntfy
Untuk menerima notifikasi, Kita perlu menginstal aplikasi ntfy di perangkat Kita. Aplikasi ntfy tersedia untuk Android dan iOS. Setelah menginstal aplikasi, Kita perlu berlangganan (subscribe) ke topik yang ingin Kita terima notifikasinya.
Berikut adalah langkah-langkah untuk berlangganan topik di aplikasi ntfy:
- Buka aplikasi ntfy.
- Ketuk tombol “+” untuk menambahkan topik baru.
- Masukkan nama topik yang ingin Kita langgani.
- Ketuk tombol “Subscribe”.
Setelah berlangganan topik, Kita akan menerima notifikasi setiap kali ada pesan baru yang dikirim ke topik tersebut.
Mengirim Notifikasi dengan Python
Kita juga dapat mengirim notifikasi ke ntfy menggunakan bahasa pemrograman Python. Berikut adalah contoh kode Python untuk mengirim notifikasi:
import requests
def send_notification(topic, message):
url = f"https://ntfy.sh/{topic}"
data = message.encode('utf-8')
response = requests.post(url, data=data)
if response.status_code == 200:
print("Notification sent successfully!")
else:
print(f"Failed to send notification. Status code: {response.status_code}")
# Contoh penggunaan
send_notification("mytopic", "Hello from Python!")
Kode di atas menggunakan library requests untuk mengirim permintaan POST ke server ntfy. Kita perlu mengganti https://ntfy.sh dengan alamat server ntfy Kita dan mytopic dengan nama topik yang Kita inginkan.
Fitur Lanjutan
Ntfy juga mendukung fitur-fitur lanjutan seperti:
- Enkripsi: Untuk mengenkripsi pesan, Kita perlu menambahkan header Authorization: Bearer <kunci_enkripsi> ke permintaan HTTP Kita.
- Prioritas: Untuk mengatur prioritas pesan, Kita perlu menambahkan header X-Priority: <prioritas> ke permintaan HTTP Kita. Prioritas dapat berupa angka antara 1 (terendah) dan 5 (tertinggi).
- Attachment: Untuk mengirim attachment, Kita perlu menggunakan format multipart/form-data dalam permintaan HTTP Kita.
- Action: Untuk menambahkan action ke notifikasi, Kita perlu menambahkan header X-Action: <nama_action>=<URL> ke permintaan HTTP Kita.
Ntfy adalah tool notifikasi yang sangat fleksibel dan mudah digunakan. Dengan fitur-fiturnya yang lengkap dan dukungan multi-platform, ntfy dapat menjadi solusi ideal untuk kebutuhan notifikasi Kita.
- Repo Github: https://github.com/binwiederhier/ntfy
- Sumber: https://docs.ntfy.sh
