How I Watch for Website Updates
This week I was wanting to setup some sort of self-hosted solution for watching a couple web pages for updates, and I believe I found a pretty great solution using ChangeDetection.io and ntfy.sh.
ChangeDetection.io
Setup here was pretty straightforward. Clone the repo, edit docker-compose.yml
as needed, and run docker compose up -d
. For my use case, I didn’t change anything except the default port. I also didn’t need to enable any of the fancy Webdriver or Playwright parts of the config since I knew the pages I was interested in monitoring were static, but that’s something you’ll need to look into more closely if you want to monitor any dynamic pages that depend heavily on javascript.
When I last upgraded my server, I switched from nginx to caddy as my reverse proxy. I’ve been loving it and don’t see myself ever going back. To show you what I mean, this is my entire config for ChangeDetection.io, HTTPS included.
<my subdomain> {
reverse_proxy localhost:<the port I specified in docker-compose.yml>
}
With that done, all that was left was to connect to my instance, set a password, and add the pages I wanted to watch.
A couple features of ChangeDetection.io stood out to me. One was the ability to create tags to manage settings for multiple watches, and the other was the huge list of supported notification methods via the Apprise library. I thought notifications would be one of the more annoying parts of the setup, but that turned out to be completely untrue.
Ntfy.sh
This was the notification method that really stood out to me with it being so easy to setup. The idea is that you can send a notification using a simple POST request without specifying anything other than the topic you want to publish to and the message to include. Then you can receive the notifications by subscribing to the topic in the phone app or a web browser.
Ntfy.sh won’t fit every case. For example, you’d probably want to find a different solution if you wanted to send sensitive information or send notifications to a group of people. But for my simple use case it was perfect.
Ntfy.sh can also be self-hosted, but for simplicity’s sake I decided to use the developer provided instance. If I ever end up using it more heavily in the future I’m sure I’ll look into hosting it on my own.
And that’s all there was to it! Everything worked as expected. Just wanted to share these tools in case someone else finds them useful.
— JP