iSpy Agent NVR

I've covered multiple video surveillance options over the past year or so: Shinobi, Zoneminder, MotionEyeOS, Frigate, and they all have their pros and cons.  I was talking about some issues Zoneminder was generating on a network with Scott over at Scottibyte.  He suggested I look at iSpy.

Now, having been around the computer world since the early 90s, I had known iSpy to be a Windows only solution, and initially wasn't interested.  But his suggestion got me curious.  Why would Scott suggest that knowing I only like open source, and definitely don't run Windows?  So, luckily for me, and now all of you, I checked it out, and I'll tell you.... iSpy is a force to be reckoned with in the NVR / DVR space.

iSpy Agent is the Open Source, web browser based solution of the formerly Windows only iSpy surveillance software solution.  iSpy also makes a product called iSpy connect.  This product has some paid options / add-ons in it, and may well be worth it to you to check out.  Ir provides a dedicated Mobile app, remote access through their cloud based bridge back to your network cameras, and many plugins that you may want to take advantage of as you build out your self-hosted security solution.

One thing for certain, is once I moved to the iSpy Agent, the issues I was seeing with Zoneminder went away.  This makes for happy clients, and for a much less stressed out me.

What You'll Need

  • A Host Machine / Server to run it on
  • Docker-CE
  • Docker-Compose
  • (optional) Portainer-CE
  • The IPs of your Network Cameras
  • The Make and Model of your Network Cameras
  • About an hour of time

Preparation for Install

If you don't already have Docker-CE installed, you can use the script I maintain to quickly install Docker-CE, Docker-Compose, NGinX Proxy Manager (for getting access from outside your network), and Portainer-CE.

The solution is a single script that will help you get all of those things installed at once.

SSH to your server (or open a terminal if you have local access), and use the following command to download my script:

wget https://gitlab.com/bmcgonag/docker_installs/-/raw/main/install_docker_nproxyman.sh

Once downloaded, change the script to be executable:

chmod +x install_docker_nproxyman.sh

Then run the script with:

./install_docker_nproxyman.sh

You'll be prompted to select your distro and version (Note, Arch has not been tested yet, so let me know if you have issues in the github repo), then the software you want to install.

Once you've answered the questions, the install will proceed.  You may be asked for your superuser (sudo) password during install.

If all goes well, you'll have, at the very least, Docker-CE and Docker Compose up and running.

Installing iSpy

Once you have Docker and Docker-Compose installed, we need to do a couple more simple steps to get iSpy up and running.

First, let's create an iSpy folder (I like to keep all of my docker apps in a folder with the app name on it, and I keep those all inside of a parent folder called "docker", just FYI).

mkdir -p ispyagent/{commands,media}

This command will create the "ispyagent" folder, and will create two folders inside of it called "commands" and "media".

Next, move into the ispyagent folder, and create a new file called "docker-compose.yml"

cd ispyagent

nano docker-compose.yml

With the "docker-compose.yml" file open, copy the below code block, and paste it into the file.

version: "3.0"
services:
  ispy:
    image: doitandbedone/ispyagentdvr
    container_name: i-spy
    environment:
      - TZ=America/Chicago
    volumes:
      - ./media:/agent/Media/XML/
      - /path/to/a/large/storage/drive/ispy/:/agent/Media/WebServerRoot/Media/
      - ./commands:/agent/Commands/
    ports:
      - 8090:8090
      - 3478:3478/udp
      - 50000-50010:50000-50010/udp
    restart: unless-stopped

In the above file, make sure to change the "/path/to/a/large/storage/drive/ispy" to the actual full path to a large enough storage area to save the video recordings that will be generated by iSpy if you enable recording.

Additionally, if port 8090 is already in use on your host system, you should change the left side of the port mapping for 8090:8090, to be some other port (for example, if you need to, you can change it to 9120:8090, etc).

Now, save the file with CTRL + O, then press Enter to confirm. Exit the nano text editor with CTRL + X.

Finally, we'll run the docker application with the command:

docker-compose up -d

Be patient while docker pulls down the ispy agent image from dockerhub, and starts it running. When you see 'done' in the command line, and are returned to your command prompt, wait about 1 minute, then you can try your host IP on port 8090 (or whatever port you set on the left side of the port mapping).

In my case, I went to http://192.168.10.26:8090 to see my iSpy Agent install.

Once you get on your new install, you'll notice it's a minimal screen, but hidden under those buttons around the edges are lots, and lots of settings, and configuration options.

Make sure to check out the linked video for all the details on getting iSpy Agent setup, and cameras added.  It's a long one, but I have time markers for you to use if you want to skip around.