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

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

You can run changedetection.io on a VPS with Docker Compose or as a standalone container. There is no universal one-click installer established by the project documentation: the application commands are only part of the setup. Your VPS provider, domain, firewall, TLS certificate, and reverse proxy determine how to expose it safely.

Choose Docker Compose or a standalone container

The project documents two deployment routes. Compose is useful when you want to manage the application alongside optional services such as a browser-based fetcher. A standalone container keeps the Docker configuration narrower. Neither route is universally better; choose based on how you want to manage configuration and persistent data.

Route What the project documents Best fit
Docker Compose Clone the project repository and run docker compose up -d. Its Compose file uses a named data volume and documents optional browser-fetcher, proxy, URL, and worker settings. Project README; Compose file. You want an editable configuration that can include related services.
Standalone Docker The README gives a docker run example using the official dgtlmoon/changedetection.io image, binding 127.0.0.1:5000:5000, mounting datastore-volume:/datastore, and restarting automatically. Project README. You want to run just the application container and manage its options directly.

Image tags are mutable. The README describes latest as the latest stable release and dev as the development branch; check the repository for current guidance before choosing a tag.

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

Deploy the application

With Docker Compose

  1. Install Docker Engine and the Compose plugin on your VPS using the instructions for its operating system.
  2. Clone the official repository onto the server and enter the cloned project directory.
  3. Review the current Compose file. Confirm its image, volume, and any optional services or environment variables match your intended setup; repository configuration can change.
  4. Start the services with docker compose up -d, as the project README directs. Check container status with docker compose ps and inspect logs with docker compose logs if startup fails.

With standalone Docker

The project README provides this example command:

docker run -d --restart always -p 127.0.0.1:5000:5000 -v datastore-volume:/datastore dgtlmoon/changedetection.io:latest

The loopback binding means the service listens on the VPS itself, not directly on its public network interface. That is a useful starting point when a reverse proxy on the same host will handle public traffic. To use a different access arrangement, deliberately configure the binding and firewall rather than assuming this command makes the app publicly reachable.

Keep the datastore persistent

Both documented approaches mount storage at /datastore. In the standalone example, datastore-volume is a named Docker volume; Compose likewise uses a named data volume. This keeps application data outside the replaceable container, so recreating the container does not by itself discard that data.

  • Before deployment, identify the volume name and where Docker stores it on the host.
  • Back up the datastore before upgrading the image or migrating to another VPS, and confirm you know how to restore it.
  • When changing Compose configuration, preserve the existing volume declaration and name unless you intend to start with a separate datastore.

Decide whether you need a browser-based fetcher

changedetection.io offers a built-in HTTP fetcher and a Chrome-based option for monitoring JavaScript-dependent pages. The README describes the choice as configurable per site. Start with the built-in fetcher; if the page content you need is absent because it is rendered by JavaScript, configure the browser-based fetcher using the optional service settings shown in the current Compose file.

Browser rendering is an optional deployment component, not a requirement for every watch. The cited project documentation does not establish a universal VPS memory or CPU requirement, so size the server based on your workload rather than relying on a generic estimate.

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

Configure public access, domain, and TLS separately

Docker starts the application; it does not automatically configure a domain name, TLS, or a public-facing reverse proxy. Those steps depend on your VPS provider, DNS, firewall rules, and chosen proxy. A typical arrangement is to keep changedetection.io bound to loopback and configure a reverse proxy on the VPS to route requests for your domain to its local service port. The proxy must also handle HTTPS and the forwarded headers needed by the application.

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.

The project Compose file documents USE_X_SETTINGS. The project’s reverse-proxy guidance explains that this enables honoring forwarded headers such as Host, X-Forwarded-Prefix, and X-Forwarded-Proto. Review the current Compose configuration and the reverse-proxy guidance alongside instructions for your specific proxy; proxy syntax and URL layout are not interchangeable.

Before exposing the service, verify that the public request reaches the intended proxy, that the proxy routes to the local application port, and that the firewall permits only the traffic your setup requires. Do not publish the application port directly merely because a container port is mapped.

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

Set a public base URL and notifications

The Compose file describes BASE_URL as the installation URL added to notification alerts. Set it to the public URL readers or notification recipients should use, including the correct scheme and any relevant path prefix for your deployment.

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

Notifications use the Apprise library, and notification URLs can be configured per watch. Choose the notification service and credentials that suit you, then enter the corresponding notification URL in the watch’s configuration. The exact service URL and credentials vary by provider; see the project’s notification documentation.

Update carefully

Before replacing an image or changing deployment configuration, back up the persistent datastore. For Compose, review the project’s current file and use the appropriate Compose update procedure for the version of Docker installed on your VPS. For standalone Docker, preserve the named volume when replacing the container. Recheck image tags and environment-variable syntax in the repository because both may change.

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.