Skip to content
Dockerfile and config for NX Witness
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


Based on the amazing work by, TheHomeRepot aims to provide additional quality, reliable containers.


NX Witness VMS is a free to view VMS that adds recording capability with the purchase of camera licenses.

NX Witness VMS


docker run -d \
--name=nxwitness \
--restart=unless-stopped \
--net=host \
-e PUID=<UID> -e PGID=<GID> \
-e TZ=<timezone> \
-v </path/to/config>:/config \
-v </path/to/recordings>:"/archive/HD Witness Media" \


The parameters are split into two halves, separated by a colon, the left hand side representing the host and the right the container side. For example with a port -p external:internal - what this shows is the port mapping from internal to external of the container. So -p 8080:80 would expose port 80 from inside the container to be accessible from the host's IP on port 8080 http://192.168.x.x:8080 would show you what's running INSIDE the container on port 80.

  • --net=host - Shares host networking with container, required prior to version 3.1.x.
  • -v /config - Configuration files
  • -v /archive/HD Witness Media - Recordings will be landed here. you must leave the "HD Witness Media" subfolder
  • -e PGID= for for GroupID - see below for explanation
  • -e PUID= for for UserID - see below for explanation
  • -e TZ - for timezone information eg Europe/London, etc

User / Group Identifiers

Sometimes when using data volumes (-v flags) permissions issues can arise between the host OS and the container. We avoid this issue by allowing you to specify the user PUID and group PGID. Ensure the data volume directory on the host is owned by the same user you specify. DO NOT USE ROOT

In this instance PUID=1001 and PGID=1001. To find yours use id user as below:

  $ id <dockeruser>
    uid=1001(dockeruser) gid=1001(dockergroup) groups=1001(dockergroup)

Setting up the application

You will need to install and run the NX Witness Desktop Client and connect to your docker host using port 7001. You will be prompted within the client to configure the new server instance.


In order to record from your security cameras, you will need to purchase licenses. These are purchased PER actively recording camera and can be moved between cameras.

However, the licenses are tied to a uniqely generated HWID (hardware ID) and cannot easily be moved. This may change in v3.1.X but currently you must log a support request to have licenses moved to a new server. For this reason be mindful of where you install licenses. I would not currently do so inside a docker container


  • Shell access whilst the container is running: docker exec -it nxwitness /bin/bash
  • To monitor the logs of the container in realtime: docker logs -f nxwitness


  • 2017.09.21: Initial creation
You can’t perform that action at this time.