Note: This article was originally published 05/2025. Last update 08/2025. Changes:
- Added
sockpuppetbrowser
to enable Playwright Chromium/Javascript fetch method
Changedetection.io is a powerful open-source tool that monitors websites for changes. It’s incredibly useful for tracking updates on pages that don’t offer their own notification systems. This guide will walk you through setting it up on your Synology NAS using Docker Compose.
Prerequisites
- Docker installed on your system by following the TrashGuides setup for Synology.
Installation
Append this configuration to your docker-compose.yml
file. If you’ve followed the guide mentioned above, this file should be located in your Docker application data directory (e.g., /volume1/docker/appdata
).
This configuration sets up a changedetection container along with sockpuppetbrowser, which enables you to use the Playwright Chromium/Javascript
fetch method. It’s handy in cases where a site requires JavaScript to load. It’s still best to use Basic fast Plaintext/HTTP Client
as the default for your change detection watch entries.
changedetection:
image: lscr.io/linuxserver/changedetection.io:latest
container_name: changedetection
restart: unless-stopped
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
environment:
- PUID=${PUID}
- PGID=${PGID}
- TZ=${TZ}
- PLAYWRIGHT_DRIVER_URL=ws://browser-sockpuppet-chrome:3000
volumes:
- ${DOCKERCONFDIR}/changedetection:/config
ports:
- 5555:5000
depends_on:
- browser-sockpuppet-chrome
browser-sockpuppet-chrome:
hostname: browser-sockpuppet-chrome
image: dgtlmoon/sockpuppetbrowser:latest
container_name: browser-sockpuppet-chrome
cap_add:
- SYS_ADMIN
restart: unless-stopped
logging:
driver: json-file
options:
max-file: ${DOCKERLOGGING_MAXFILE}
max-size: ${DOCKERLOGGING_MAXSIZE}
environment:
- SCREEN_WIDTH=1920
- SCREEN_HEIGHT=1024
- SCREEN_DEPTH=16
- MAX_CONCURRENT_CHROME_PROCESSES=10
Note on Environment Variables:
- The
PUID
,PGID
, andTZ
environment variables above are set consistently with your other containers.
Start the container by running this command in the directory containing your docker-compose.yml
file:
docker compose up -d
This command launches Changedetection.io in detached mode, meaning it runs in the background. You should then be able to access it by navigating to http://<your-synology-ip>:5000
in your web browser.
Troubleshooting
If you encounter issues accessing Changedetection.io, try running the container without the -d
flag (e.g., docker compose up
) to view the live logs directly.
During my initial setup, I discovered that the default host port (5000
) was already in use on my Synology. You can resolve such a port conflict by updating the host
port (the first number in the ports
section) like so:
ports:
- NEW_PORT:5000 # Example: 5001:5000
The Container Port (the right-hand side of the colon, e.g.,
5000
inNEW_PORT:5000
) is the port that the application inside the Docker container is programmed to listen on. The Changedetection.io application is configured by its developers to listen on port 5000 within its isolated container environment. Changing this internal container port would require modifying the application’s internal configuration, which is generally more complex and unnecessary for resolving a host port conflict.