[{"data":1,"prerenderedAt":165},["ShallowReactive",2],{"seo-verification":3,"blog-migrer-uptime-kuma-v1-v2-securite-ma-fr":6,"promo-bar-likely":164},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-migrer-uptime-kuma-v1-v2-securite-ma-fr",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":103,"ctaBody":104,"ctaButton":105,"ctaUrl":106,"relatedPosts":107},289,"migrer-uptime-kuma-v1-v2-securite",{"fr":10,"en":12,"ar":13,"es":14},"migrating-uptime-kuma-from-v1-to-v2-security-guide","ترقية-uptime-kuma-من-v1-إلى-v2-دليل-الأمان","migrar-uptime-kuma-v1-v2-seguridad","Migrer Uptime Kuma de v1 vers v2 : guide sécurité","CVE-2026-45618 expose Uptime Kuma 1.x à une exécution de code à distance. Migrez vers v2 et durcissez votre instance avec ce guide pas à pas.",10,2,false,"2026-08-21T00:00:00+00:00","2026-11-09T20:55:14+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Sécurité & Monitoring","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fmigrer-uptime-kuma-v1-v2-securite-poster.svg",{"categorySlug":25,"appSlug":34},"uptime-kuma","La branche 1.x d'Uptime Kuma ne reçoit plus de correctifs de sécurité. CVE-2026-45618, une faille d'exécution de code à distance dans le moteur de gabarits LiquidJS, a mis en évidence ce risque : sur une instance non migrée, un attaquant peut exécuter des commandes arbitraires. Ce guide conduit la migration vers la version 2.x, sauvegarde les données, détaille les vérifications post-migration et durcit l'instance avant la prochaine tentative d'exploitation.",[37,41,50,53,56,69,90,93,97,100],{"type":38,"title":39,"body":40},"h2","Pourquoi migrer maintenant : CVE-2026-45618 et fin de maintenance de la branche 1.x","CVE-2026-45618 est une vulnérabilité critique notée CVSS 10.0 dans LiquidJS, le moteur de gabarits utilisé par Uptime Kuma pour les templates de notifications. Les versions de LiquidJS antérieures à 10.26.0 sont affectées : en exploitant le filtre `valueOf` dans un gabarit — dans Uptime Kuma, le modèle de message d'une notification — un attaquant peut enchaîner une manipulation de prototype pour atteindre le constructeur `Function` de JavaScript et exécuter des commandes arbitraires sur l'hôte. Un proof-of-concept public démontre la lecture de fichiers système et l'exécution via `child_process.execSync`.\n\nLa branche 1.x n'a reçu aucun correctif : sa dernière version, 1.23.17 (octobre 2025), embarque LiquidJS 10.22.0, et le projet marque désormais les tags Docker `1` et `latest` comme dépréciés. Modifier un gabarit de notification demande un compte : un attaquant qui obtient un accès administrateur — par vol d'identifiants ou par bruteforce — dispose de cette surface. La branche 2.x intègre LiquidJS 10.26.0 depuis la version 2.4.0 (mai 2026) et continue de recevoir des correctifs : la 2.5.8 a par exemple corrigé une exécution de code authentifiée via Apprise (GHSA-v2p3-6f5h-6hhf) qui touche aussi toute la branche 1.x. La dernière version, 2.5.9, est sortie en octobre 2026. Continuer d'opérer une instance 1.x, c'est exposer chaque moniteur — et les clients qu'il surveille — à une surface d'attaque sans date de fermeture connue.",{"type":42,"title":43,"items":44},"ul","Impacts concrets d'une instance non migrée",[45,46,47,48,49],"Exécution de code à distance : un attaquant qui peut modifier un gabarit de notification peut exécuter des commandes système sur le VPS hôte.","Exposition du parc client : une agence qui héberge une instance partagée expose les configurations, les URL internes et les credentials de notification de tous ses clients.","Responsabilité transférée : en cas d'incident sur une instance non maintenue, la négligence à migrer après la publication d'une CVE critique constitue un facteur aggravant.","Accumulation de CVE : la branche 1.x ne recevra plus ni patch de sécurité ni mise à jour de dépendances — chaque nouvelle faille sur LiquidJS ou ses dépendances s'y accumule sans remède.","Détection silencieuse : LiquidJS évalue les gabarits côté serveur ; une exploitation peut rester invisible dans les logs applicatifs d'Uptime Kuma.",{"type":38,"title":51,"body":52},"Prérequis avant de commencer","Vérifiez les points suivants avant de lancer la migration. Une omission peut rendre le rollback impossible.\n\n**Ressources minimales recommandées.** La documentation d'Uptime Kuma ne fixe pas de minimum chiffré : une petite instance tient sur un VPS d'entrée de gamme, mais la RAM et le disque croissent avec le nombre de moniteurs et l'historique conservé. La migration agrège la table des heartbeats : le mainteneur rapporte environ 7 minutes pour 20 moniteurs et 90 jours de données, et plusieurs heures sur un matériel lent — un VPS avec SSD NVMe réduit cette fenêtre.\n\n**Docker Compose v2.** La commande requise est `docker compose` (plugin intégré), et non `docker-compose` (binaire autonome v1). Vérifiez avec `docker compose version` : attendez une version 2 ou ultérieure (la branche actuelle est la v5). Si la commande échoue, installez le plugin via le gestionnaire de paquets de votre distribution avant de continuer.\n\n**Accès root ou sudo.** La procédure manipule des volumes Docker et des fichiers système ; un accès privilégié est indispensable.\n\n**Instance v1 opérationnelle.** Confirmez la version courante via l'interface web (Paramètres → À propos). La migration suppose que l'instance démarre et que sa base de données est cohérente — si elle est déjà corrompue, restaurez une sauvegarde avant de procéder.",{"type":38,"title":54,"body":55},"Sauvegarde obligatoire avant la migration","La migration v1 → v2 transforme le schéma de la base SQLite de façon irréversible. Sans sauvegarde valide, un rollback complet est impossible.\n\n**Identifier le volume ou le dossier de données.** Si vous utilisez Docker Compose avec un volume nommé, son nom complet combine le nom du projet Compose et celui du volume, par exemple `uptime-kuma_uptime-kuma-data`. Confirmez avec `docker volume ls | grep kuma`. Si vous montez un dossier hôte (bind mount), repérez le chemin dans votre `docker-compose.yml` — typiquement `.\u002Fdata:\u002Fapp\u002Fdata`.\n\n**Arrêter le conteneur avant la sauvegarde.** Une base SQLite sauvegardée pendant une écriture active peut être corrompue. N'utilisez jamais le flag `-v` lors de l'arrêt : cela supprimerait le volume et son contenu.",{"type":57,"title":58,"steps":59},"steps","Sauvegarde du volume de données",[60,63,66],{"title":61,"body":62},"Arrêter Uptime Kuma","Arrêtez le conteneur sans supprimer le volume :\n```bash\ndocker compose down\n```\nAttendez la confirmation `Container uptime-kuma Stopped` avant de continuer.",{"title":64,"body":65},"Sauvegarder un volume Docker nommé","Utilisez un conteneur busybox pour créer une archive compressée du volume :\n```bash\ndocker run --rm \\\n  --volume uptime-kuma_uptime-kuma-data:\u002Fapp\u002Fdata \\\n  --volume $(pwd):\u002Fbackup \\\n  busybox \\\n  tar czf \u002Fbackup\u002Fuptime-kuma-v1-backup.tar.gz -C \u002Fapp\u002Fdata .\n```\nVérifiez la taille de l'archive avec `ls -lh uptime-kuma-v1-backup.tar.gz`. Une archive de quelques octets seulement indique un problème de montage — corrigez avant de continuer.",{"title":67,"body":68},"Sauvegarder un bind mount","Si vos données sont dans un dossier hôte (exemple : `.\u002Fdata`) :\n```bash\ntar czf uptime-kuma-v1-backup.tar.gz .\u002Fdata\n```\nConservez cette archive hors du serveur (stockage objet, serveur distant) avant de passer à la migration.",{"type":57,"title":70,"steps":71},"Migration v1 → v2 : procédure pas à pas",[72,75,78,81,84,87],{"title":73,"body":74},"Mettre à jour l'image dans docker-compose.yml","Ouvrez votre fichier `docker-compose.yml` et remplacez le tag de l'image :\n```yaml\n# Avant\nimage: louislam\u002Fuptime-kuma:1\n# Après\nimage: louislam\u002Fuptime-kuma:2\n```\nSi vous utilisez le tag `latest`, préférez un tag de version explicite comme `louislam\u002Fuptime-kuma:2.5.9` (dernière version, octobre 2026) pour éviter les régressions lors d'une future montée de version automatique, et suivez les avis de sécurité du dépôt pour le faire évoluer. Évitez les tags `rootless` pour cette migration : le guide officiel les déconseille depuis une v1.",{"title":76,"body":77},"Télécharger la nouvelle image","Récupérez l'image v2 avant de démarrer le service :\n```bash\ndocker pull louislam\u002Fuptime-kuma:2\n```\nVérifiez que l'image est présente : `docker images | grep uptime-kuma`.",{"title":79,"body":80},"Démarrer le conteneur v2","Lancez le service. Docker Compose détecte le changement d'image et recrée le conteneur :\n```bash\ndocker compose up -d\n```\nAttendez la confirmation `Container uptime-kuma Started`.",{"title":82,"body":83},"Suivre la migration de la base de données","Au premier démarrage, Uptime Kuma migre le schéma SQLite vers le format v2. Cette opération peut durer de quelques secondes à plusieurs heures selon la taille de la base et la vitesse du matériel :\n```bash\ndocker compose logs -f uptime-kuma\n```\nN'interrompez pas le conteneur pendant cette phase. Attendez une ligne confirmant la fin de la migration avant de continuer.",{"title":85,"body":86},"Vérifier le healthcheck","Contrôlez que le conteneur est en état `healthy` :\n```bash\ndocker compose ps\n```\nLa colonne `Status` doit afficher `healthy`. Si elle reste sur `starting` plus de deux minutes après la fin des logs de migration, consultez les logs pour identifier l'erreur.",{"title":88,"body":89},"Confirmer la version active dans l'interface","Connectez-vous à l'interface web. Allez dans **Paramètres → À propos** et vérifiez que la version affichée commence par `2.`. Confirmez que tous vos moniteurs sont présents et que leurs statuts correspondent à l'état réel de vos services.",{"type":38,"title":91,"body":92},"Vérifications post-migration","Une migration réussie ne se limite pas à un conteneur qui démarre. Parcourez ces points avant de considérer l'opération terminée.\n\n**Moniteurs.** Ouvrez le tableau de bord et comparez le nombre de moniteurs avec votre inventaire v1. Un moniteur manquant peut indiquer un problème de migration partielle — vérifiez les logs au niveau `ERROR` ou `WARN`.\n\n**Notifications.** Déclenchez manuellement un test de notification pour chaque canal configuré (email, Telegram, webhook). En v2, les gabarits de l'e-mail (SMTP) passent d'un remplacement par expression régulière à LiquidJS : les variables deviennent sensibles à la casse et une variable inconnue est ignorée sans erreur. Profitez-en pour auditer le gabarit de chaque notification et supprimer tout contenu inattendu (balises `{% %}`, filtre `valueOf`) — c'est le vecteur de CVE-2026-45618.\n\n**Page de statut.** Si vous exposez une page de statut publique, vérifiez qu'elle répond correctement et qu'elle liste les bons services. L'URL et le slug sont conservés après migration.\n\n**Certificats SSL.** Les sondes TLS redémarrent leur cycle de vérification après migration. Un certificat proche de l'expiration avant la migration peut déclencher immédiatement une alerte : vérifiez la date réelle avant de traiter cela comme une régression.",{"type":94,"title":95,"body":96},"tip","Durcissement de l'instance après migration","**Authentification obligatoire.** En v2, l'authentification est activée par défaut. Vérifiez dans Paramètres → Sécurité que l'accès sans mot de passe est désactivé. Sur une instance fraîchement déployée sans compte configuré, l'interface est publiquement accessible pendant la configuration initiale : créez le compte administrateur dans les premières minutes suivant le premier démarrage.\n\n**Sous-domaine dédié derrière un reverse proxy.** N'exposez pas Uptime Kuma sur un port direct (`:3001`). Placez-le derrière Nginx ou Caddy sur un sous-domaine dédié (`status.votredomaine.com`) avec TLS. Un `ufw deny 3001` ne suffit pas : les ports publiés par Docker contournent les règles ufw. Publiez le port sur la seule boucle locale dans `docker-compose.yml` (`\"127.0.0.1:3001:3001\"`) pour que seul le reverse proxy l'atteigne.\n\n**Fail2ban ou CrowdSec devant le proxy.** Ajoutez une règle de détection de bruteforce sur les tentatives de connexion à l'interface. Le Hub de CrowdSec propose une collection communautaire `timokoessler\u002Fuptime-kuma`, avec un scénario de bruteforce. Consultez l'article \u003Ca href=\"\u002Fblog\u002Fsecuriser-vps-crowdsec\">Sécuriser votre VPS avec CrowdSec\u003C\u002Fa> pour la procédure complète.\n\n**Isolation réseau.** Placez Uptime Kuma dans un réseau Docker dédié. Il n'a besoin d'accéder qu'aux cibles qu'il surveille — pas aux bases de données de production ni aux APIs internes.",{"type":38,"title":98,"body":99},"Dépannage : erreurs courantes","**Volume incompatible ou base corrompue.** Si les logs affichent `SQLITE_ERROR: no such table` ou `database disk image is malformed`, la base montée n'est pas valide ou la sauvegarde a été faite avec la base en cours d'écriture. Restaurez l'archive, arrêtez le conteneur proprement, et relancez la procédure depuis l'étape de sauvegarde.\n\n**Port 3001 déjà occupé.** Une erreur `port is already allocated` ou `address already in use` sur le port 3001 indique qu'un processus utilise déjà ce port. Identifiez-le avec `ss -tlnp | grep 3001` et arrêtez-le, ou modifiez le mapping dans `docker-compose.yml` (par exemple `127.0.0.1:3002:3001`) et mettez à jour la configuration du reverse proxy.\n\n**Template de notification rejeté après migration.** Si un canal de notification affiche une erreur de template, le gabarit contient une syntaxe que LiquidJS refuse ; en v1, l'e-mail SMTP n'utilisait pas LiquidJS mais un simple remplacement par expression régulière. Éditez le template concerné dans Paramètres → Notifications et supprimez ou corrigez les balises en erreur.\n\n**Certificat TLS affiché comme expiré.** Les sondes TLS redémarrent leur cycle après migration. Vérifiez la date réelle avec `echo | openssl s_client -connect your-domain.com:443 -servername your-domain.com 2>\u002Fdev\u002Fnull | openssl x509 -noout -dates` avant de traiter cette alerte comme un incident.\n\n**Conteneur en boucle de redémarrage.** Si la migration échoue et que la politique est `restart: always` ou `unless-stopped`, Docker relance indéfiniment le conteneur. Passez à `restart: \"no\"` (entre guillemets en YAML), corrigez le problème dans les logs, puis restaurez la politique d'origine.",{"type":38,"title":101,"body":102},"Ce que cette migration protège","Migrer vers Uptime Kuma 2.x ferme CVE-2026-45618 sur une surface directement accessible depuis l'interface d'administration. Pour une agence qui gère le parc de plusieurs clients depuis une instance partagée, cette surface est proportionnelle au nombre de comptes et de moniteurs configurés : chaque client supplémentaire élargissait le périmètre exposé.\n\nLa v2 apporte aussi des changements structurels qui réduisent la surface d'attaque à long terme : des images Docker rootless proposées en option (tags `2-rootless`), des dépendances activement maintenues, et un délai de 14 jours avant l'intégration de nouvelles versions de dépendances npm (`min-release-age=14` dans le `.npmrc` du projet) — pour limiter les attaques sur la chaîne d'approvisionnement.\n\nAvec une offre Agency ServOrbit.com, vous créez et suivez les comptes cPanel de vos clients depuis un seul espace.","Les comptes cPanel de vos clients, au même endroit","Avec une offre Agency ServOrbit.com, vous créez et suivez les comptes cPanel de vos clients depuis un seul espace. Vous gérez la relation client, nous tenons l'infrastructure.","Découvrir l'offre agences","\u002Fsolutions\u002Fagences",[108,126,145],{"id":109,"slug":110,"slugs":111,"title":115,"excerpt":116,"readTime":23,"views":117,"isPinned":19,"noindex":19,"publishedAt":118,"updatedAt":119,"category":120,"categories":121,"featuredImage":30,"bgImage":31,"posterImage":123,"relatedSolution":124},105,"superviser-vps-uptime-kuma",{"fr":110,"en":112,"ar":113,"es":114},"monitoring-your-vps-with-uptime-kuma","مراقبة-خادمك-الافتراضي-vps-باستخدام-uptime-kuma","supervisar-vps-con-uptime-kuma","Superviser votre VPS avec Uptime Kuma","Déployez Uptime Kuma sur votre VPS pour surveiller vos sites et services en self-hosted, avec alertes et page de statut publique.",0,"2026-03-07T00:00:00+00:00","2026-11-09T20:55:19+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[122],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsuperviser-vps-uptime-kuma-poster.svg",{"categorySlug":125,"appSlug":34},"monitoring",{"id":127,"slug":128,"slugs":129,"title":133,"excerpt":134,"readTime":135,"views":18,"isPinned":19,"noindex":19,"publishedAt":136,"updatedAt":137,"category":138,"categories":139,"featuredImage":30,"bgImage":31,"posterImage":141,"relatedSolution":142},108,"securiser-vps-crowdsec",{"fr":128,"en":130,"ar":131,"es":132},"securing-your-vps-with-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","proteger-vps-con-crowdsec","Sécuriser votre VPS avec CrowdSec","Déployez CrowdSec sur votre VPS pour bloquer les attaques grâce à une détection comportementale et une blocklist communautaire mutualisée.",4,"2026-03-04T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[140],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":143,"appSlug":144},"cybersecurity","crowdsec",{"id":146,"slug":147,"slugs":148,"title":152,"excerpt":153,"readTime":154,"views":155,"isPinned":19,"noindex":19,"publishedAt":156,"updatedAt":157,"category":158,"categories":159,"featuredImage":30,"bgImage":31,"posterImage":161,"relatedSolution":162},106,"monitoring-vps-grafana-prometheus",{"fr":147,"en":149,"ar":150,"es":151},"vps-monitoring-with-grafana-and-prometheus","مراقبة-الخادم-الافتراضي-vps-باستخدام-grafana-و-prometheus","monitorizacion-vps-grafana-prometheus","Monitoring VPS avec Grafana et Prometheus","Déployez Prometheus 3.x, Grafana 13.x, Node Exporter et Alertmanager sur votre VPS avec Docker Compose. Dashboards, alertes et durcissement.",11,1,"2026-03-06T00:00:00+00:00","2026-10-05T14:05:27+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[160],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fmonitoring-vps-grafana-prometheus-poster.svg",{"categorySlug":125,"appSlug":163},"grafana",true,1794270755919]