NAS tidak mau mati dari NUT master

Saya sedang mencoba mengonfigurasi NAS saya agar bisa dimatikan melalui perintah dari server NUT saya. Saya sudah mencoba berbagai cara dan variasi, termasuk mengganti nama server / menambahkan dummy-ups bernama [qnapups] dan menambahkan user admin/123456, atau mengubah konfigurasi persis seperti yang dijelaskan di blog ini:
https://www.dalbert.net/qnap-nas/
namun saya tetap tidak bisa mematikan NAS saya.

Saat ini, setelah mengikuti setiap langkah di blog di atas (mengubah perintah MONITOR di NAS agar sesuai dengan username/password yang benar dan menambahkan dummy-ups bernama qnapups di master), saya sudah mendapatkan koneksi yang berfungsi di Control Panel-> Perangkat eksternal-> UPS dengan ID server saya seperti seharusnya, dan juga dengan menjalankan upsc myups@<ip> dari ssh, saya mendapatkan data UPS, tetapi tidak ada sinyal yang mempengaruhi NAS.

Namun, saat mengirim sinyal shutdown dengan

 upsmon -c fsd

di master, hanya klien lain yang dimatikan, bukan NAS.

Saya tidak bisa membuat NAS yang sulit ini untuk shutdown, (saya sudah mencoba sebelumnya dengan pendekatan ssh murni, dan hasilnya lebih buruk.)

Isi /etc/config/ups/upsmon.conf di NAS saya:

RUN_AS_USER admin            
MONITOR qnapnas@<ip> 1 monuser secret slave
MINSUPPLIES 0                
# NAS adalah klien (jika TIDAK memberi daya ke perangkat lain)
SHUTDOWNCMD "/sbin/shutdown -h +0"
FINALDELAY 0     

(file lain tidak diubah)

Seperti yang sudah saya sebutkan, baik upsc myups@ip (ups asli) maupun upsc qnapups@ip (dummy-ups) berjalan sesuai harapan, hanya saja tidak menjalankan shutdown, dan juga dengan:

upscmd -u monuser -p secret qnapups@ip load.off
OK
upscmd -u monuser -p secret qnapups@ip driver.killpower
OK

Tidak ada yang berhasil membuat NAS shutdown.

Saya tidak punya log, dan sejauh yang saya pahami, tidak ada versi penuh NUT client di perangkat ini, jadi memang tidak berjalan seperti yang diharapkan dengan semua file log.

Saya bahkan tidak tahu cara debug tes shutdown lokal, karena upsmon -c fsd tidak berjalan di NAS:

[~] # sudo upsmon -c fsd
Network UPS Tools upsmon 2.7.4
kill: No such process

Mohon bantuannya!

Model: TS-832PX
Software: QTS 5.0.1 2376

Bisakah Anda mencoba mengatur NUT Slave melalui UI kami? Atau ada alasan tertentu mengapa Anda tidak bisa mengaturnya langsung melalui UI?

Terkait masalah penggunaan perintah, saya akan meneruskan hal tersebut ke tim internal kami untuk dianalisis. Terima kasih atas laporannya!

Akhirnya, sekarang sudah mulai mematuhi status BL dan memulai timer yang ditentukan di UI, sebelumnya tidak berfungsi (mungkin perlu reboot selain tombol apply)
tapi saya ingin memicu FSD pada saat tertentu, saya tidak ingin timer event baterai, saya atur di UI ke 100 menit agar tidak mengganggu.
Saya ingin agar mengikuti upsmon -fsd dari master, yang saat ini belum berjalan
Saya bisa melakukannya dengan dummy-ups dan memberikan timer 0 menit, tapi UI tidak mengizinkan.

Ada pembaruan?

Jadi, saya pernah mendokumentasikan solusi lama di forum lama, tapi forum itu sekarang sudah tidak ada.

Saya baru saja mengganti UPS saya ke Unifi UPS 2U dan ini mendukung NUT Server, dengan UPSName, username, dan password yang bisa dikonfigurasi.

Saya menggunakan claude desktop agar bisa berfungsi kembali. Semoga ini membantu kamu.

Memperbaiki QNAP sebagai klien NUT (Network UPS Tools) — GUI “Network UPS slave” tidak berfungsi dengan benar

Pengaturan

  • Sebuah server NUT berjalan di perangkat terpisah (dalam kasus saya UniFi UPS bertindak sebagai server NUT), dapat diakses di <NUT_SERVER_IP>:3493.
  • Sebuah QNAP NAS (QTS 5.2.9) yang perlu memantau UPS tersebut sebagai klien/slave, agar bisa merespons event listrik.

Masalahnya

Opsi GUI bawaan QNAP untuk ini — Control Panel → System → Power → UPS → “Network UPS slave” — hanya meminta alamat IP server. Tidak ada field username/password.

Koneksi NUT MONITOR yang asli (yang mendaftarkan perangkat sebagai klien terautentikasi dan memungkinkan koordinasi shutdown yang tepat) membutuhkan kredensial yang sesuai dengan entri di upsd.users server. Tanpa itu, proses GUI QNAP (upsutil) tidak bisa mengautentikasi sepenuhnya, sehingga:

  • NAS tidak pernah muncul di daftar klien terhubung server NUT.
  • Field Informasi UPS pada GUI tetap kosong (status daya AC, kapasitas baterai, model — semua menampilkan --), meskipun UPS jelas online.

Menjalankan query read-only secara manual berjalan baik:

upsc <ups_name>@<NUT_SERVER_IP>

Ini mengembalikan data lengkap secara live (isi baterai, beban, status, dll.) — membuktikan server dapat diakses dan nama UPS benar. Tapi ini hanya read tanpa autentikasi, bukan koneksi klien yang dipantau. Ini tidak menandakan daemon monitoring benar-benar berjalan.

Temuan kuncinya: ps | grep -i ups hanya menunjukkan upsutilupsmon (daemon monitor NUT sebenarnya) ternyata tidak pernah berjalan di NAS sama sekali. Opsi GUI “Network UPS slave” tidak menjalankannya.

Solusi

1. Edit langsung konfigurasi upsmon yang asli

QNAP menyediakan file NUT upsmon.conf standar, tapi GUI tidak mengisi baris MONITOR dengan kredensial karena memang tidak meminta. Edit langsung (via SSH atau SFTP):

/etc/config/ups/upsmon.conf

Tambahkan (atau perbaiki) baris MONITOR dengan kredensial NUT yang benar dari sisi server:

MONITOR <ups_name>@<NUT_SERVER_IP>:3493 1 <monitor_username> <monitor_password> slave

Tip: temukan <ups_name> yang benar (ini adalah nama perangkat internal yang didaftarkan di server NUT, bisa saja bukan “ups”) dengan:

upsc -l <NUT_SERVER_IP>

2. Jalankan daemon monitor sesungguhnya

Binary upsmon pada QNAP tidak menerima -c <path> seperti pada build NUT standar (flag itu dipakai untuk mengirim perintah seperti fsd/reload/stop). Ia membaca konfigurasinya dari path default — yang kebetulan adalah /etc/config/ups/upsmon.conf di atas — jadi setelah file benar, cukup jalankan:

/usr/sbin/upsmon

Cek apakah benar berjalan (harus muncul dua proses — parent dengan hak istimewa dan worker tak berhak):

ps | grep -i upsmon

Setelah berjalan, NAS langsung muncul pada daftar klien server NUT, dan koneksi terautentikasi dengan benar.

3. Buat tetap berjalan (watchdog crontab)

GUI QNAP tidak mengetahui proses ini dijalankan manual, jadi tidak survive setelah reboot, dan setiap perubahan setting daya di GUI atau ups.sh restart dapat mematikannya. Dibanding repot dengan autorun.sh QNAP (yang harus diaktifkan di Control Panel → Hardware → General, dan sering dinonaktifkan diam-diam oleh pemindaian Malware Remover), watchdog crontab jauh lebih andal:

*/5 * * * * pgrep -x upsmon >/dev/null || /usr/sbin/upsmon

Ini memeriksa tiap 5 menit apakah upsmon berjalan, dan akan menjalankannya kembali bila tidak — menghadapi reboot, crash, dan intervensi GUI.

Penting di QNAP: mengedit /etc/config/crontab secara langsung (misal pakai Notepad++ lewat SFTP) tidak terpakai cukup dengan crond.sh restart. Kamu harus reload file itu ke crontab aktif:

crontab /etc/config/crontab && /etc/init.d/crond.sh restart

Lalu pastikan sudah loaded:

crontab -l

(Juga pastikan line ending-nya Unix/LF jika edit dari Windows — CRLF bisa bikin cron diam-diam mengabaikan baris.)

Hasil

  • upsmon berjalan terus, terautentikasi, dan muncul dengan benar di daftar klien terhubung server NUT.
  • upsc <ups_name>@<NUT_SERVER_IP> tetap mengonfirmasi data UPS live.
  • Watchdog cron menjaga tetap berjalan meski reboot dan gangguan GUI, tanpa perlu mekanisme autorun.sh QNAP yang rapuh.

Ringkasan penyebab utama

Opsi GUI “Network UPS slave” bawaan QNAP hanyalah wrapper sederhana tanpa autentikasi (upsutil) — ini bukan sama dengan menjalankan daemon NUT upsmon standar, dan tidak bisa monitoring klien terautentikasi dengan benar. Jika halaman status UPS QNAP menunjukkan field kosong dan NAS tidak muncul di daftar klien server NUT, cek apakah upsmon benar-benar berjalan (ps | grep upsmon) — kemungkinan besar tidak, terlepas dari apa yang tampil di GUI.

:warning: Catatan: Ini mengabaikan penanganan UPS bawaan QNAP sendiri (upsutil / opsi GUI “Network UPS slave”) dan menjalankan daemon standar NUT upsmon secara manual, dengan SHUTDOWNCMD khusus. QNAP tidak secara resmi mendukung cara ini. Uji dulu di lingkungan Anda sendiri sebelum mengandalkannya — saya tidak bertanggung jawab atas kehilangan data, shutdown yang terlewat, atau masalah lain yang timbul dari mengikuti langkah-langkah ini.**

QNAP + NUT: Perbaiki SHUTDOWNCMD jika menjalankan upsmon alih-alih upsutil milik QNAP

Jika Anda sudah mengabaikan opsi “Network UPS slave” bawaan QNAP (yang menggunakan tool upsutil mereka dan tidak mendukung koneksi NUT yang terautentikasi) dan memilih menjalankan daemon NUT upsmon secara langsung, masih ada satu hal lagi yang harus diperbaiki: SHUTDOWNCMD default di upsmon.conf tidak berfungsi di QNAP dan akan gagal secara diam-diam saat terjadi kejadian nyata seperti padam listrik.

Masalahnya

QNAP menyertakan upsmon.conf dengan template default NUT tanpa modifikasi:

SHUTDOWNCMD "/sbin/shutdown -h +0"

Ini hanyalah contoh generik dari paket sumber NUT upstream — ini adalah default yang sama di semua distro Linux. QNAP memasukkan file ini apa adanya tanpa menyesuaikannya dengan OS mereka sendiri, karena jalur resmi mereka memang tidak dimaksudkan untuk menggunakan upsmon sama sekali — semuanya menggunakan upsutil (baca juga posting pendamping mengapa upsutil tidak berfungsi dengan baik pada server NUT terautentikasi).

Hasilnya: /sbin/shutdown tidak ada di QNAP (QTS). Cek dengan:

which shutdown
ls -la /sbin/shutdown

Jika upsmon perlu menjalankan shutdown darurat (UPS pada baterai, kritis), perintah ini akan gagal begitu saja — diam-diam menurut upsmon — sehingga sistem tetap menyala di UPS yang hampir habis tanpa shutdown yang terjadi.

Kenapa upsutil tidak punya masalah ini

upsutil (tool milik QNAP) sama sekali tidak lewat SHUTDOWNCMD — logika shutdown/unmount punya dia sudah di-hardcode secara internal, kemungkinan langsung mengeksekusi jalur poweroff QNAP sesungguhnya. Ini adalah jalur kode terpisah dari upsmon/upsmon.conf. Baris SHUTDOWNCMD default hanya penting jika Anda menjalankan upsmon.

Solusinya

Entry point poweroff milik QNAP sebenarnya adalah:

/sbin/poweroff

Ini dikonfirmasi sebagai binary yang memang dipanggil oleh script /etc/init.d/poweroff milik QNAP sendiri secara internal (setelah pengecekan schedul/busy-volume milik mereka, tapi untuk shutdown UPS darurat tidak perlu — Anda ingin secepatnya).

Update upsmon.conf:

SHUTDOWNCMD "/sbin/poweroff"

Kemudian restart upsmon agar perubahan diambil:

pkill upsmon
/usr/sbin/upsmon

Kesimpulan

Jika Anda mengatur upsmon di NAS QNAP (karena opsi GUI “Network UPS slave” tidak mendukung server NUT terautentikasi), jangan percaya default SHUTDOWNCMD yang dibawa di upsmon.conf — itu cuma template standar upstream yang tidak pernah disesuaikan oleh QNAP, dan binary yang dirujuk tidak ada di QTS. Ubah ke /sbin/poweroff sebelum mengandalkannya untuk situasi nyata.

Mungkin permintaan untuk implementasi (atau dukungan) yang lebih umum sebaiknya diajukan sebagai peningkatan produk agar tidak perlu memakai solusi sementara? Menurut saya, ini adalah contoh kasus penggunaan yang bagus.

Bayangkan Qnap mendukung NUT langsung tanpa perlu konfigurasi… sekarang, siapa yang berpikir itu bakal terjadi? :rofl: