Docker Image Update Notifier - DIUN

For those that are curious about setting this up here is a quick summary of the setup I used to monitor my apps and notify via pushover.

Deploy a custom app via Apps → Discover Apps and then click the 3 dots in the upper left corner by “Custom App”.
image

This will bring up the dialog to deploy a custom yaml file. I’ve outlined what I used below. Update accordingly for your environment.

services:
  diun:
    command: serve
    environment:
      - TZ=Etc/UTC
      - CONFIG=/data/diun.yml
      - DIUN_PROVIDERS_DOCKER=true
    hostname: diun
    image: crazymax/diun:latest
    labels:
      - diun.enable=true
    restart: always
    volumes:
      - <host path where you want to store data>:/data
      - /var/run/docker.sock:/var/run/docker.sock
version: '3.5'

In the directory path used above to map to /data in the container, create a file called “diun.yml”. There are a ton of settings from the developers website so again tweak to your needs. Below is what I used in my environment.

db:
  path: /data/diun.db

watch:
  workers: 20
  schedule: "0 */6 * * *"
  jitter: 30s
  firstCheckNotif: false
  runOnStartup: true

notif:
  pushover:
    token: <app token from pushover website>
    recipient: <user token from pushover website>
    priority: -2
    sound: none
    templateTitle: "App Updated: {{ .Meta.Name }}"
    templateBody: "Current version: {{ .Meta.Version }}\n New version: {{ .Entry.Manifest.DockerVersion }}"

providers:
  docker:
    watchStopped: true
    watchByDefault: false

Once you have the above setup all that is needed now is to add the proper label to your apps. If your using TrueNAS community apps you need to edit the app and add the label “diun.enable=true” to the “Labels Configuration” section and make sure to add the container as it’s not selected by default. My setting for Plex is noted below.

If you are using custom deployed apps similar to how this one is deployed, all you need to do is add the labels section to your yaml file and save it. It will redeploy with the new label. Below is my config for my Headphones app.

services:
  headphones:
    container_name: headphones
    environment:
      - PUID=568
      - PGID=568
      - TZ=Etc/UTC
    image: lscr.io/linuxserver/headphones:latest
    labels:
      - diun.enable=true

Once you have setup the apps you want to monitor with the label, stop and restart the DIUN app so that it refreshes it’s database. Once it’s restarted you can connect to the container shell and see the apps it’s monitoring and test the notifications.

That is all there is to it. The container will check every 6 hours for new versions of the configured apps and notify you if a new one is available.