8FF4E83F070F84928525761F0048C8F7 MMAE 7VBHSX f h 500x500

1. Intro

For some reason no rpm package for apcupsd is available for CentOS 6, it is however available for CentOS 7 from the epel repo.

These notes focus on compiling, installing and setting up apcupsd for CentOS 6.


2. Getting the source and installing (compiling) it

Go here; https://sourceforge.net/projects/apcupsd/?source=directory and download the latest version.

Go to your Downloads folder and untar the archive, then start compiling the source for your system.

cd ~/Downloads
tar -xvf apcupsd-3.14.14.tar.gz
cd apcupsd-3.14.14
./configure --enable-usb

If the above configure step fails, you may want to check that your system has the needed dev tools installed.

yum groupinstall "Development Tools"

When installed, rerun the configure.

./configure --enable-usb
make install


3. Connecting the UPS

If the UPS is brand-new; remove the plate at the bottom of the UPS and connect the battery; plus to plus, minus to minus, otherwise continue below. Replace the plate when done.

Shutdown your computer system and disconnect your computer power plug/s from the wall and connect it/them to the UPS using any of the four plugs marked BATTERY BACKUP + SURGE PROTECTION.

Connect the supplied RJ11-to-USB from the UPS to the computer.

Connect the UPS to the electrical outlet in the wall.

The UPS should beep a few times, blink the green LED after whoch the green LED will stay on lit if the power-up went well.

Boot your computer.

After boot, check /var/log/messages for something like the below. This indicates the computer found the usb-conencted UPS.

tail /var/log/messages
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: new low speed USB device number 4 using ehci_hcd
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: New USB device found, idVendor=051d, idProduct=0002
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: New USB device strings: Mfr=3, Product=1, SerialNumber=2
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: Product: Back-UPS ES 700G FW:871.O4 .I USB FW:O4
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: Manufacturer: APC
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: SerialNumber: 123456789100
Jul 8 12:56:42 cyndane2 kernel: usb 1-3.2: configuration #1 chosen from 1 choice
Jul 8 12:56:42 cyndane2 kernel: generic-usb 0003:051D:0002.0005: hiddev96,hidraw4: USB HID v1.10 Device [APC Back-UPS ES 700G FW:871.O4 .I USB FW:O4 ] on usb-0000:00:1a.7-3.2/input0


4. Configure the daemon

The config file is in /etc/apcupsd/apcupsd.conf. Edit it with eg nano.

nano /etc/apcupsd/apcupsd.conf

Change the following lines to your specification.

DEVICE <blank>

Please note, the DEVICE line must not be commented. It must be there but the device should be blanked.

The below lines can be left with their default settings, or changed to suit your situation.


The NETSERVER must be on in order to check the UPS status with apcaccess. Check any of the sources below to find out what the settings do!


5. Testing the UPS

Stop the apcupsd(aemon) if started.

service apcupsd stop

The presented test functions should be fairly self-explanatory.


6. Halt scripts

Check /etc/rc.d/init.d/halt to ensure it has apcupsd setting updated at the end.

nano /etc/rc.d/init.d/halt



7. Enable the daemon

chkconfig --list | grep apc
apcupsd 0:off 1:off 2:off 3:off 4:off 5:off 6:off 
chkconfig apcupsd on
chkconfig --list | grep apc
apcupsd 0:off 1:off 2:on 3:on 4:on 5:on 6:off


8. Control apcupsd

service apcupsd start
service apcupsd stop
service apcupsd restart
apcaccess status


9. See current UPS status



10. Web based monitoring

This part aims to present the data collected from the UPS with pretty bars and graphs on a web page using cgi.


10.1. Enable CGI

Earlier we just used the --enable usb parameter to tell the installer we had a USB-type UPS. If we want to also enable CGI, we need to run the below.

It doesn't matter if you already have a working apcupsd install, you can run this without breaking anything.

./configure --enable-usb --enable-cgi --with-cgi-bin=/var/www/cgi-bin/apcupsd-cgi


What the above does is

  • Enable USB, because we have a USB-type UPS.
  • Enable the CGI bits.
  • Tells the installer where to save the cgi-scripts. The default is /etc/apcupsd, which may not be optimal.


If you get this error after running ./configure..., you need to install libgd.

error: Your system lacks the GD library which is needed for compiling the apcupsd CGI programs.
Please install libgd and re-run the ./configure script. Alternatively you can disable the CGI support.


For CentOS 6 it couldn't be found in the usual repos, but a Google search later revealed where to find it; https://centos.pkgs.org/6/centos-x86_64/gd-devel-2.0.35-11.el6.x86_64.rpm.html.


yum install http://mirror.centos.org/centos/6/os/x86_64/Packages/gd-devel-2.0.35-11.el6.x86_64.rpm


Install it and re-run the ./configure as above.

On a successful run, you should now see the below

Configuration complete: Run 'make' to build apcuspd.


Run make and make install as earlier.

When done, you should see new contents in /var/www/cgi-bin/apcupsd-cgi.

root@cyndane2:/var/www/cgi-bin/apcupsd-cgi # ll
total 384
drwxr-xr-x 2 root root 4096 Nov 30 15:53 .
drwxr-xr-x. 3 root root 4096 Nov 30 15:39 ..
-rwxr-xr-x 1 root root 99256 Nov 30 15:53 multimon.cgi
-rwxr-xr-x 1 root root 83746 Nov 30 15:53 upsfstats.cgi
-rwxr-xr-x 1 root root 96980 Nov 30 15:53 upsimage.cgi
-rwxr-xr-x 1 root root 94399 Nov 30 15:53 upsstats.cgi


10.2. Present the stuff

Before we actually present the pretty graphs and bars, we need to enable them.

This is done by adding a line to /etc/apcupsd/apcupsd.conf. Find the line NETSERVER and set it to on. Save and exit.

# nano /etc/apcupsd/apcupsd.conf



Next we need to add a line to /etc/apcupsd/hosts.conf.

Edit /etc/apcupsd/hosts.conf and at the end, add the name of the host you want to monitor as well as a label string for them. Save and exit.

# nano /etc/apcupsd/hosts.conf
MONITOR "cyndane2"

Test if it works.

$ /var/www/cgi-bin/apcupsd-cgi/multimon.cgi

Content-Type: text/html; charset=utf-8
Content-Language: en
Pragma: no-cache


If you see lots of html-code flashing by, it's working!


10.3. Actual testing

Browsing to with a web browser got me a 404.


Added /etc/httpd/conf.d/apc.conf with info from https://stackoverflow.com/questions/21698645/how-to-run-cgi-script-on-apache-server.



ErrorLog /var/log/httpd/apcupsd-error
CustomLog /var/log/httpd/apcups common

Alias /ups "/var/www/cgi-bin/apcupsd-cgi"
DirectoryIndex multimon.cgi

<Directory /var/www/cgi-bin>
AddHandler cgi-script .cgi
Options FollowSymLinks ExecCGI
AllowOverride None


Save and exit your editor. Restart httpd for good measure.

# service httpd restart


Again entering in a browser produces this.


Woo-hoo basically!


11. Security issues and firewall settings

This part is being researched.

  • apcupsd runs as root.
  • Anyone on the network can read the UPS status. May or may not be a problem. Privileged information? Normally little risk.
  • NISPORT, default TCP/3551
  • You may wish to configure your firewall(s) to only allow connections from your local network or specifically from the masters, slaves, and servers as needed.



12. Sources




http://www.apcupsd.org/manual/manual.html (use "http" for this link)