Wednesday, January 7, 2015

Setup UPS with Synology Disk Station and CentOS Linux Server via USB and Network

Setting up a UPS that will automatically cause a Synology DiskStation to enter safe mode and CentOS 7 server was fairly straightforward, however there was not a lot of information showing how to do this so I decided to write this post.

I will describe how to setup a UPS connected to a Synology Disk Station via USB which will notify a machine running CentOS and the upsmon service when UPS events occur so that they can respond to a power outage accordingly.  

DiskStation Setup

Connect your UPS to your Synology NAS using a USB cable.

Using built in support for a UPS Network Server on the Synology NAS (which uses NUT from www.networkupstools.org under the covers) setup is very easy.

Login to your DiskStation and go to the Control Panel.  Select the "Hardware and Power" icon and go to the "UPS" tab.  You should see something similar to the screen shown below.


Select "Enable UPS Support" to enable communication with the UPS via the USB cable.

You can optionally set a period of time before the NAS enters Safe Mode or leave the default which will cause the NAS to enter Safe Mode when the UPS battery reaches a low status.  Safe mode un-mounts all disks and stops all services to prevent data loss on your NAS.

Next, check the "Enable network UPS server" box.  Then click "Permitted DiskStations".  Even though it says "Permitted DiskStations", it will work with any machine running the NUT upsmon service.  Once you click on the "Permitted DiskStations" button you will be presented with a form to fill out the IP's of the servers you want to notify when the NAS you're on receives UPS events.


Enter the IP of the server that you want to receive the UPS events and click "OK".  Then "Apply" on the main UPS page.

Linux Server Setup (CentOS)

First you'll need to install nut via yum.

If you don't already have the epel repository in yum, you will need to install it.

yum install epel-release

Then you will need to install nut.

yum install nut

Once nut is installed you should have a nut user and group created by the installer.

Open /etc/ups/upsmon.conf.  We will need to update the configuration to allow it to listen for events from the Synology server.  Search for the "MONITOR" section.  You will need to update or add a line that looks like the following:

MONITOR ups@<ip of synology server>:3493 1 <user> <pass> slave

To get the user and pass values, SSH to your Synology NAS.  In the file located at /usr/syno/etc/ups/upsd.users it should specify the username and password.  Use those values in the MONITOR line on the Linux server.

Also, be sure to look at the "SHUTDOWNCMD"  in upsmon.conf and ensure it halts the system instead of shutting it completely down so that it will come up automatically after a power outage.  This is the default in the file so you shouldn't have to change anything.  In your Linux server machine BIOS you need to also ensure it is setup to automatically power on after the power is restored.

On your Linux machine you'll need to create a directory /var/run/nut.  Change ownership of the directory to user nut and group nut.

chown nut:nut /var/run/nut

Modify /lib/systemd/system and remove nut-server.service from the nut-monitor.service file if you are not running a nut server on the linux box as this will prevent it from starting upsmon.  Since this machine is setup as the slave, you probably won't be running a nut server so make sure you take the entry out.

Next you will need to add upsmon to startup when your server starts.  Go to /etc/systemd/system.  Create a symbolic link to the nut-monitor.service.

ln -s /lib/systemd/system/nut-monitor.service nut-monitor.service

Finally, run the following commands to enable the service to be run by systemctl.

systemctl daemon-reload
systemctl enable nut-monitor.service

That's it!  When you experience a power outage your UPS should kick on, communicate with your DiskStation to enter safe mode, and the DiskStation should communicate with the Linux server to halt it and when the power comes back up the DiskStation and Linux Server should automatically start back up.

6 comments:

  1. perfect!!! Very helpful description to connect an UPS via a Synology-Server to my Linux-Server ... ThanX a lot!

    ReplyDelete
  2. Thanks for the info.
    After systemctl enable nut-monitor.service
    I received:
    Failed to execute operation: Too many levels of symbolic links
    What's the trick?
    Thanks!

    ReplyDelete
  3. Thanks for the info.
    After systemctl enable nut-monitor.service
    I received:
    Failed to execute operation: Too many levels of symbolic links

    I checked it and:

    systemctl status nut-monitor.service
    a nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
    Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; vendor preset: disabled)
    Active: inactive (dead)

    What's the trick?
    Thanks!

    ReplyDelete
  4. On CentOS 7.5 ( CentOS Linux release 7.5.1804 (Core) )
    yum install nut
    Error: Package: nut-2.7.2-3.el7.x86_64 (epel)
    Requires: libipmimonitoring.so.5()(64bit)
    Error: Package: nut-2.7.2-3.el7.x86_64 (epel)
    Requires: libfreeipmi.so.13()(64bit)

    :(

    ReplyDelete
    Replies
    1. I found the answer - Install from test repo.
      yum install -y --enablerepo=epel-testing nut

      Use at your own risk! if you wait the update will make it into stable repo.

      Delete
  5. Pretty much everything I expected to see in Synology Disk Station guide, thank you !

    ReplyDelete