Self-Hosting

7-Step changedetection.io Ultimate Setup Guide 2025

Unlock the power of web monitoring with our ultimate 2025 guide. Learn to install and configure changedetection.io in 7 easy steps using Docker for total control.

A

Alex Volkov

Self-hosting enthusiast and open-source software advocate specializing in automation and monitoring tools.

7 min read3 views

Why Monitor Website Changes in 2025?

In a digital world overflowing with information, staying updated on specific web content is more crucial than ever. Whether you're tracking a competitor's pricing, waiting for a product to come back in stock, monitoring legislative updates, or simply keeping tabs on a favorite blog, manual checking is inefficient and unreliable. This is where changedetection.io comes in.

changedetection.io is a powerful, open-source, and self-hostable platform that automates the process of monitoring website changes. Instead of paying for subscription services that limit your checks and hold your data, you can run your own robust monitoring service. This guide will walk you through the ultimate 7-step setup for 2025, empowering you to take full control of your web monitoring needs.

Before You Begin: System Requirements

Before we dive into the setup, let's ensure you have the necessary tools. This setup is incredibly lightweight and can run on almost anything, from a cloud VPS to a Raspberry Pi in your home.

Docker and Docker Compose

We'll be using Docker to containerize our application. This simplifies installation, isolates dependencies, and makes management a breeze. You'll need both Docker and Docker Compose installed on your system. Most modern operating systems have straightforward installation guides on the official Docker website.

A Host Machine

This can be any machine running Linux, Windows, or macOS that can run Docker. Popular choices include:

  • A small cloud VPS from providers like DigitalOcean, Vultr, or Hetzner.
  • A home server or a dedicated machine.
  • A single-board computer like a Raspberry Pi 4 (or newer).
  • Your local desktop or laptop for testing purposes.

The 7-Step Ultimate changedetection.io Setup

Let's get our hands dirty and build your personal web monitoring powerhouse. Follow these seven steps for a complete and robust installation.

Step 1: Prepare Your Directory Structure

First, create a dedicated directory for your changedetection.io project. This keeps your configuration files organized. Open your terminal and run:

mkdir changedetection
cd changedetection

Step 2: Create the docker-compose.yml File

Inside your `changedetection` directory, create a file named `docker-compose.yml`. This file will define the services, networks, and volumes for our application.

touch docker-compose.yml

Step 3: Configure the Core Services

Now, open `docker-compose.yml` with your favorite text editor and paste the following configuration. This setup includes both the main application and a Playwright browser, which is essential for monitoring modern, JavaScript-heavy websites.

version: '3.7'

services:
  changedetection:
    image: dgtlmoon/changedetection.io:latest
    container_name: changedetection
    hostname: changedetection
    volumes:
      - ./changedetection-data:/datastore
    environment:
      - PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000/
      - PUID=1000
      - PGID=1000
      - TZ=Europe/London
    ports:
      - "5000:5000"
    restart: unless-stopped

  playwright-chrome:
    image: browserless/chrome:latest
    container_name: playwright-chrome
    restart: unless-stopped

What does this do?

  • changedetection: This is the main application service. We map a local directory (`./changedetection-data`) to the container's data directory to persist your watch list and settings. We also connect it to the Playwright service and expose port 5000.
  • playwright-chrome: This service runs a headless Chrome browser. changedetection.io can connect to it to render pages that rely heavily on JavaScript, ensuring you can accurately track changes on any website.

Step 4: Launch and Verify the Application

With your `docker-compose.yml` file saved, it's time to bring your services to life. In your terminal, from within the `changedetection` directory, run:

docker-compose up -d

Docker will now pull the necessary images and start the containers in the background (`-d` for detached mode). You can check if the containers are running with `docker-compose ps`. You should see both `changedetection` and `playwright-chrome` with a status of 'Up'.

Step 5: Secure and Configure Your Instance

Your monitoring service is now running! Open your web browser and navigate to `http://YOUR_SERVER_IP:5000` (or `http://localhost:5000` if running locally).

The first thing you should do is secure your instance. Click on the [Settings] tab. Under the Password section, set a strong password to prevent unauthorized access. You can also configure other global settings here, but a password is the most critical first step.

Step 6: Set Up Your First Watch and Notifications

Let's add your first website to monitor.

  1. Click back to the main [Watches] tab.
  2. In the "Add new watch" section, enter the URL you want to monitor.
  3. You can add a tag to keep things organized.
  4. Go to the [Edit] tab for your new watch. Here you can configure how it's checked. For JavaScript-heavy sites, select "Playwright/Puppeteer/WebDriver Chrome/Firefox" under Fetch Method.
  5. Now, let's set up a notification. In the [Settings] tab, go to the Notifications sub-tab. Here you'll find a huge list of services. For Discord, you would enter your webhook URL in the format `discord://webhook_id/webhook_token`.
  6. Save your global notification settings. Then, in your watch's [Edit] tab, add your notification URL to the Notifications box to link it to that specific watch.

Step 7: Master Advanced Features for Power Users

To truly unlock the power of changedetection.io, explore these advanced features in the watch's [Edit] tab:

  • CSS Selector: Instead of watching the whole page, you can monitor a specific part. Use your browser's developer tools to find the CSS selector for an element (e.g., `#price-tag`, `.product-availability`). This reduces false positives from ads or timestamps.
  • Filters: Use the "Text Filter" to ignore certain lines or words. For example, you can filter out lines containing "Last updated on" to avoid unnecessary notifications.

changedetection.io vs. The Competition

How does a self-hosted solution stack up against popular commercial services? Here's a quick comparison.

Monitoring Service Comparison: 2025
Featurechangedetection.ioVisualpingDistill.io
CostFree (plus minimal hosting costs)Freemium, paid tiers for more checksFreemium, paid tiers for more checks
Data PrivacyExcellent (Your data, your server)Vendor-controlledVendor-controlled
CustomizationUnlimited (Full control over settings)Limited by planLimited by plan
JS RenderingIncluded (via Playwright/WebDriver)Premium featurePremium feature
Notification ChannelsExtensive, 60+ built-in integrationsLimited, tiered by planLimited, tiered by plan
Check FrequencyAs fast as your server can handleLimited by plan (e.g., daily, hourly)Limited by plan

Maintenance and Best Practices

Running your own service means taking care of it. Thankfully, it's simple with Docker.

Regular Updates

The developer of changedetection.io releases updates frequently with new features and fixes. To update, navigate to your project directory in the terminal and run:

docker-compose pull
docker-compose up -d

This will pull the latest images and restart your containers with the new versions. Your data will be preserved because it's stored in the volume we created.

Backup Strategies

Your entire configuration is stored in the `changedetection-data` directory you created in Step 1. To back up your instance, simply stop the containers (`docker-compose down`) and create a compressed archive of this directory. Store this backup in a safe, separate location.

Conclusion: You're Now a Web Monitoring Pro!

Congratulations! You have successfully deployed a powerful, private, and infinitely customizable web monitoring solution. By following these seven steps, you've moved beyond the limitations of commercial services and taken full control of your data and monitoring capabilities. You can now track prices, monitor stock, get news alerts, and so much more—all from a service that you own and manage. Happy monitoring!