Lompat ke konten
BMKG Alert

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

  1. Salin repositori

    git clone https://github.com/dhanyyudi/bmkg-alert.git
    cd bmkg-alert
  2. Buat berkas .env

    cp .env.example .env

    Isi minimal kata sandi admin dan kredensial Telegram:

    ADMIN_PASSWORD=kata-sandi-yang-kuat
    TELEGRAM_BOT_TOKEN=token-dari-BotFather
    TELEGRAM_CHAT_ID=123456789
  3. Jalankan container

    docker compose up -d

    Buka http://localhost:3000. Halaman penyiapan akan memandu langkah berikutnya.

Variabel lingkungan

Semua pengaturan server ada di berkas .env.

VariabelWajib?Keterangan
Inti
ADMIN_PASSWORDWajibKata 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_URLOpsionalAlamat API sumber data BMKG. Bawaan: https://bmkg-api.dhanypedia.com
DEMO_MODEOpsionaltrue menjadikan instance demo publik yang hanya bisa dibaca dan mengaktifkan trial 24 jam.
TZOpsionalZona waktu, dipakai untuk jam tenang. Bawaan: Asia/Jakarta
CLIENT_IP_HEADEROpsionalHeader berisi alamat pengunjung dari reverse proxy Anda, untuk pembatasan laju. Cloudflare: CF-Connecting-IP, nginx: X-Real-IP.
Telegram
TELEGRAM_BOT_TOKENOpsionalToken bot dari @BotFather.
TELEGRAM_CHAT_IDOpsionalChat ID pribadi atau grup yang menerima notifikasi.
Channel lain
DISCORD_WEBHOOK_URLOpsionalURL incoming webhook Discord.
SLACK_WEBHOOK_URLOpsionalURL incoming webhook Slack.
SMTP_HOST / SMTP_USER / SMTP_PASSWORDOpsionalPengiriman email lewat SMTP.
GENERIC_WEBHOOK_URLOpsionalEndpoint webhook JSON milik Anda.

Menyiapkan bot Telegram

  1. Buka Telegram dan cari @BotFather.
  2. Kirim /newbot, lalu ikuti petunjuknya sampai bot dibuat.
  3. Salin Bot Token ke TELEGRAM_BOT_TOKEN di .env.
  4. Kirim /start ke @userinfobot dan salin angka Chat ID yang dibalasnya.
  5. Isi angka itu ke TELEGRAM_CHAT_ID di .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 -d

Melihat log:

docker compose logs -f

Menghentikan layanan:

docker compose down

Penyimpanan 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/