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
| Layer | Component | Role |
|---|---|---|
| OS | Debian 12 (Bookworm) | Stable, long-term supported Linux base |
| Container Runtime | Docker / Docker Compose | Runs ChangeDetection.io and optional browser services |
| Application | ChangeDetection.io (Python/Flask) | Core change detection, diffing, and alerting engine |
| Browser Engine (optional) | Playwright / Chromium | Monitors JavaScript-rendered pages |
| Reverse Proxy | Nginx | HTTPS termination, routing, compression |
| TLS | Let’s Encrypt / PKI | Secure 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 / Capability | ChangeDetection.io | Visualping | Distill.io | Wachete |
|---|---|---|---|---|
| Hosting | Self-hosted | Cloud only | Cloud / limited local | Cloud only |
| JavaScript support | ✅ Yes | ✅ Yes | ✅ Yes | ❌ Limited |
| Notifications | Extensive | Limited | Moderate | Moderate |
| Price monitoring | ✅ Yes | ✅ Yes | ✅ Yes | ✅ Yes |
| Privacy | Full control | Cloud-based | Cloud-based | Cloud-based |
| Cost | Free, open-source | Subscription | Subscription | Subscription |
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.

Choose a data center close to your target users.

Select Debian 12 (64-bit) as the operating system.
Choose a plan (recommended minimum):
2 vCPUs
4 GB RAM
20 GB NVMe SSD

Click Create Instance.
Wait about 30 seconds for provisioning.

Copy the public IP address of the server.
Your Debian 12 server is now ready.

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.

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.

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.

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.

Step 9: Verify Docker Installation
docker version
docker compose version
Confirms Docker and Docker Compose are installed correctly.

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

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.

Step 13: Start ChangeDetection.io
docker compose up -d
Starts the container in the background.

Step 14: Verify the Container Is Running
docker ps
You should see the changedetection container listed as running.

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

Step 17: Enable and Start Nginx
systemctl enable nginx
systemctl start nginx

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.

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

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.


Access ChangeDetection.io Securely
https://your-domain.com
ChangeDetection.io is now fully installed and secured on Debian 12.

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.