How to Install ChangeDetection.io on Debian 12 Using Docker and Nginx

Estimated reading: 4 minutes 640 views

Introduction

ChangeDetection.io is a powerful self-hosted website monitoring tool that allows you to track changes on web pages such as price updates, content edits, or HTML modifications. It is widely used by developers, system administrators, and individuals who want full control over their monitoring infrastructure.

In this guide, you will learn how to:

  • Install ChangeDetection.io using Docker & Docker Compose

  • Run it securely behind Nginx as a reverse proxy

  • Deploy everything on a Debian 12 server

Prerequisites

  • A VPS running Debian 12

  • Root access via SSH

  • A domain name pointing to your server IP

Architecture Overview

  • Debian 12 Server

  • Docker container running ChangeDetection.io

  • Nginx acting as a reverse proxy

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

Explanation:

  • apt update refreshes the package index

  • apt upgrade upgrades all installed packages
    Keeping the system updated helps avoid dependency issues later.

Step 3: Install Required Dependencies

apt install ca-certificates curl gnupg lsb-release

Explanation:
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 is used to store 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

Explanation:
Downloads and imports Docker’s official signing key so packages can be verified.

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

Reloads package information including the new 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

Explanation:

  • Installs Docker Engine

  • Installs Docker Compose v2 (recommended)

Step 9: Verify Docker Installation

docker version
docker compose version

If version information is displayed, Docker is installed correctly.

Step 10: Create ChangeDetection Directory

mkdir -p /opt/changedetection

This directory will store 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 following configuration:

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

Configuration Explanation:

  • Runs ChangeDetection.io in a Docker container

  • Binds port 5000 to localhost only for security

  • Stores data persistently in ./data

  • BASE_URL must match your domain

  • TZ sets the server timezone

Save and exit the editor.

Step 13: Start ChangeDetection.io

docker compose up -d

Starts the container in detached mode.

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 via 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 the following:

server {
    listen 80;
    server_name _;

    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 configuration forwards HTTP traffic to the ChangeDetection.io container.

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

Ensures the configuration is valid and applies the changes.

Access ChangeDetection.io

Open your browser and visit:

http://your-domain.com

ChangeDetection.io is now running behind Nginx on Debian 12.


Conclusion

You have successfully deployed ChangeDetection.io on Debian 12 using:

  • Docker & Docker Compose

  • Nginx as a reverse proxy

This setup is clean, secure, and scalable, and can be reused for other self-hosted tools such as Miniflux, Ghostfolio, NocoDB, HedgeDoc, and many more.

Share this Doc

How to Install ChangeDetection.io on Debian 12 Using Docker and Nginx

Or copy link

CONTENTS