[ 자급자족 홈랩 만들기 III ] NUT 서버 구축 (1)

by ANTIBIOTICS posted Oct 06, 2026
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

홈랩을 위해 Delta VX-600VA UPS를 구입했습니다.

 

UPS에 멀티탭을 꽂고, 거기에 각종 서버들을 주렁주렁 물렸습니다.

그런데 UPS에 관리용 USB 포트는 하나 뿐입니다.

 

그래서 전담 서버 한대가 UPS에 USB로 연결돼서 상태를 모니터링하고, 정전이 생기면 일정 시간 버티다가 다른 모든 서버에 종료 명령을 브로드캐스트하는 구조를 만들고 싶었습니다.

 

이 글은 제가 설정하면서 삽질한 내용이 매우 많으므로 일반적인 가이드로는 추천드리지 않습니다...

 

잘 정리된 가이드가 필요하다면 이 글을 참고.

 

 


 

▶ 준비물 - 배경지식

 

NUT(Network UPS Tools)는 리눅스에서 UPS를 모니터링하고 관리할 수 있는 오픈소스 유틸리티입니다.

 

처음 보면 온갖 설정 파일과 데몬 이름이 우수수 나와서 머리가 아픈데, 제가 이해한 대로 정리해보면...

 

큰 구조는 UPS Driver <-> upsd <-> NUT Clients 로 구성됩니다.

 

 

  • UPS Driver : 실제 UPS와 통신합니다. ups.conf에서 설정할 수 있습니다.
  • upsd : Driver가 UPS에서 가져온 정보를 제공하는 서버입니다. upsd.conf와 upsd.users로 관리합니다.
  • NUT Clients: upsd에서 받아온 정보를 사용해서 동작을 제어합니다. upsmon.conf, upsc, upsrw, upscmd 등으로 구성됩니다.

 

 

이 글에서는 upsd 설정까지만 진행하겠습니다.

 


 

▶ 1단계 - UPS Driver 설정

 

서버에서 Delta VX-600VA의 드라이버를 잡아야 합니다.

 

ups1.png

 

sudo lsusb -vt

 

서버에 연결된 USB 장치 목록을 확인해봅니다.

 

저는 버스 ID 0665:5161 번이  USB 시리얼 장치로 연결되었다고 나오는군요.

 

다른 USB 장치는 딱히 없으니 아마 이 녀석인것 같습니다.

 

ups2.png

 

sudo apt install nut nut-client nut-server

 

NUT 관련 패키지들을 설치합니다.

 

ups3.png

 

sudo nut-scanner

 

NUT 장치들을 스캔합니다.

 

아까 그 0665:5161 녀석이 nutdrv_qx라는 드라이버로 인식됐군요.

 

ups4.png

 

vi /etc/nut/ups.conf

 

[vx600]

    driver = nutdrv_qx

    port = auto

    vendorid = 0665

    productid = 5161

    desc = "Delta VX-600"

 

ups.conf 파일을 열어서 UPS를 정의해주겠습니다.

 

  • driver : UPS를 관리하기 위한 드라이버를 지정합니다.
  • port : UPS와 연결된 시리얼 포트를 지정합니다. /dev/ttyX 또는 /dev/cuaaX 형식으로 입력할 수 있습니다. 저는 그냥 auto로 두겠습니다.
  • vendorid : 버스 ID의 앞부분인 0665를 입력하겠습니다.
  • productid : 버스 ID의 뒷부분인 5161을 입력하겠습니다.
  • desc : 이 UPS에 대한 메모를 추가합니다.

 

저는 기억하기 쉽게 하려고 장치 이름을 vx600으로 정했지만 다른 이름도 괜찮습니다.

 

ups5.png

 

vi /etc/nut/nut.conf

 

MODE=netserver

 

nut.conf 파일을 열어서 NUT 서버 모드로 변경합니다.

 

MODE= 절을 찾아서 netserver로 수정하도록 합시다.

다른 MODE 값들은 아래와 같습니다.

 

  • none : NUT가 자동 시작되지 않습니다.
  • standalone : 서버가 아니라 로컬 전용인 경우입니다.
  • netserver : 서버로 사용하는 경우입니다.

 

ups7.png

 

sudo upsdrvctl start

 

이제 드라이버를 실행... 해야하는데 오류가 튀어나왔습니다.

 

maxretry가 이 드라이버에 유효하지 않는 설정이라고 하네요.

UPS 설정을 ups.conf 제일 위에 추가했더니 이것이 문제가 된 것 같습니다.

 

UPSDRVCTL

 

ups8.png

 

maxretry=3

 

다시 ups.conf 파일을 열어서 기존 maxretry 절을 찾아서 삭제합니다.

그리고 제일 위에 새로 maxretry=3를 추가합니다.

 

ups9.png

 

sudo upsdrvctl start

 

다시 드라이버를 시작하려는데... 이번에는 USB 장치에 접근할 수 없다고 합니다... 아오!!

 

ups10.png

 

sudo udevadm control --reload-rules

sudo udevadm trigger

 

usb 케이블을 뽑았다 꽂고, udev 규칙을 리로드합니다.

 

ups11.png

 

다시 upsdrvctl start ...

 

이번에는 정상적으로 작동합니다.

 

ups12.png

 

sudo systemctl restart nut-driver@vx600.service

sudo systemctl status nut-driver@vx600.service

 

드라이버 데몬도 정상적으로 올라왔는지 확인해봅시다.

 


 

▶ 2단계 - upsd 설정

 

ups13.png

 

이제 upsc 명령으로 upsd에도 연결이 됐는지 확인... 하려고 했는데 연결이 실패했군요.

 

ups14.png

 

sudo systemctl status nut-server

 

nut-server 데몬이 작동하지 않는 상태입니다.

이 녀석을 되살려야 합니다.

 

ups15.png

 

로그를 확인하니 not listening on ::1 port 3493, no listening interface available로 나오는군요.

 

제 서버는 IPv6가 비활성화된 상태인데, 아마 이게 문제가 된 듯 합니다.

 

ups16.png

 

vi /etc/nut/upsd.conf

 

LISTEN 127.0.0.1 3493

LISTEN 192.168.55.20 3493

 

upsd.conf를 열어서 upsd의 바인딩 주소를 명시적으로 지정해줍시다.

 

IPv4만 사용하고, 루프백과 WAN에서 각각 3493/TCP에서 리스닝합니다.

192.168.55.20 부분은 자신의 서버에 맞게 변경하면 됩니다.

 

ups17.png

 

sudo systemctl restart nut-server

sudo systemctl status nut-server

 

nut-server 데몬을 다시 시작합니다.

이번에는 정상 작동하는군요.

 

ups18.png

 

upsc vx600@localhost

 

서버가 자기 자신의 NUT 서버에 접속해서 UPS 상태를 받아올 수 있는지 확인합니다.

 

ups.status: OL은 UPS가 AC 전원을 사용 중(OnLine)이라는 뜻입니다.

UPS 전원이 끊기고 배터리로 전환되면 OB (On Battery)로 바뀔 것입니다.

 

ups19.png

 

sudo apt install nut-client

 

다른 장치에서도 이 NUT 서버에 접속할 수 있는지 확인하겠습니다.

클라이언트 장치에서는 nut-client 패키지만 설치합니다.

 

ups20.png

 

upsc vx600@192.168.55.20

 

이렇게 클라이언트에서도 UPS 정보를 정상적으로 받아왔습니다.

 

이제 다음 글에서 NUT Clients 설정으로 넘어가겠습니다.

 


  1. [ 자급자족 홈랩 만들기 III ] NUT 서버 구축 (1)

    Date2026.10.06 Views1
    Read More
  2. nosuid로 인해 sudo가 안 먹히는 상태에서 복구하기 ...

    Date2026.10.01 Views3
    Read More
  3. [ 자급자족 홈랩 만들기 II ] APT Mirror 구축

    Date2026.09.30 Views3
    Read More
  4. [ 자급자족 홈랩 만들기 I ] NEO-M8N 모듈이 수상하다?

    Date2026.09.29 Views9
    Read More
  5. DietPi에 DS3231M RTC 모듈 연결하기

    Date2026.09.26 Views15
    Read More
  6. [ 자급자족 홈랩 만들기 I ] Stratum1 NTP 서버 구축 (1)

    Date2026.09.21 Views22
    Read More
  7. zramswap 설정하기

    Date2026.02.14 Views261
    Read More
  8. piper 사용하여 로지텍 마우스 설정하기

    Date2025.12.19 Views272
    Read More
  9. Ubuntu에서 키보드 백라이트(조명) 밝기 설정하기

    Date2023.08.03 Views1021
    Read More
  10. ident 데몬(oidentd) 활용한 ident 서비스 구축하기

    Date2023.07.05 Views927
    Read More
Board Pagination Prev 1 2 3 Next
/ 3

menu