Self-hosting changedetection.io for monitoring websites

Self-hosting changedetection.io for monitoring websites
Photo by Venti Views / Unsplash

ChangeDetection.io is a clever little web service that I've used over the years occasionally. In essence, it pings a list of URLs and lets you know if there are valuable updates to content. That's it. It's one of those services you learn to appreciate, but one you forget exists, so you go for months without really using it.

Thus, I was delighted that the fine people at LinuxServer.io had packaged the open-sourced ChangeDetection.io logic into a reusable Docker container! I really don't mind self-hosting useful little tools, but having those useful little tools available as Docker containers makes it even easier.

I've resorted to self-hosting these little things on my Synology NAS. It's perhaps far too performant for my actual needs, so there is ample capacity left for running stuff like this on top of everything else. As a reminder, the Synology NAS is a neat Linux-based storage and application device with a real AMD Ryzen CPU, so it runs the usual binaries you expect. You can read more about my adventures with Synology devices here.

Running the container

If you want to run the solution anywhere you can run docker, just head on over to https://hub.docker.com/r/linuxserver/changedetection.io for details. You can pull the image with:

docker pull linuxserver/changedetection.io

From the public Docker Hub. It's lightweight and only has a few parameters to set, such as the timezone and the path for /config.

Synology runs its GUI called DSM, which - since version 7 - has a nice graphical UI for containers called Container Manager.

First, pull the image of ChangeDetection.io under Image.

And now spin it up via Container.

My only changes were to re-map the exposed web interface port to 5002 (from 5000) and mount the /config directory to a local folder on my NAS. This folder also gets backed up frequently elsewhere, so I'm good should I want to re-home the container to a different platform.

Once the container is running, it's lightweight.

CPU usage is <1 %, and RAM usage is barely 100 MB. Once it's running, you can access it via port :5002 at https://<hostname for NAS>:5002/.

It works by adding URLs you want to detect any changes from, and you'll get a notification when meaningful changes are detected. I've added about 20 sites to watch - primarily competitors, specific tech sites, and Microsoft.

You can configure the interval individually or set a default. For me, that's 6 minutes. Perhaps it's overly aggressive, but I want to keep up with the latest news and developments.

For notification, ChangeDetection.io supports a lot of platforms. Telegram, IFTTT, and similar - but I don't use any of those. I tried to rework the http -support to Azure Logic Apps, but it never worked consistently. So, email it is!

In closing

And it works very well. I get a few emails each day notifying me of updates. I need to tweak the notification body fields to reveal the valuable data already within the email instead of needing to click open the link. I rarely need to open the ChangeDetection.io admin interface unless I'm adding new sites to watch. There's an API for that, so perhaps I'll need to build a simple browser extension to share URLs with ChangeDetection.io.

The best bit is that since I already self-host the infrastructure, running the container is free. On top of that, I run a container called Watchtower, that monitors all the other containers and updates and restarts them when needed.