November 11, 2015

Real time mirroring new Zone Minder event to cloud


This is my configuration:
  • Server OS: Ubuntu Server 14.04
  • ZoneMinder:1.28.1

Mounting to local location 

This is how you can mount a directory manually:
sudo mount -t davfs /home/sergi/
However it is better to do this via fstab. Information how to mount locally is here. This will be mounted on startup.
If you do not want reboot run: sudo mount ~/

Node installation 

I am using node.js 5.x, however this should work with node.js 0.12.x and above.
Installation information.

Fetching zmwatcher from GIT

Make sure you have installed git (sudo apt-get git)
  1. CD to some location (in my case I used home directory)
  2. Grab sources from github "git clone"

Running mirroring script

The mirroring script is located inside zmwatcher/samples/zmmirror/mirror.js
Open this file and add your config (basing on your hostname, hostname you can see at command prompt).
  • Before running the script you have to install it (its dependencies). Go to "cd ~/zmwatcher/samples/zmmirror"
  • Run "npm install" to install necessary dependencies
  • Run "sudo nodejs mirror.js" (in my case I am running it with root permissions because my regular user does not have permissions to events directory)
  • Modify samples/zmmirror/config.js with your values 
To run script mirroring manually:  sudo nodejs ~/zmwatcher/samples/zmmirror/mirror.js

Running mirroring script on linux startup 

Using systemd

  1. Create service file: sudo nano /etc/systemd/system/zmmirror.service
  2. Copy my systemd script from here
  3. Correct paths to node and index.js script
  4. Save
  5. Enable the service: sudo systemctl enable zmmirror.service
  6. Start the servcie: sudo systemctl start zmmirror.service
  7. Verify it is running: sudo systemctl status zmmirror.service

Using upstart system

A good description how to configure an upstart script.
  1. Create starting service script: sudo nano /etc/init/zmmirror.conf
  2. Copy my upstart script from here (another good script example)
  3. Correct paths to node, zmmirror.js script, output log
  4. Save
  5. Check syntax  sudo init-checkconf /etc/init/zmmirror.conf
  6. Start service: sudo service zmmirror start
  7. Check log: cat ~/zmmirror.log
That's all. This script should be started each time on system boot.
Useful commands:
  • Start service: sudo service zmmirror start
  • Stop service: sudo service zmmirror stop 
  • Restart service: sudo service zmmirror restart

Deletion of old files 

For deletion old content from I am also using node.js script. The script is located here.
Here is how to schedule this script running once a day:
  1. Edit cleanup script: sudo nano ~/zmwatcher/samples/zmmirror/cleanup.js
  2. Specify your actual path.
  3. Run cron: sudo crontab -e
  4. Add line (run cleanup every day at 5 am): 0 5 * * * nodejs /home/sergi/zmwatcher/samples/zmmirror/cleanup.js 
To run cleanup script manually:  sudo nodejs ~/zmwatcher/samples/zmmirror/cleanup.js