Pasang sendiri
Jalankan BMKG Alert di server Anda sendiri. Yang dibutuhkan hanya Docker.
Yang perlu disiapkan
- Docker dan Docker Compose (v2).
- Host Linux atau macOS, atau Windows dengan WSL2.
- Token bot Telegram untuk notifikasi. Opsional, tetapi disarankan.
Langkah pemasangan
Salin repositori
git clone https://github.com/dhanyyudi/bmkg-alert.git cd bmkg-alertBuat berkas .env
cp .env.example .envIsi minimal kata sandi admin dan kredensial Telegram:
ADMIN_PASSWORD=kata-sandi-yang-kuat TELEGRAM_BOT_TOKEN=token-dari-BotFather TELEGRAM_CHAT_ID=123456789Jalankan container
docker compose up -dBuka
http://localhost:3000. Halaman penyiapan akan memandu langkah berikutnya.
Variabel lingkungan
Semua pengaturan server ada di berkas .env.
| Variabel | Wajib? | Keterangan |
|---|---|---|
| Inti | ||
| ADMIN_PASSWORD | Wajib | Kata sandi admin. Setelah diganti dari nilai bawaan, setiap perubahan pengaturan memerlukannya. Selama masih bawaan, siapa pun yang bisa membuka instance ini bisa mengubah pengaturan. |
| BMKG_API_URL | Opsional | Alamat API sumber data BMKG. Bawaan: https://bmkg-api.dhanypedia.com |
| DEMO_MODE | Opsional | true menjadikan instance demo publik yang hanya bisa dibaca dan mengaktifkan trial 24 jam. |
| TZ | Opsional | Zona waktu, dipakai untuk jam tenang. Bawaan: Asia/Jakarta |
| CLIENT_IP_HEADER | Opsional | Header berisi alamat pengunjung dari reverse proxy Anda, untuk pembatasan laju. Cloudflare: CF-Connecting-IP, nginx: X-Real-IP. |
| Telegram | ||
| TELEGRAM_BOT_TOKEN | Opsional | Token bot dari @BotFather. |
| TELEGRAM_CHAT_ID | Opsional | Chat ID pribadi atau grup yang menerima notifikasi. |
| Channel lain | ||
| DISCORD_WEBHOOK_URL | Opsional | URL incoming webhook Discord. |
| SLACK_WEBHOOK_URL | Opsional | URL incoming webhook Slack. |
| SMTP_HOST / SMTP_USER / SMTP_PASSWORD | Opsional | Pengiriman email lewat SMTP. |
| GENERIC_WEBHOOK_URL | Opsional | Endpoint webhook JSON milik Anda. |
Menyiapkan bot Telegram
- Buka Telegram dan cari
@BotFather. - Kirim
/newbot, lalu ikuti petunjuknya sampai bot dibuat. - Salin Bot Token ke
TELEGRAM_BOT_TOKENdi.env. - Kirim
/startke@userinfobotdan salin angka Chat ID yang dibalasnya. - Isi angka itu ke
TELEGRAM_CHAT_IDdi.env.
Reverse proxy (opsional)
Secara bawaan port 3000 dibuka langsung. Untuk memakai domain dengan HTTPS, taruh reverse proxy di depannya. Container frontend sudah meneruskan semua permintaan /api ke backend, jadi cukup satu layanan yang dibuka.
Caddy
bmkg-alert.example.com {
reverse_proxy localhost:3000
}Nginx
server {
server_name bmkg-alert.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}Pembaruan dan pemeliharaan
Tarik image terbaru lalu jalankan ulang:
docker compose pull
docker compose up -dMelihat log:
docker compose logs -fMenghentikan layanan:
docker compose downPenyimpanan data
Basis data dan konfigurasi disimpan di ./data/backend/ pada host. Cadangkan direktori ini untuk menjaga pengaturan dan riwayat peringatan.
Izin direktori. Jika backend gagal menyala karena galat izin, pastikan direktori data dimiliki UID 1000:
sudo chown -R 1000:1000 ./data/