The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →You can run Changedetection.io on a VPS with Docker Compose, but the official project instructions do not establish a provider-specific one-click VPS image. This guide uses the official container setup, keeps the web interface bound to localhost by default, and shows where an optional browser service fits.
What you need before you start
- A VPS with SSH access and Docker Engine plus the Docker Compose plugin installed.
- A domain name only if you plan to put a reverse proxy in front of the app.
- Basic comfort with SSH commands and editing a text file.
The Changedetection.io instructions cited here do not specify a minimum VPS size, Linux distribution, or hosting provider, so this guide does not claim a tested hardware minimum. Start with your provider’s supported operating system and monitor resource use if you later enable browser-based fetching.
As an Amazon Associate I earn from qualifying purchases.
Deploy the basic service with Docker Compose
The official Compose example runs the application image ghcr.io/dgtlmoon/changedetection.io, maps its interface to localhost on port 5000, and stores application data in a named volume mounted at /datastore. The named volume is important: it preserves configuration and history when the container is replaced. See the official Compose example.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minute1. Create a deployment directory
SSH to the VPS, then create and enter a directory for the Compose file:
#1 Best Overall
mkdir -p ~/changedetection
cd ~/changedetection
2. Save the Compose configuration
Create a file named compose.yaml in that directory with this basic service definition:
services:
changedetection:
image: ghcr.io/dgtlmoon/changedetection.io
container_name: changedetection
hostname: changedetection
volumes:
- changedetection-data:/datastore
ports:
- "127.0.0.1:5000:5000"
restart: unless-stopped
volumes:
changedetection-data:
This keeps port 5000 reachable only from the VPS itself. Do not change the address to 0.0.0.0 simply to make the page easier to reach: that would expose the management interface on the server’s network interfaces. For remote browser access, put a reverse proxy or a secure tunnel in front of the localhost-bound service.
3. Start and check the container
From the directory containing compose.yaml, start the service:
Quick wins for a faster PC:
Repair Windows errors before they cause bigger problemsFix Now →Scan for outdated or missing drivers - takes under a minuteDriver Scan →Clear out junk files and repair common Windows errorsFree Scan →Rank #2
docker compose up -d
Check whether it is running and review recent logs before opening the interface:
docker compose ps
docker compose logs --tail=100 changedetection
If the service is running, the app listens on the VPS at 127.0.0.1:5000. The official README’s standalone example likewise directs users to http://127.0.0.1:5000 after launch. From your own computer, that address refers to your computer, not the VPS; connect through your configured proxy or tunnel. See the official README for the project’s Docker instructions.
Choose how to reach the web interface
Use a reverse proxy for a domain and TLS
If you want to open the service through a domain, configure a reverse proxy to forward requests to the VPS’s local service at 127.0.0.1:5000. Follow the current documentation for the proxy you choose to configure DNS, HTTPS certificates, and forwarding. Running the app in Docker does not by itself provide TLS or make the interface safe to publish directly.
Rank #3
- HP MicroServer Gen10 Plus Tower Server for Business with Microsoft Windows Server 2019 OS!
- Intel Xeon E-2224 Quad-Core 3.4GHz 8MB CPU, Up To 4.6GHz Turbo
- 32GB (2 x 16GB) DDR4 PC4-21300 2666MHz Unbuffered Memory
- 16TB (4 x 4TB) 7.2K 6Gb/s SATA 3.5" HDDs in RAID
- Hard drives and memory upgrades included separately NOT installed, installation required.
Use an SSH tunnel for private access
If you do not want to configure a public domain or proxy, an SSH tunnel can forward the VPS’s localhost port to your own computer. For example, run this on your computer, replacing user and vps-address with your SSH account and server address:
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
ssh -L 5000:127.0.0.1:5000 user@vps-address
Keep that SSH session open, then visit http://127.0.0.1:5000 in your computer’s browser. The tunnel is temporary: closing the SSH session ends access through it.
When to add browser-based fetching
Basic HTTP fetching is sufficient for many sites. Some pages render their content with JavaScript and need a browser-backed fetch. The project’s Compose example supports an optional separate sockpuppetbrowser service and a PLAYWRIGHT_DRIVER_URL setting for connecting Changedetection.io to it. Use the service hostname and port from the Compose network in that setting, not localhost, which would refer to the Changedetection.io container itself. The official setup documents the browser-service option in its Compose file and README.
Rank #4
- Try the standard service first if the pages you watch load correctly without a browser.
- Add the browser service only for targets that require JavaScript rendering.
- Expect an additional service and browser runtime overhead; the official instructions do not give a quantified VPS resource minimum.
When enabling the browser service, adapt the project’s current Compose example rather than guessing its image, port, or environment settings. Confirm that PLAYWRIGHT_DRIVER_URL points to the browser service’s Compose hostname and configured port, then recreate the stack with Compose.
Keep data and update the deployment
The named volume changedetection-data holds the app’s /datastore data independently of the container. Avoid deleting that volume when removing or recreating the service. Before an upgrade, make a backup of the persistent data using a method appropriate to your VPS and Docker setup.
Recommended Free Tools
The project’s documented Compose update flow pulls the new image and recreates the service:
Best Value
docker compose pull && docker compose up -d
Afterward, inspect status and logs as you did on first launch. The project also documents a standalone Docker launch path with a persistent volume; Compose is used here because it makes the service configuration and subsequent updates explicit.
Troubleshoot common setup problems
The page will not open from my computer
The default mapping listens on the VPS’s localhost, not its public network address. Use the SSH tunnel or configure a reverse proxy; changing the binding to all interfaces is not a substitute for securing access.
The container is not running
Run docker compose ps and docker compose logs --tail=100 changedetection from the deployment directory. Correct any reported Compose, image-pull, or startup problem, then start the service again with docker compose up -d.
A watched page appears empty or incomplete
If the target relies on client-side JavaScript, try the optional browser-backed fetching configuration. Keep ordinary HTTP fetching for pages that do not require browser rendering.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




