Post

Track Changes Online with ChangeDetection, a Self-Hosted Docker Container!

Tracking things on the web just got a whole lot easier with ChangeDetection, the free and open source Docker container! Track website changes, price changes of products, and even track out of stock products with notifications all from a container you host yourself!

📺 Watch Video

Disclosures

  • Thanks to Docker for Sponsoring this Video!
  • Get Actionable insights for software supply chain management with Docker Scout! https://dockr.ly/45HWDnR

Info

⭐ ChangeDetection on GitHub: https://github.com/dgtlmoon/changedetection.io

Docker Setup

See this post on how to install docker and docker compose

Prepare Our Server

Create folder for your compose and mounts

1
2
mkdir changedetection
cd changedetection

Then we’ll create a folder to hold our data and our datastore

1
2
3
4
5
mkdir data
cd data
mkdir datastore
cd datastore
cd ../.. # go back to the root of changedetection/

Create docker compose file and add contents

1
2
touch compose.yaml
nano compose.yaml

Your folder structure should look like this

1
2
3
4
./changedetection
├── data
│   └── datastore
└── docker-compose.yml

Tasks from Our Compose File

Docker Compose Contents

Simple version of change detection

1
2
3
4
5
6
7
8
9
10
11
12
---
services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:latest
    container_name: changedetection
    hostname: changedetection
    environment:
      # - BASE_URL=https://mysite.com # configure this for your own domain
    volumes:
      - ./data/datastore:/datastore
    ports:
      - 5000:5000

Advanced version of change detection

If you want to use Selenium + Webdriver, uncomment the WEBDRIVER_URL variable and the browser-chrome service, and then comment out PLAYWRIGHT_DRIVER_URL variable and playwright-chrome service.

To see all supported configurations, see the Docker compose file on github

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
---
services:
  changedetection:
    image: ghcr.io/dgtlmoon/changedetection.io:latest
    container_name: changedetection
    hostname: changedetection
    volumes:
      - ./data/datastore:/datastore
    ports:
      - 5000:5000
    environment:
      # - WEBDRIVER_URL=http://playwright-chrome:4444/wd/hub
      - PLAYWRIGHT_DRIVER_URL=ws://playwright-chrome:3000
      # - BASE_URL=https://mysite.com # configure this for your own domain

    depends_on:
      playwright-chrome:
        condition: service_started
    restart: unless-stopped

  # browser-chrome:
  #   hostname: browser-chrome
  #   image: selenium/standalone-chrome:125.0
  #   shm_size: '2gb'
  #   # volumes:
  #   #     # Workaround to avoid the browser crashing inside a docker container
  #   #     # See https://github.com/SeleniumHQ/docker-selenium#quick-start
  #   #     - /dev/shm:/dev/shm
  #   restart: unless-stopped
   
  playwright-chrome:
    hostname: playwright-chrome
    image: browserless/chrome
    restart: unless-stopped
    environment:
      - SCREEN_WIDTH=1920
      - SCREEN_HEIGHT=1024
      - SCREEN_DEPTH=16
      - ENABLE_DEBUGGER=false
      - PREBOOT_CHROME=true
      - CONNECTION_TIMEOUT=300000
      - MAX_CONCURRENT_SESSIONS=10
      - CHROME_REFRESH_TIME=600000
      - DEFAULT_BLOCK_ADS=true
      - DEFAULT_STEALTH=true
      # Ignore HTTPS errors, like for self-signed certs
      - DEFAULT_IGNORE_HTTPS_ERRORS=true

Chrome Extension

If you want to install the Chrome Extenions, you can but adding it here

Then all you need to do to configure it is visit your ChangeDetection site and click Settings and it will automatically configure it for you!

Then when visiting a site, all you need to do it click the extension and click add!

Join the conversation

🛍️ Check out the new Merch Shop at https://l.technotim.live/shop

⚙️ See all the hardware I recommend at https://l.technotim.live/gear

🚀 Don’t forget to check out the 🚀Launchpad repo with all of the quick start source files

🤝 Support me and help keep this site ad-free!

This post is licensed under CC BY 4.0 by the author.