Setup NUT on Proxmox

Published: (February 9, 2026 at 02:21 AM EST)
4 min read
Source: Dev.to

Source: Dev.to

1. Setup di UPS

1.1 Koneksi UPS

Pastikan UPS sudah terhubung ke jaringan. Pada contoh ini kita memakai APC SRT3000XLI 3000VA 230V Online UPS dengan modul NMC (Network Management Control) terpasang. Tutorial lengkap dapat dilihat di sini.

1.2 Timezone

  1. Buka menu Configuration > General > Date/Time > Mode.
  2. Pilih NTP Poolhttps://www.ntppool.org/en/zone/id.

Timezone configuration

1.3 SNMPv3

  1. Aktifkan SNMPv3: Configuration → Network → SNMPv3 > Access, centang Enable.

    Enable SNMPv3

  2. Buat user profile: Configuration → Network → SNMPv3 > User Profile. Pilih salah satu dari empat profil default.

    SNMPv3 user profile

1.4 Low‑Battery Delay

Set delay menjadi 20 detik pada Configuration > ShutdownLow Battery Duration.

Low Battery Duration

2. Setup di Proxmox Host

2.1 Installasi paket NUT

apt update
apt install -y snmp nut nut-snmp

2.2 Konfigurasi mode NUT

Edit file /etc/nut/nut.conf dan ubah baris MODE menjadi:

MODE=standalone

2.3 Konfigurasi UPS (ups.conf)

nano /etc/nut/ups.conf

Tambahkan (atau sesuaikan) blok berikut dengan user profile yang sudah dibuat pada UPS:

[apcsrt]
    driver = snmp-ups
    port = 10.0.3.136          # IP UPS
    snmp_version = v3
    secLevel = authPriv
    secName = apc_agent3
    authProtocol = SHA
    authPassword = farmcenter1009
    privProtocol = AES
    privPassword = farmcenter1009

2.4 Buat user NUT (upsd.users)

nano /etc/nut/upsd.users

Tambahkan di bagian paling bawah:

[monuser]
    password = passwordbebas
    upsmon primary

Tekan Ctrl+W untuk mencari, lalu Ctrl+V untuk menempel (jika menggunakan editor nano).

2.5 Konfigurasi monitor (upsmon.conf)

nano /etc/nut/upsmon.conf

Modifikasi bagian NOTIFYCMD dan NOTIFYFLAG:

# Example:
# NOTIFYCMD /usr/bin/notifyme
+NOTIFYCMD /usr/local/bin/nut-notif.sh

NOTIFYFLAG ONBATT EXEC
NOTIFYFLAG LOWBATT EXEC
NOTIFYFLAG ONLINE EXEC

Di bagian paling bawah, tambahkan baris MONITOR:

MONITOR apcsrt@localhost 1 monuser passwordbebas primary

Pastikan password yang dipakai sama dengan yang didefinisikan di /etc/nut/upsd.users.

2.6 Restart service NUT

systemctl restart nut-driver nut-server nut-monitor

2.7 Verifikasi koneksi ke UPS

upsc apcsrt@localhost

Untuk menampilkan parameter penting:

upsc apcsrt@localhost | egrep "battery.charge|battery.runtime|ups.status|battery.runtime.low|battery.runtime"

Jika output menampilkan nilai‑nilai tersebut, maka NUT sudah berhasil terhubung ke UPS.

2.8 Skrip notifikasi (/usr/local/bin/nut-notif.sh)

Buat file /usr/local/bin/nut-notif.sh (pastikan memiliki izin eksekusi) dan isi dengan skrip yang mengirimkan pesan ke Telegram. Contoh sederhana:

#!/bin/bash
# nut-notif.sh – kirim notifikasi UPS ke Telegram

# ==== CONFIGURATION ====
TOKEN="YOUR_TELEGRAM_BOT_TOKEN"
CHAT_ID="YOUR_TELEGRAM_CHAT_ID"
# =======================

EVENT=$1   # ONBATT, LOWBATT, ONLINE, dll.
MESSAGE="⚡ UPS ${EVENT} pada $(date '+%Y-%m-%d %H:%M:%S')"

curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
     -d chat_id="${CHAT_ID}" \
     -d text="${MESSAGE}" >/dev/null
chmod +x /usr/local/bin/nut-notif.sh

Ganti YOUR_TELEGRAM_BOT_TOKEN dan YOUR_TELEGRAM_CHAT_ID dengan nilai yang sesuai.

3. Penutup

Dengan langkah‑langkah di atas, Proxmox akan:

  • Memantau status UPS secara real‑time melalui NUT.
  • Mengirim notifikasi ke Telegram ketika terjadi perubahan status (ON BATT, LOW BATT, ONLINE).
  • Melakukan shutdown otomatis bila UPS berada pada kondisi Low Battery.

Semoga tutorial ini membantu! Jika ada pertanyaan atau masalah, silakan tinggalkan komentar atau hubungi saya via Telegram. 🚀

Skrip Bash untuk Notifikasi UPS ke Telegram

Berikut adalah contoh skrip Bash yang dapat dipakai untuk mengirim notifikasi status UPS (ON BATTERY, LOW BATTERY, ONLINE) ke Telegram melalui bot yang sudah dibuat di BotFather.

#!/bin/bash

# ------------------------------------------------------------------
# Setup variabel
# ------------------------------------------------------------------
TOKEN="6495733192:AAEiztfp_b6JoZB7uUWhpZV89KbpVQou_34"
CHAT_ID="-1001768856329"
TOPIC_ID="53038"
EVENT="$NOTIFYTYPE"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

# ------------------------------------------------------------------
# Fungsi untuk mengirim pesan ke Telegram
# ------------------------------------------------------------------
send() {
  curl -s -X POST "https://api.telegram.org/bot${TOKEN}/sendMessage" \
    -d chat_id="${CHAT_ID}" \
    -d message_thread_id="${TOPIC_ID}" \
    -d parse_mode=HTML \
    --data-urlencode text="$1"
}

# ------------------------------------------------------------------
# Buat trigger EVENT dari upsmon.conf
# ------------------------------------------------------------------
case "$EVENT" in
  ONBATT)
    MSG=$(printf "UPS ON BATTERY \n\n%s" "$DATE")
    ;;
  LOWBATT)
    MSG=$(printf "UPS LOW BATTERY \n\n%s\nProd server Graceful Shutdown" "$DATE")
    ;;
  ONLINE)
    MSG=$(printf "UPS ONLINE \n\n%s" "$DATE")
    ;;
  *)
    exit 0
    ;;
esac

# ------------------------------------------------------------------
# Panggil fungsi dengan parameter $MSG
# ------------------------------------------------------------------
send "$MSG"

Catatan:
Bagian yang berwarna hijau (variabel TOKEN) adalah token yang didapatkan dari BotFather Telegram. Pastikan token tersebut sudah benar dan bot Anda sudah di‑setup.

Cara Menguji Skrip

Jalankan skrip di atas dengan men‑set variabel lingkungan NOTIFYTYPE sesuai dengan event yang ingin diuji.

NOTIFYTYPE=ONLINE UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh
NOTIFYTYPE=ONBATT UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh
NOTIFYTYPE=LOWBATT UPSNAME=apcsrt@localhost /usr/local/bin/nut-notif.sh

Jika semuanya sudah dikonfigurasi dengan benar, Anda akan menerima pesan di Telegram sesuai dengan teks yang didefinisikan pada masing‑masing event.

Uji Coba Tingkat Lanjut

Untuk menguji secara nyata, cabut daya UPS dan tunggu hingga UPS masuk ke mode Low Battery. Jika konfigurasi sudah tepat, server akan secara otomatis mengeksekusi perintah shutdown yang telah di‑setup pada NUT (Network UPS Tools).

Selamat mencoba, semoga bermanfaat!

0 views
Back to Blog

Related posts

Read more »