ChangeDetection.io on Debian 12 (Docker + Nginx + SSL)

ChangeDetection.io is an open-source website change monitoring and alerting platform that allows you to track content changes on any web page. It can detect updates in text, HTML structure, prices, availability, images, and API responses, making it a powerful self-hosted alternative to SaaS tools like Visualping, Distill.io, or Wachete. It supports both static pages and JavaScript-rendered websites using headless browser engines.

Running ChangeDetection.io on Debian 12 (Bookworm) provides a stable, secure, and long-term supported foundation for production monitoring workloads. Debian 12 includes systemd 252, OpenSSL 3, and mature Docker and Nginx packages, making it an excellent platform for deploying ChangeDetection.io using Docker, secured with HTTPS via Nginx.


Architecture Overview

LayerComponentRole
OSDebian 12 (Bookworm)Stable, long-term supported Linux base
Container RuntimeDocker / Docker ComposeRuns ChangeDetection.io and optional browser services
ApplicationChangeDetection.io (Python/Flask)Core change detection, diffing, and alerting engine
Browser Engine (optional)Playwright / ChromiumMonitors JavaScript-rendered pages
Reverse ProxyNginxHTTPS termination, routing, compression
TLSLet’s Encrypt / PKISecure web interface and API access

Why Use ChangeDetection.io?

  • Monitor any website – prices, text changes, stock availability, DOM updates
  • JavaScript-aware monitoring – supports dynamic sites via Playwright
  • Flexible notification system – email, Slack, Telegram, Discord, Webhooks, etc.
  • Visual and textual diffs – inspect exactly what changed between checks
  • Fine-grained filters – CSS selectors, XPath, and regex-based detection
  • Self-hosted and private – no third-party data collection or SaaS dependency
  • Lightweight and efficient – suitable even for small VPS instances

ChangeDetection.io vs Other Monitoring Tools

Feature / CapabilityChangeDetection.ioVisualpingDistill.ioWachete
HostingSelf-hostedCloud onlyCloud / limited localCloud only
JavaScript support✅ Yes✅ Yes✅ Yes❌ Limited
NotificationsExtensiveLimitedModerateModerate
Price monitoring✅ Yes✅ Yes✅ Yes✅ Yes
PrivacyFull controlCloud-basedCloud-basedCloud-based
CostFree, open-sourceSubscriptionSubscriptionSubscription

ChangeDetection.io is ideal for users who want full control, deep customization, and advanced monitoring capabilities without relying on external services.


Security & Best Practices

  • Run ChangeDetection.io behind Nginx with HTTPS enabled.
  • Bind the application to localhost and expose only Nginx publicly.
  • Store notification credentials (SMTP, tokens) in environment variables.
  • Keep Docker images and Debian packages updated regularly.
  • Use UFW or nftables to allow only ports 80 and 443.
  • Automate SSL certificate renewal with Certbot.
  • Enable authentication on the web UI for multi-user setups.
  • Back up ChangeDetection.io data volumes and configuration files.
  • Limit Playwright/Chromium usage to trusted monitoring targets.

Typical Use Cases

  • E-commerce price and stock monitoring
  • Job listing and vacancy alerts
  • Competitor website monitoring
  • Legal or policy change tracking
  • Marketing page and landing-page updates
  • API response change detection
  • QA and frontend regression monitoring

Deploying ChangeDetection.io on Debian 12 with Docker, Nginx, and SSL gives you a powerful, private, and highly configurable website monitoring platform — capable of tracking everything from simple text changes to complex JavaScript-driven content, all under your direct control.


Create a Cloud Server Instance on Shape.Host

Before installing ChangeDetection.io, you need a clean Debian 12 VPS.

Go to https://shape.host and log in.

Click Create.

Select Instance.

Shape.host Resources dashboard with Create > Instance highlighted.

Choose a data center close to your target users.

Shape.host instance form with the data center location selector highlighted.

Select Debian 12 (64-bit) as the operating system.

Choose a plan (recommended minimum):

2 vCPUs

4 GB RAM

20 GB NVMe SSD

Shape.host instance form with the operating system image selector highlighted.

Click Create Instance.

Wait about 30 seconds for provisioning.

Shape.host instance form with the Create Instance button highlighted.

Copy the public IP address of the server.

Your Debian 12 server is now ready.

Shape.host Resources dashboard with the server IP address highlighted.

Step 1: Connect to the Server via SSH

Linux / macOS

ssh root@YOUR_SERVER_IP

Windows (PowerShell or Windows Terminal)

ssh root@YOUR_SERVER_IP

Accept the fingerprint when prompted. You are now logged in as root.


Step 2: Update the System

apt update
apt upgrade

These commands refresh the package list and upgrade all installed packages to their latest versions.

Terminal showing APT package management commands and output.

Step 3: Install Required Dependencies

apt install ca-certificates curl gnupg lsb-release

These packages are required to securely add and verify the Docker repository.

Terminal showing APT package management commands and output.

Step 4: Create Docker Keyrings Directory

mkdir -p /etc/apt/keyrings

This directory stores trusted GPG keys.


Step 5: Add Docker GPG Key

curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

This imports Docker’s official signing key.


Step 6: Add Docker Repository

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" > /etc/apt/sources.list.d/docker.list

This allows Docker to be installed from the official Docker repository.


Step 7: Update Package List Again

apt update

Loads the newly added Docker repository.

Terminal showing APT package management commands and output.

Step 8: Install Docker Engine and Docker Compose

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Installs Docker Engine and Docker Compose v2.

Terminal showing APT package management commands and output.

Step 9: Verify Docker Installation

docker version
docker compose version

Confirms Docker and Docker Compose are installed correctly.

Terminal showing the installed Docker Compose version.

Step 10: Create ChangeDetection Directory

mkdir -p /opt/changedetection

This directory will store the Docker configuration and persistent data.


Step 11: Enter the Directory

cd /opt/changedetection
Terminal showing file and directory setup commands.

Step 12: Create Docker Compose File

nano docker-compose.yml

Paste the exact configuration from your history:

services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:latest
    container_name: changedetection
    restart: unless-stopped
    ports:
      - "127.0.0.1:5000:5000"
    volumes:
      - ./data:/datastore
    environment:
      - BASE_URL=https://watch.example.com
      - TZ=Europe/Bucharest

Explanation:

  • The service runs ChangeDetection.io in a container
  • Port 5000 is bound only to localhost for security
  • Data is stored persistently in ./data
  • BASE_URL must match your final domain

Save and exit the editor.

Terminal showing the GNU nano editor and configuration text.

Step 13: Start ChangeDetection.io

docker compose up -d

Starts the container in the background.

Terminal showing container image download progress.

Step 14: Verify the Container Is Running

docker ps

You should see the changedetection container listed as running.

Terminal showing the Docker container listing.

Step 15: Test ChangeDetection Locally

curl http://127.0.0.1:5000

Confirms the application responds locally before exposing it through Nginx.


Step 16: Install Nginx

apt install nginx
Terminal showing APT package management commands and output.

Step 17: Enable and Start Nginx

systemctl enable nginx
systemctl start nginx
Terminal showing systemd service management commands or output.

Step 18: Create Nginx Reverse Proxy Configuration

nano /etc/nginx/sites-available/changedetection

Paste:

server {
    listen 80;
    server_name watch.example.com;

    location / {
        proxy_pass http://127.0.0.1:5000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

This forwards web traffic to ChangeDetection.io.

Terminal showing web server configuration text.

Step 19: Enable the Nginx Site

ln -s /etc/nginx/sites-available/changedetection /etc/nginx/sites-enabled/changedetection
rm /etc/nginx/sites-enabled/default

Step 20: Test and Reload Nginx

nginx -t
systemctl reload nginx
Terminal showing systemd service management commands or output.

Step 21: Install Certbot and Enable SSL

apt install certbot python3-certbot-nginx
certbot --nginx -d debian-tutorials.shape.host

Certbot automatically issues and configures a free SSL certificate.

Terminal showing APT package management commands and output.
Terminal showing Certbot certificate commands and messages.

Access ChangeDetection.io Securely

https://your-domain.com

ChangeDetection.io is now fully installed and secured on Debian 12.

ChangeDetection watched-page list and URL monitoring controls.

ChangeDetection.io, Miniflux, Ghostfolio, NocoDB, HedgeDoc, and other self-hosted tools require fast, stable infrastructure.

Shape.Host offers:

  • Linux SSD VPS
  • Instant provisioning
  • Clean OS images
  • High uptime
  • Easy scalability

Visit https://shape.host to deploy your next self-hosted application with confidence.