Pourquoi auto-héberger un outil de détection de changements
Les services SaaS de détection de changements facturent à la vérification, plafonnent le nombre d'URL surveillées et font transiter votre contenu surveillé par leurs serveurs. Changedetection.io inverse le modèle : vous l'exécutez sur votre VPS, surveillez un nombre sans limite d'URL à la fréquence de votre choix, et toutes les données restent sur votre infrastructure.
Comme il s'appuie sur un stockage sur fichiers sans base de données externe, la surcharge est minime — le conteneur consomme moins de 256 Mo de RAM au repos et démarre en moins de 10 secondes. Les snapshots de chaque page surveillée sont stockés localement dans un volume Docker monté sur le dossier /datastore : vos données ne quittent jamais votre serveur, même pour les pages derrière authentification.
Ajoutez un sidecar Playwright/Chromium pour les pages rendues en JavaScript et vous obtenez la fidélité d'un navigateur complet pour les SPA, les compteurs de commande et les éléments de prix chargés dynamiquement — des choses qu'une simple requête HTTP ne pourra jamais voir.
Ce que vous obtenez avec un Changedetection.io auto-hébergé
- Surveillez autant d'URL — pages produits, portails d'appels d'offres, sites concurrents, sites d'offres d'emploi — à n'importe quel intervalle de vérification.
- Filtres par sélecteur CSS, XPath et mot-clé — surveillez uniquement l'élément qui vous intéresse, pas la page entière.
- Plus de 80 canaux de notification via Apprise : e-mail (SMTP), Telegram, Slack, Discord, ntfy, Gotify, Matrix, webhooks et bien d'autres.
- Sidecar Playwright/Chromium optionnel pour les pages rendues en JavaScript — le rendu se fait dans un vrai navigateur, pas dans un simple client HTTP.
- Visionneuse de différences complète — voyez exactement ce qui a changé, mis en évidence dans son contexte, avec un historique des instantanés précédents.
- Vérifications planifiées avec gigue (jitter) — de toutes les minutes à toutes les 24 heures ; un minutage aléatoire évite les heuristiques de détection de bots.
- Un seul conteneur Docker, stockage sur fichiers, moins de 256 Mo de RAM — aucune dépendance externe.
- Licence Apache 2.0 — aucuns frais par vérification, aucun compte cloud, aucune télémétrie.
Prérequis
Un VPS ServOrbit avec Ubuntu 24.04 et 1 Go de RAM minimum. Changedetection.io seul consomme moins de 256 Mo au repos ; si vous ajoutez le sidecar Playwright pour les pages rendues en JavaScript, prévoyez 2 Go au total.
Docker et Docker Compose sont provisionnés automatiquement lorsque vous déployez via la marketplace ServOrbit. Aucun nom de domaine n'est requis — l'interface web est accessible directement sur le port 5000, mais il est recommandé de la placer derrière un reverse proxy avec HTTPS pour les déploiements pérennes.
Une note sur la version à déployer. La version latest du conteneur suit le dernier tag publié sur GitHub. Depuis la sortie de v0.60.2 le 2 septembre 2026, deux régressions actives affectent ce tag (voir la section dédiée ci-dessous). Si vous déployez aujourd'hui sans avoir lu la section de dépannage, épinglez explicitement dgtlmoon/changedetection.io:0.55.8 dans votre docker-compose.yml jusqu'au patch.
Déployer Changedetection.io sur votre VPS
Déploiement en un clic depuis la marketplace ServOrbit
Ouvrez votre panneau de contrôle ServOrbit, allez dans Marketplace → Monitoring & Observabilité → Changedetection.io, puis cliquez sur Déployer. Docker récupère
dgtlmoon/changedetection.io:latestet démarre le conteneur. L'interface web est disponible sur le port 5000 en moins de 10 secondes — aucune création de compte, aucune configuration initiale requise.Ajouter votre première URL à surveiller
Rendez-vous sur
http://<your-vps-ip>:5000. Cliquez sur le bouton bleu + en haut à droite, collez l'URL que vous souhaitez surveiller — une page produit, une offre d'emploi, un portail public — puis cliquez sur Surveiller. Changedetection.io récupère immédiatement la page et l'enregistre comme référence. La prochaine vérification est planifiée selon votre intervalle par défaut (minutes, heures).Ajouter un filtre pour isoler l'élément qui vous intéresse
Sans filtre, Changedetection.io détecte le moindre changement sur la page — y compris les bannières publicitaires, les horodatages et les mises à jour de la navigation. Pour vous concentrer uniquement sur le champ du prix ou du stock, ouvrez les paramètres de la surveillance (icône crayon), allez dans l'onglet Filtres et saisissez un sélecteur CSS comme
.price,#stock-statusouspan.availability. Vous pouvez aussi utiliser des expressions XPath ou un déclencheur par mot-clé (n'alerter que lorsque le texte « In stock » apparaît ou disparaît).Configurer un canal de notification
Ouvrez les paramètres de la surveillance → onglet Notifications. Changedetection.io utilise Apprise pour les notifications. Pour envoyer un message Telegram, saisissez
tgram://bottoken/chatid. Pour l'e-mail, utilisezmailto://user:[email protected]. Pour Slack, utilisez le format d'URL de webhookslack://tokenA/tokenB/tokenC. Vous pouvez cumuler plusieurs canaux — les baisses de prix, par exemple, peuvent partir vers Telegram pour une réception mobile instantanée et aussi être journalisées vers un webhook pour votre tableau de bord de supervision.Activer Playwright pour les pages rendues en JavaScript (optionnel)
Si la page que vous voulez surveiller est une SPA React ou Vue, ou charge son compteur de prix de façon asynchrone, une simple requête HTTP n'y verra qu'une coquille vide. Pour activer la prise en charge de Playwright, ajoutez un second conteneur —
browserless/chromeouplaywright-stealth— aux côtés de Changedetection.io dans un fichier Docker Compose, et définissez la variable d'environnementPLAYWRIGHT_DRIVER_URLpour qu'elle pointe vers lui. Dans les paramètres de la surveillance, basculez le moteur de récupération (« Fetch Backend ») surplaywright. Changedetection.io lancera alors un navigateur headless, attendra le rendu de la page et prendra un instantané du DOM en direct.Se connecter la première fois
Changedetection.io s'ouvre directement sur la liste de surveillance, sans compte ni identifiant : vous pouvez ajouter votre première URL tout de suite. Première chose à faire ensuite : ouvrir Settings → General et définir un mot de passe.
Cas d'usage pratiques pour les développeurs et les PME
Changedetection.io couvre un éventail étonnant de besoins d'automatisation au-delà des simples « alertes de réapprovisionnement ».
Veille concurrentielle : surveillez la page tarifaire d'un concurrent avec un sélecteur CSS ciblé sur le tableau des prix. Dès qu'une colonne change — facturation mensuelle passant à annuelle, ajout d'un palier entreprise — vous en êtes informé en temps réel, sans visiter manuellement chaque site.
Suivi de versions logicielles : configurez une surveillance sur la page GitHub Releases d'un outil dont vous dépendez. Un filtre par mot-clé sur v ou Release et une notification Slack : vous ne raterez plus une mise à jour de sécurité critique.
Marchés publics et appels d'offres : les portails d'appels d'offres publient leurs attributions à des heures imprévisibles. Surveiller la page de résultats avec une vérification toutes les heures vous évite plusieurs connexions manuelles par jour.
Alertes de réapprovisionnement e-commerce : un filtre CSS sur .in-stock, un intervalle de 15 minutes et une notification ntfy sur votre téléphone — suffisant pour ne manquer aucun réapprovisionnement d'un article en rupture.
N'importe quelle URL, n'importe quel élément, n'importe quel canal de notification — la combinaison des filtres CSS, des déclencheurs par mot-clé et des plus de 80 backends d'Apprise en fait une primitive de supervision réellement composable.
Régressions actives de la v0.60.2 — ce que vous devez savoir
La version 0.60.2, publiée le 2 septembre 2026, introduit deux régressions simultanées documentées dans le tracker GitHub :
Régression 1 — bouton « Recheck » retourne une erreur HTTP 404 (issue #4369). La sécurisation des endpoints a fait passer un appel GET vers un handler POST-only sans créer le handler POST correspondant. Le bouton de revérification manuelle échoue donc à chaque appel. Un workaround est disponible si vous utilisez Traefik comme reverse proxy : ajouter la variable d'environnement SOCKETIO_CORS_ORIGINS=https://<votre-domaine> au conteneur. Une PR (#4370) a été ouverte le jour même par l'équipe ; elle n'était pas encore mergée au 5 septembre 2026.
Régression 2 — « Time Between Check » cesse de se déclencher après la mise à jour (issue #4368). L'intervalle de vérification planifiée ne s'exécute plus après une mise à jour vers 0.60.2. Les surveillances existantes semblent actives dans l'interface mais ne déclenchent aucune vérification automatique. Seul le bouton « Recheck » manuel permettrait de contourner — mais il est lui-même cassé par la régression 1.
Recommandation : rester sur v0.55.8 ou revenir à cette version si vous avez déjà mis à jour, jusqu'à la sortie d'un patch 0.60.x qui corrige les deux issues. La section suivante détaille la procédure de mise à jour sécurisée avec épinglage de version.
Mettre à jour Changedetection.io en toute sécurité — et épingler une version
Ne jamais utiliser le tag `latest` en production
Le tag
latestsuit automatiquement le dernier tag publié sur Docker Hub. Une mise à jour silencieuse (Docker Watchtower, pull automatique au redémarrage) peut donc introduire une régression sans que vous l'ayez décidé. Épinglez toujours une version explicite dans votredocker-compose.yml:services: changedetection: image: dgtlmoon/changedetection.io:0.55.8Mettez la version à jour manuellement et délibérément, après avoir consulté le changelog GitHub et les issues ouvertes du tag visé.
Sauvegarder le datastore avant toute mise à jour
Toute la configuration et l'historique des snapshots vivent dans le volume monté sur
/datastore. Avant de changer de version :docker compose stop changedetection cp -r /opt/changedetection/datastore /opt/changedetection/datastore.bak-$(date +%Y%m%d)Cette copie vous permet de revenir à l'état précédent en cas de problème, sans perdre vos règles de surveillance ni vos historiques.
Mettre à jour vers une version précise
Éditez votre
docker-compose.ymlpour pointer vers le nouveau tag, puis tirez l'image et redémarrez :docker compose pull changedetection docker compose up -d changedetectionVérifiez que la version affichée dans Settings → General correspond bien à celle que vous avez épinglée. Si quelque chose ne fonctionne pas — bouton Recheck cassé, vérifications planifiées qui s'arrêtent — vous avez votre sauvegarde pour revenir immédiatement.
Revenir à v0.55.8 depuis v0.60.2
Si vous avez déjà mis à jour vers 0.60.2 et observez les deux régressions décrites ci-dessus, voici la marche à suivre :
docker compose stop changedetection # modifier image: en dgtlmoon/changedetection.io:0.55.8 dans docker-compose.yml docker compose pull changedetection docker compose up -d changedetectionLe datastore est compatible entre les deux versions : vos surveillances, filtres et historiques de snapshots sont conservés.
Choisissez un intervalle de vérification plus long (30 à 60 minutes) pour les sites web publics, afin de rester un citoyen courtois du web et d'éviter d'être limité en débit (rate-limiting) ou bloqué par IP. Activez l'option jitter pour répartir les vérifications sur toute la fenêtre d'intervalle et éviter de solliciter le serveur cible exactement à la même seconde à chaque fois. Si une vérification doit absolument être fréquente (toutes les 5 minutes), préférez cibler un élément très précis via un sélecteur CSS plutôt que la page entière : le diff est plus rapide à calculer et produit moins de faux positifs.