October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk4 min

Set Up Changedetection.io on a VPS with Docker Compose

Run Changedetection.io on a VPS using the official Docker image and Compose, with persistent data and safer access through a proxy or SSH tunnel.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

1. Create a deployment directory

SSH to the VPS, then create and enter a directory for the Compose file:

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:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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 Mini Tower Server, Intel Xeon E-2224 3.4GHz, 32GB RAM, 16TB Storage, RAID, Windows Server 2019
  • 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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
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.

  • 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.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The project’s documented Compose update flow pulls the new image and recreates the service:

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.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

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.

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.

Leave a Reply

Your email address will not be published. Required fields are marked *

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
Crashes, No Sound, or Screen Glitches?Free driver scan
PC Slower Than It Used to Be?Free scan - under a minute

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.