Sélectionner une page
Intégrer un thermostat Tado X dans Home Assistant : ce qu’il faut savoir avant de se lancer

Intégrer un thermostat Tado X dans Home Assistant : ce qu’il faut savoir avant de se lancer

J’ai un thermostat Tado X installé depuis l’automne 2025, qui fonctionne très bien avec l’app officielle. L’idée semblait simple : le faire apparaître dans Home Assistant pour centraliser le pilotage de la maison. En pratique, c’est plus compliqué que prévu – et la documentation disponible sur le sujet est souvent incomplète ou déjà dépassée.

Voici un retour de ce que j’ai testé, ce qui bloque, et ce qu’il faut faire pour y arriver.


Le matériel Tado X, c’est quoi exactement ?

La gamme Tado X est la nouvelle génération (depuis 2024), qui repose sur Matter over Thread – un protocole de domotique local, sans cloud, conçu pour être interopérable entre écosystèmes.

Dans mon cas, deux appareils :

  • le Wireless Receiver X (branché à la chaudière), qui joue aussi le rôle de Thread Border Router – c’est lui qui crée le réseau Thread dans la maison
  • le Wireless Temperature Sensor X (la sonde dans la pièce), qui communique avec le Receiver via Thread

C’est la sonde qu’on cherche à intégrer dans Home Assistant. Le Receiver, lui, est piloté automatiquement par la sonde – pas besoin de l’intégrer séparément.


Ce qui ne fonctionne pas (et pourquoi)

L’intégration native Home Assistant Tado

Home Assistant propose une intégration Tado dans son catalogue officiel. Elle fonctionne bien – mais uniquement pour l’ancienne gamme Tado (V3+). Pour la gamme X, la documentation officielle HA le dit clairement : les appareils Tado X ne sont pas supportés par cette intégration. En pratique, l’authentification OAuth se déroule correctement côté Tado, mais HA boucle ensuite sur une erreur « Device login flow status is PENDING ». Le problème vient d’un champ manquant dans la réponse de l’API Tado X (shortSerialNo), que l’intégration HA attend et ne trouve pas.

Matter local (via python-matter-server)

Matter est justement le protocole natif du Tado X – l’approche semblait donc idéale. On installe le container python-matter-server, on configure l’intégration Matter dans HA, et on tente l’appairage via l’app Tado (option « Associer avec une app compatible Matter »).

Le container fonctionne bien. L’intégration Matter dans HA aussi. Mais l’appairage échoue avec un « code erreur 1 ».

La cause est plus profonde : le Tado X utilise Matter over Thread, pas Matter over WiFi. La différence est importante. Matter over Thread nécessite un Thread Border Router (OTBR) exposé sur le réseau local – c’est lui qui fait le pont entre le réseau Thread des appareils et le réseau IP de la maison. Or le Wireless Receiver X de Tado joue ce rôle, mais il ne l’expose pas aux systèmes tiers. Il est exclusivement réservé à l’app Tado.

Sans OTBR indépendant, le matter-server ne peut pas atteindre la sonde Tado X.


Les options qui fonctionnent

Option 1 – Une intégration communautaire via HACS (la plus simple)

C’est l’option recommandée pour démarrer. HACS (Home Assistant Community Store) donne accès à des intégrations communautaires maintenues activement. Deux intégrations supportent la gamme X :

  • Tado X (par exabird) – spécifiquement conçue pour la gamme X, utilise l’API officielle Tado
  • Tado CE (par hiall-fyi) – disponible directement dans le catalogue HACS, sans configuration de dépôt personnalisé

Ces deux intégrations passent par le cloud Tado (donc dépendance internet), mais elles gèrent correctement les appareils X là où l’intégration native échoue.

Pour installer HACS sur Home Assistant Container (Docker) :

bash

docker exec -it home-assistant bash
wget -O - https://get.hacs.xyz | bash -

Redémarre ensuite HA, puis ajoute HACS comme intégration (Paramètres > Appareils et services > + Ajouter). Tu auras besoin d’un compte GitHub gratuit pour l’authentification.

Une fois HACS installé, cherche « Tado X » ou « Tado CE » dans le store et installe l’une des deux.

Point d’attention : depuis janvier 2026, Tado limite les appels API à 100 par jour (quota remis à zéro à 12h CET). Pour un thermostat unique avec une fréquence de polling raisonnable, ça devrait suffire – mais c’est à surveiller.

Option 2 – Un Thread Border Router dédié (Matter local, sans cloud)

C’est la solution la plus locale, mais la plus complexe. Elle nécessite :

  1. Un dongle Thread compatible – le Home Assistant Connect ZBT-1 ou le Sonoff ZBT-1 (20-40 €), à flasher en firmware Thread-only
  2. Le container Docker ghcr.io/ownbee/hass-otbr-docker pour créer un Thread Border Router indépendant
  3. L’activation de l’IPv6 forwarding sur le serveur (quelques lignes dans /etc/sysctl.conf)
  4. La configuration de l’intégration OpenThread Border Router dans HA

Une fois ce réseau Thread en place, l’appairage Matter du Tado X devrait fonctionner via l’app HA mobile.

C’est à envisager si tu as plusieurs appareils Thread/Matter ou si la dépendance au cloud Tado devient un problème.

Option 3 – Attendre

L’équipe Home Assistant travaille activement sur le support natif de la gamme Tado X. Une future mise à jour pourrait résoudre le problème sans action de ta part.


Par où commencer ?

Si tu veux intégrer ton Tado X dans Home Assistant maintenant, commence par l’option 1 (HACS + Tado X ou Tado CE). C’est le meilleur rapport effort/résultat.

Si la dépendance cloud te dérange ou si tu prévois d’ajouter d’autres appareils Matter/Thread, l’option 2 vaut l’investissement – mais prévois du temps pour la mise en place.

De mon côté j’ai choisi l’option 3 – attendre !


Testé en juin 2026 avec Home Assistant Container 2026.5.0, Tado X Wireless Receiver X (firmware 299.1) et Wireless Temperature Sensor X.

Aqara ou MOES : appairer un capteur d’ouverture Zigbee dans Home Assistant

Aqara ou MOES : appairer un capteur d’ouverture Zigbee dans Home Assistant

Les capteurs d’ouverture Aqara MCCGQ11LM et MOES ZSS-G02-GWM-C fonctionnent de la même façon dans Home Assistant via Zigbee2MQTT. La procédure ci-dessous couvre les deux modèles, avec les différences signalées au fur et à mesure.


Préparation du capteur

Les deux modèles fonctionnent sur pile bouton et ne nécessitent aucune configuration préalable.

Aqara MCCGQ11LM (piles CR1632)

Il n’y a rien à faire à l’installation. Mais si la pile est trop ancienne, ais levier délicatement avec un ongle ou un petit tournevis plat dans la fente sur la tranche inférieure pour ouvrir le boîtier. Insère une pile CR1632, face positive (+) vers le haut. Referme le boîtier en clipsant le couvercle.

    MOES ZSS-G02-GWM-C (pile CR2032)

    1. Glisse un ongle ou un petit tournevis dans la fente du boîtier arrière pour l’ouvrir.
    2. Retire la languette en plastique transparent qui bloque la pile.

    Dans les deux cas, effectue l’appairage à proximité de ton ordinateur ou de ta box domotique avant de coller le capteur à son emplacement définitif.


    Appairage dans Zigbee2MQTT

    1. Ouvre l’interface web de Zigbee2MQTT.
    2. Clique sur Permit join en haut à droite.
    3. Maintiens le bouton du capteur enfoncé environ 5 secondes jusqu’à ce que la LED clignote, puis relâche.
    4. Zigbee2MQTT détecte le capteur en quelques secondes et l’ajoute à la liste.
    5. Renomme-le immédiatement (ex : Capteur Porte Entrée ou Capteur Fenêtre Cuisine) et coche la case pour synchroniser le nom avec Home Assistant.

    Astuce Aqara uniquement – Les capteurs Aqara de première génération ont tendance à s’endormir rapidement pendant l’appairage. Pendant les 10 à 20 secondes que dure la détection, appuie brièvement sur le bouton toutes les 2 secondes pour maintenir le capteur éveillé et lui permettre d’envoyer ses informations de configuration.


    Installation physique

    Le principe est le même pour les deux modèles :

    • Place le grand boîtier sur la partie fixe (le cadre de porte ou de fenêtre) et le petit aimant sur la partie mobile (le battant).
    • Aligne les petites lignes gravées sur le côté de chaque pièce l’une en face de l’autre.
    • Respecte la distance maximale entre les deux éléments : 22 mm pour l’Aqara, 20 mm pour le MOES. Au-delà, le capteur considère la porte comme ouverte même quand elle est fermée.

    Entités disponibles dans Home Assistant

    Une fois appairé, le capteur apparaît automatiquement dans Home Assistant via l’intégration MQTT. Tu y trouveras :

    • binary_sensor.contact – état d’ouverture : on pour ouvert, off pour fermé. Dans les paramètres de l’entité, utilise « Afficher en tant que » pour choisir Porte, Fenêtre ou Garage – l’icône s’adapte automatiquement.
    • sensor.battery – pourcentage de pile restant (peut prendre jusqu’à 24h à se stabiliser après le premier appairage).
    • sensor.linkquality – force du signal Zigbee (Aqara uniquement).
    • binary_sensor.battery_low – alerte pile faible (MOES uniquement).

    Exemples d’automatisations

    Allumage automatique à l’ouverture d’une porte (idéal pour un couloir ou un dressing)

    alias: "Lumière : Allumage auto sur ouverture porte"
    trigger:
      - platform: state
        entity_id: binary_sensor.capteur_porte_entree_contact
        to: "on"
    condition:
      - condition: state
        entity_id: sun.sun
        state: "below_horizon"
    action:
      - service: light.turn_on
        entity_id: light.lumiere_couloir
    

    Notification si une fenêtre reste ouverte

    alias: "Notification : Fenêtre restée ouverte"
    trigger:
      - platform: state
        entity_id: binary_sensor.capteur_fenetre_cuisine_contact
        to: "on"
        for:
          minutes: 10
    action:
      - service: notify.mobile_app_votre_telephone
        data:
          title: "Attention"
          message: "La fenêtre de la cuisine est ouverte depuis plus de 10 minutes !"
    

    Remplace les noms d’entités par ceux de tes capteurs dans Home Assistant.

    NOUS A7Z : appairer une prise connectée Zigbee et l’utiliser comme répéteur dans Home Assistant

    NOUS A7Z : appairer une prise connectée Zigbee et l’utiliser comme répéteur dans Home Assistant

    La prise NOUS A7Z fait trois choses à la fois : elle mesure la consommation de l’appareil branché, permet de l’allumer ou l’éteindre à distance, et étend la portée de ton réseau Zigbee en servant de répéteur. Voici comment l’intégrer dans Zigbee2MQTT et Home Assistant.


    Préparation et branchement

    La prise fonctionne sur secteur, aucune pile n’est nécessaire.

    Branche-la sur une prise murale, idéalement à mi-chemin entre ton dongle Zigbee et tes capteurs les plus éloignés pour optimiser son rôle de répéteur. Une fois alimentée, la LED intégrée au bouton clignote lentement : la prise est prête à être appairée.


    Appairage dans Zigbee2MQTT

    1. Ouvre l’interface web de Zigbee2MQTT.
    2. Clique sur Permit join (en haut à droite).
    3. Si la LED ne clignote pas déjà rapidement, maintiens le bouton physique enfoncé environ 5 secondes jusqu’à ce qu’elle le fasse, puis relâche.
    4. Zigbee2MQTT détecte la prise automatiquement – elle apparaît sous la marque Nous ou Tuya selon la version du firmware.
    5. Renomme-la de façon explicite (ex : Prise Machine à Laver ou Répéteur Salon) et coche la case pour synchroniser le nom avec Home Assistant.

    Rôle de répéteur dans le maillage Zigbee

    Dès l’appairage effectué, la prise commence automatiquement à router le trafic Zigbee. Les capteurs à proximité peuvent s’y connecter plutôt que de joindre directement le dongle, ce qui améliore la stabilité de l’ensemble du réseau.

    Laisse le réseau entre 24 et 48 heures pour se stabiliser. Tu peux ensuite visualiser les connexions dans l’onglet Schéma (Map) de Zigbee2MQTT.


    Entités disponibles dans Home Assistant

    La NOUS A7Z expose plusieurs entités dans Home Assistant :

    • switch.prise_votre_nom – allume ou éteint l’appareil branché
    • sensor.power – puissance instantanée en Watts (W)
    • sensor.energy – consommation cumulée en kWh, à ajouter dans le panneau Énergie de Home Assistant pour le suivi des coûts
    • sensor.current – intensité en Ampères (A)
    • sensor.voltage – tension en Volts (V)

    Exemple : notification de fin de cycle machine

    L’entité sensor.power permet de détecter automatiquement la fin d’un cycle de lave-linge ou lave-vaisselle. L’automatisation ci-dessous envoie une notification quand la puissance passe sous 3 W pendant 5 minutes consécutives – ce qui correspond à la fin du cycle.

    alias: "Machine à laver : Notification fin de cycle"
    trigger:
      - platform: numeric_state
        entity_id: sensor.prise_machine_a_laver_power
        below: 3
        for:
          minutes: 5
    condition:
      - condition: state
        entity_id: switch.prise_machine_a_laver
        state: "on"
    action:
      - service: notify.mobile_app_votre_telephone
        data:
          title: "Domotique"
          message: "La machine à laver a terminé, tu peux étendre le linge !"
    

    Remplace sensor.prise_machine_a_laver_power et switch.prise_machine_a_laver par les noms exacts de tes entités dans Home Assistant, et mobile_app_votre_telephone par le nom de ton application mobile.

    Connecter des appareils Zigbee à Home Assistant avec Zigbee2MQTT et Mosquitto

    Connecter des appareils Zigbee à Home Assistant avec Zigbee2MQTT et Mosquitto

    Article de la série « Mon ordinateur Ubuntu » 
    Actions et articles créés avec l’aide de Claude.ai et 100% testé et ajusté par moi.

    Tu veux piloter une ampoule, une télécommande ou un capteur Zigbee depuis Home Assistant ? Ce tutoriel te guide pas à pas pour mettre en place la chaîne complète : Mosquitto comme broker MQTT, Zigbee2MQTT comme passerelle, et Home Assistant comme cerveau de ta domotique.


    Ce que tu vas mettre en place

    Les appareils Zigbee ne parlent pas directement à Home Assistant. Il faut une chaîne de traduction :

    1. Le dongle Zigbee reçoit les messages de tes appareils Zigbee
    2. Zigbee2MQTT traduit ces messages en MQTT
    3. Mosquitto joue le rôle de boîte aux lettres : il reçoit et redistribue les messages MQTT
    4. Home Assistant lit ces messages et crée automatiquement les entités correspondantes

    Chaque composant est installé comme un container Docker, selon le même protocole que les autres services de ta stack.


    Prérequis


    Étape 1 – Identifier le port USB du dongle

    Branche le dongle Sonoff MG21, puis lance cette commande :

    ls /dev/serial/by-id/
    

    Tu obtiens quelque chose comme :

    usb-SONOFF_SONOFF_Dongle_Lite_MG21_c85bc664b7a3ef1188de4cbd61ce3355-if00-port0
    

    Note ce nom exact, tu en auras besoin à l’étape 3.


    Étape 2 – Identifier un port disponible pour Zigbee2MQTT

    Zigbee2MQTT expose une interface web. Par défaut il utilise le port 8080, mais ce port est peut-être déjà pris par un autre container. Vérifie avec :

    bash

    sudo docker ps --format "table {{.Names}}\t{{.Ports}}"
    

    Si le port 8080 est occupé (par Stirling-PDF par exemple), utilise le port 8081. Retiens le port disponible, tu en auras besoin à l’étape 3.


    Étape 3 – Installer Mosquitto

    Créer les répertoires

    sudo mkdir -p /home/USER/docker/mosquitto/config
    sudo mkdir -p /home/USER/docker/mosquitto/data
    sudo mkdir -p /home/USER/docker/mosquitto/log
    

    Créer le fichier de configuration

    sudo nano /home/USER/docker/mosquitto/config/mosquitto.conf
    

    Colle exactement ce contenu, sans rien d’autre avant ni après :

    listener 1883
    allow_anonymous true
    persistence true
    persistence_location /mosquitto/data/
    log_dest file /mosquitto/log/mosquitto.log
    

    allow_anonymous true permet la connexion sans authentification. Ce n’est pas un problème car le port 1883 n’est pas exposé vers l’extérieur – il reste confiné au réseau local.

    Créer la stack dans Portainer

    Dans Portainer, crée une stack « mosquitto » avec ce YAML :

    services:
      mosquitto:
        container_name: mosquitto
        image: eclipse-mosquitto:latest
        volumes:
          - /home/USER/docker/mosquitto/config:/mosquitto/config
          - /home/USER/docker/mosquitto/data:/mosquitto/data
          - /home/USER/docker/mosquitto/log:/mosquitto/log
        ports:
          - "1883:1883"
        restart: unless-stopped
        environment:
          TZ: Europe/Paris
    

    Corriger les permissions du dossier log

    Le container Mosquitto tourne avec l’utilisateur interne mosquitto (UID 1883). Sans cette correction, il ne peut pas écrire ses logs :

    sudo chown -R 1883:1883 /home/USER/docker/mosquitto/log
    

    Redémarre le container depuis Portainer. Vérifie les logs avec :

    sudo docker logs mosquitto
    

    Tu dois voir Restored 0 base messages et aucune erreur.

    Sauvegarder le YAML

    sudo nano /home/USER/docker/mosquitto/docker-compose.yml
    # coller le YAML
    sudo chown USER:USER /home/USER/docker/mosquitto/docker-compose.yml
    

    Étape 4 – Installer Zigbee2MQTT

    Créer le répertoire

    sudo mkdir -p /home/USER/docker/zigbee2mqtt/data
    

    Créer la stack dans Portainer

    Dans Portainer, crée une stack « zigbee2mqtt » avec ce YAML. Remplace IDENTIFIANT_DU_DONGLE par le nom exact récupéré à l’étape 1, et PORT_EXTERNE par le port disponible identifié à l’étape 2 (8080 ou 8081) :

    services:
      zigbee2mqtt:
        container_name: zigbee2mqtt
        image: koenkk/zigbee2mqtt:latest
        volumes:
          - /home/USER/docker/zigbee2mqtt/data:/app/data
          - /run/udev:/run/udev:ro
        ports:
          - "PORT_EXTERNE:8080"
        environment:
          TZ: Europe/Paris
        devices:
          - /dev/serial/by-id/IDENTIFIANT_DU_DONGLE:/dev/ttyACM0
        restart: unless-stopped
    

    Point critique : la ligne devices: doit contenir le chemin exact du dongle. C’est le point le plus sensible de l’installation.

    Sauvegarder le YAML

    sudo nano /home/USER/docker/zigbee2mqtt/docker-compose.yml
    # coller le YAML
    sudo chown USER:USER/home/ald/docker/zigbee2mqtt/docker-compose.yml
    

    Après démarrage, Zigbee2MQTT est accessible via http://IP_DU_PC:PORT_EXTERNE. Une page d’onboarding s’affiche – c’est normal, c’est le premier démarrage.

    Compléter l’onboarding

    Sur la page d’onboarding, sélectionne ton dongle dans la liste « Devices found » et clique sur Submit sans modifier les autres valeurs. Zigbee2MQTT génère alors automatiquement sa configuration.

    Modifier le fichier de configuration

    Après l’onboarding, modifie le fichier de configuration généré :

    sudo nano /home/USER/docker/zigbee2mqtt/data/configuration.yaml
    

    Apporte ces modifications, sans toucher au reste (network_key, pan_id, channel…) :

    Ligne à trouverRemplacer par
    server: mqtt://localhost:1883server: mqtt://IP_DU_PC:1883
    serial: {}serial:
      port: /dev/ttyACM0
    frontend: enabled: falsefrontend: enabled: true
    homeassistant: enabled: falsehomeassistant: enabled: true
    onboarding: trueonboarding: false

    Redémarre le container depuis Portainer. Vérifie les logs :

    sudo docker logs zigbee2mqtt
    

    Tu dois voir Zigbee2MQTT started! et Connected to MQTT server.


    Étape 5 – Connecter Home Assistant à MQTT

    Dans Home Assistant : Paramètres > Appareils et services > Ajouter une intégration > MQTT

    Remplis les champs :

    • Broker : IP_DU_PC
    • Port : 1883
    • Nom d’utilisateur et mot de passe : laisser vides

    Clique sur Valider. Si la connexion réussit, l’intégration MQTT apparaît dans ta liste de services.

    Zigbee2MQTT et Home Assistant se découvrent alors automatiquement via MQTT Discovery.


    Étape 6 – Appairer un premier appareil pour vérifier

    C’est le test de tout ce qui précède ! Dans l’interface Zigbee2MQTT (http://IP_DU_PC:PORT_EXTERNE) :

    1. Clique sur Autoriser l’appairage – le mode appairage est actif pendant 3 minutes
    2. Mets ton appareil en mode appairage selon la procédure du fabricant (pour une ampoule Lidl : allumer et éteindre rapidement 3 fois)
    3. L’appareil apparaît dans Zigbee2MQTT

    Va ensuite dans Home Assistant : Paramètres > Appareils et services > MQTT. Ton appareil doit être visible et contrôlable.

    Note sur les ampoules Zigbee : une ampoule Zigbee doit rester alimentée en permanence pour rester joignable sur le réseau. Si tu coupes le courant via l’interrupteur mural, elle disparaît du réseau. La bonne pratique est de ne plus utiliser l’interrupteur physique et de contrôler l’ampoule uniquement via Home Assistant ou une télécommande Zigbee.


    Ce que tu as maintenant

    • Un broker MQTT (Mosquitto) qui tourne en container Docker
    • Une passerelle Zigbee (Zigbee2MQTT) connectée à ton dongle et à Mosquitto
    • Home Assistant qui découvre automatiquement tous tes appareils Zigbee
    • Une base solide pour ajouter d’autres appareils : capteurs de température, détecteurs d’ouverture, interrupteurs Zigbee…

    La prochaine étape : créer des automatisations pour que tes appareils Zigbee travaillent ensemble.

    Intégrer une caméra Avidsen HomeCam 3PTZ dans Home Assistant via Tuya

    Intégrer une caméra Avidsen HomeCam 3PTZ dans Home Assistant via Tuya

    Il y avait une promo dans ma grande surface locale et La caméra Avidsen HomeCam 3PTZ (réf. 127165) était à 29.90 €. Je me suis dit que c’était l’occasion de tester l’utilisation d’une caméra de surveillance chez moi. Cette caméra est compatible avec l’écosystème Tuya. En passant par l’application Smart Life plutôt que l’app Avidsen native, tu peux l’intégrer directement dans Home Assistant et centraliser sa gestion avec le reste de ta domotique.


    Ce qu’il te faut

    • La caméra Avidsen HomeCam 3PTZ
    • Une prise de courant à proximité et un réseau Wi-Fi 2,4 GHz
    • Un smartphone avec l’application Smart Life (Tuya)
    • Un ordinateur pour créer le compte développeur Tuya
    • Une instance Home Assistant fonctionnelle

    Optionnel : une carte microSD classe 10 (ou U3), de préférence certifiée « Endurance », pour l’enregistrement local. Les caméras de sécurité réécrivent en boucle et usent rapidement les cartes standard.


    1. Installer Smart Life et connecter la caméra

    Télécharge l’application Tuya Smart Life sur ton smartphone. Crée un compte, puis ajoute la caméra en suivant les instructions de l’app : elle te demandera le mot de passe de ton Wi-Fi 2,4 GHz. Une fois connectée, tu peux piloter la caméra depuis n’importe où via l’application.

    Utilise Smart Life plutôt que l’application Avidsen : elle offre plus de fonctionnalités et surtout elle est compatible avec Home Assistant.


    2. Créer un compte développeur Tuya IoT

    Depuis les dernières versions de Home Assistant, l’intégration Tuya officielle nécessite un compte développeur gratuit.

    1. Rends-toi sur iot.tuya.com depuis ton ordinateur.
    2. Crée un compte – utilise le même pays que celui configuré dans Smart Life.
    3. Une fois connecté, va dans Cloud > Cloud Project > Cloud Project Management, puis clique sur Next.
    1. Remplis le formulaire :
      • Project Name : Home Assistant
      • Industry : Smart Home
      • Development Method : Smart Home
      • Data Center : Central Europe Data Center (pour la France)
    2. Clique sur Create, puis sur la page suivante laisse les API par défaut et clique sur Authorize.

    3. Récupérer tes identifiants et lier Smart Life au projet

    Sur la page de ton projet (onglet Overview), note ces deux informations – tu en auras besoin plus tard :

    • Access ID / Client ID
    • Access Secret / Client Secret

    Ensuite, lie ton application Smart Life au projet :

    1. Dans ton projet, clique sur l’onglet Devices, puis sur Link Tuya App Account.
    2. Clique sur Add App Account – un QR code s’affiche.
    1. Sur ton smartphone, ouvre Smart Life, tape sur le « + » en haut à droite, puis sur Scanner.
    1. Scanne le QR code affiché sur ton ordinateur et valide sur le téléphone. Pour faire ça, il faut que tu ouvres l’application Smart Life dans ton téléphone. Tu te mets sur l’onglet Accueil (l’icône de maison en bas à gauche). Clique sur le petit bouton « + » tout en haut à droite de l’écran : un petit menu déroulant va s’ouvrir. clique sur l’icône de Scanner de QR Code.
    1. Ta caméra apparaît maintenant dans la liste des appareils de la plateforme Tuya.

    4. Activer l’intégration dans Home Assistant

    1. Dans Home Assistant, va dans Paramètres > Appareils et services.
    2. Clique sur Ajouter l’intégration et cherche Tuya.
    3. Remplis le formulaire avec ton Access ID, ton Access Secret, et ton code utilisateur Smart Life.

    Le code utilisateur se trouve dans l’app Smart Life : icône hexagone en haut à droite > Compte et Sécurité > Code Utilisateur. C’est un code court, respecte bien la casse.

    1. Valide, scanne le QR code qui s’affiche, et confirme à nouveau.

    Home Assistant importe automatiquement ta caméra. Tu peux accéder au flux vidéo et aux réglages directement depuis ton tableau de bord.


    Pour aller plus loin

    Contrôle PTZ depuis Home Assistant L’intégration Tuya affiche le flux vidéo mais ne crée pas toujours les contrôles de rotation. Tu peux y remédier avec des scripts YAML ou en installant la carte WebRTC Camera via HACS.

    Alertes et notifications Avec l’application Home Assistant Companion sur ton téléphone, tu peux créer une automatisation YAML qui se déclenche sur détection de mouvement ou de son – et envoie une notification actionnable directement sur ton mobile.

    Enregistrement vidéo La carte microSD gérée par Smart Life reste la solution la plus fiable pour l’enregistrement continu ou sur détection, en haute définition. Home Assistant gère les alertes ; Smart Life gère l’historique vidéo.

    Mettre à jour Ubuntu vers la dernière version stable en ligne de commande

    Mettre à jour Ubuntu vers la dernière version stable en ligne de commande

    Ubuntu propose un outil officiel pour passer d’une version à la suivante sans tout effacer. Ce guide te montre comment faire, étape par étape, depuis le terminal.


    Étape 1 : Sauvegarder tes données (recommandé)

    Avant toute mise à niveau majeure du système, sauvegarde tes fichiers importants – documents, photos, fichiers de configuration – sur un disque externe ou dans le cloud.


    Étape 2 : Mettre à jour le système actuel

    Ta version actuelle d’Ubuntu doit être totalement à jour avant de lancer la mise à niveau.

    Ouvre ton terminal (Ctrl + Alt + T) et lance cette commande :

    sudo apt update && sudo apt dist-upgrade -y && sudo apt autoremove -y
    

    Voici ce que fait chacune des trois parties :

    • apt update : actualise la liste des paquets disponibles (un « paquet », c’est l’équivalent d’une application ou d’un composant système sous Linux).
    • dist-upgrade : installe les mises à jour en gérant intelligemment les changements de dépendances (les dépendances, ce sont les composants dont un logiciel a besoin pour fonctionner).
    • autoremove : supprime les anciens paquets devenus inutiles.

    Une fois terminé, redémarre ton ordinateur pour appliquer les changements – notamment si le noyau Linux (le coeur du système) a été mis à jour :

    sudo reboot
    

    Étape 3 : Configurer le type de mise à niveau souhaité

    Ubuntu doit savoir quel type de version tu recherches. Ouvre le fichier de configuration avec cette commande :

    sudo nano /etc/update-manager/release-upgrades
    

    Repère la ligne qui commence par Prompt=. Tu as deux options :

    Prompt=lts – recommandé

    Te met à jour uniquement vers la prochaine version LTS (Long Term Support, support à long terme). Par exemple, de la 22.04 LTS à la 24.04 LTS, soit un changement tous les 2 ans environ.

    • Sécurité : maximale, tu reçois toutes les mises à jour de sécurité pour ta version actuelle.
    • Stabilité : maximale, tu changes de version du système rarement, ce qui réduit le risque de casser tes logiciels ou ta configuration.

    Prompt=normal

    Te propose toutes les versions stables, y compris les versions intermédiaires sorties tous les 6 mois.

    • Tu seras obligé de faire une mise à niveau majeure tous les 6 mois, car ces versions intermédiaires ne sont maintenues que pendant 9 mois. Passé ce délai, tu te retrouves avec un système obsolète et non sécurisé.
    • Changer de version deux fois par an augmente le risque de rencontrer des bugs ou des incompatibilités matérielles.

    Modifie si nécessaire, puis sauvegarde avec Ctrl + O (puis Entrée) et quitte avec Ctrl + X.


    Étape 4 : Lancer la mise à niveau

    Maintenant que tout est prêt, lance l’outil officiel de mise à niveau d’Ubuntu :

    sudo do-release-upgrade
    

    Si aucune mise à niveau n’est détectée

    Les versions LTS ne proposent parfois la mise à jour automatique qu’après la sortie de leur première version corrective (par exemple, la 24.04.1 plutôt que la 24.04). Dans ce cas, tu peux forcer la recherche avec l’option -d :

    sudo do-release-upgrade -d
    

    ⚠️ Attention : l’option -d donne accès aux versions en accès anticipé, pas encore totalement stabilisées. À n’utiliser que si tu sais ce que tu fais et que tu as bien sauvegardé tes données au préalable.


    Étape 5 : Suivre le processus et patienter

    Le terminal t’affiche un résumé des changements prévus – paquets à installer, paquets à supprimer, taille du téléchargement – et te demande de confirmer avec o (pour Oui).

    Pendant tout le processus :

    • Ne ferme pas le terminal.
    • Ne coupe pas ta connexion internet.
    • Si le système te demande si tu veux conserver tes fichiers de configuration modifiés ou installer les versions des nouveaux paquets, appuie sur Entrée pour garder le choix par défaut – c’est généralement la bonne option.

    Cas particulier : connexion à distance via SSH

    Si tu gères l’ordinateur à distance via SSH, do-release-upgrade ouvre automatiquement un port de secours (généralement le port 1022) en cas de coupure de connexion. Suis simplement les instructions affichées à l’écran.

    Une fois le processus terminé, le terminal t’invite à redémarrer. Tu peux ensuite vérifier ta nouvelle version avec :

    bash

    lsb_release -a
    

    Félicitations, tu es sur la nouvelle version stable d’Ubuntu !

    Fail2ban pour Nginx Proxy Manager (NPM)

    Fail2ban pour Nginx Proxy Manager (NPM)

    Article de la série « Mon ordinateur Ubuntu » 

    Contexte

    Environnement cible : un ordinateur Ubuntu sur lequel sont installés Nginx Reverse Proxy (NPM), Portainer, Home Assistant et Stirling PDF. Tout est déployé sous forme de containers Docker avec des chemins absolus (Bind Mounts), sans volumes nommés. Stirling PDF et Home Assistant sont accessibles via des URL externes, ce qui impose une sécurisation rigoureuse.

    L’objectif est d’ajouter Fail2Ban pour passer d’une sécurité passive (certificats Let’s Encrypt) à une sécurité active.

    Qu’est-ce que Fail2Ban ?

    Les certificats Let’s Encrypt garantissent que la connexion est chiffrée (personne ne peut lire ce qui transite). Fail2Ban agit comme un videur à l’entrée.

    Contre les attaques par brute force – sa mission principale. Si quelqu’un tente de deviner un mot de passe sur une page d’authentification, Fail2Ban détecte les échecs répétés dans les logs et bannit l’IP au niveau du pare-feu (iptables).

    Contre les bots de scan (DoS léger) – il bloque les robots qui scannent le serveur trop rapidement à la recherche de vulnérabilités.

    Contre la recherche de fichiers sensibles – il bannit les IPs qui tentent d’accéder à des dossiers inexistants mais critiques (.env, wp-config.php, /admin).

    Résumé : HTTPS garantit que le tuyau est sécurisé, mais pas que la personne au bout du tuyau est autorisée à entrer. Le HTTPS empêche l’espionnage sur le Wi-Fi public. Fail2Ban empêche l’attaquant de frapper 10 000 fois à la porte.

    Vérifier le format des logs NPM (étape préalable)

    Avant toute configuration, il faut s’assurer que NPM enregistre les vraies IPs publiques des visiteurs dans ses logs, et non l’IP interne du réseau Docker.

    Commande de vérification – ouvre un terminal sur Ubuntu et inspecte un fichier de log :

    cat /home/USER/docker/nginx-proxy-manager/data/logs/proxy-host-1_access.log | head -20
    

    Cherche le champ [Client X.X.X.X] dans chaque ligne de log.

    ✓  Si tu vois des IPs publiques (ex: 205.210.x.x, 45.84.x.x) dans [Client …] : NPM transmet déjà les bonnes IPs, aucune configuration supplémentaire n’est nécessaire.

    ⚠  Si tu vois des IPs internes Docker (ex: 172.18.x.x) dans [Client …] : Fail2Ban sera inefficace et risque de bannir ta passerelle Docker. Ajoute les proxy_set_header dans l’onglet Advanced de chaque Proxy Host dans NPM (voir ci-dessous).

    Note importante sur les IPs dans les logs NPM – le champ [Sent-to X.X.X.X] contient l’IP interne de ta machine Linux (destination du trafic) : c’est normal. Le champ [Client X.X.X.X] est la seule IP qui compte pour Fail2Ban (source du trafic entrant).

    Si les IPs internes sont présentes – configuration dans NPM – dans l’interface NPM, pour chaque Proxy Host (Stirling PDF, Home Assistant…), onglet Advanced, zone Custom Nginx Configuration, ajoute :

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    

    Dans mon cas, les logs affichent déjà des IPs publiques. Cette configuration n’est pas nécessaire.

    Installer Fail2Ban

    Créer le dossier et le fichier docker-compose

    mkdir ~/docker/fail2ban
    
    cd ~/docker/fail2ban
    
    nano docker-compose.yml
    

    ⚠  Pour que Fail2Ban puisse surveiller NPM, il doit avoir accès aux fichiers de logs générés dans le dossier /data/logs de NPM.

    Contenu du docker-compose.yml :

    services:
    
      fail2ban:
    
        image: crazymax/fail2ban:latest
    
        container_name: fail2ban
    
        network_mode: host
    
        cap_add:
    
          - NET_ADMIN
    
          - NET_RAW
    
        environment:
    
          - TZ=Europe/Paris
    
          - F2B_LOG_TARGET=/data/fail2ban.log
    
          - F2B_LOG_LEVEL=INFO
    
          - F2B_DB_PURGE_AGE=28d
    
        volumes:
    
          # Logs de Nginx a surveiller (lecture seule)
    
          - /home/USER/docker/nginx-proxy-manager/data/logs:/data/nginx/logs:ro
    
          # Dossier central Fail2Ban (config, db et log)
    
          - /home/USER/docker/fail2ban:/data
    
          # Logs systeme (lecture seule)
    
          - /var/log:/var/log:ro
    
        restart: always
    

      Pourquoi network_mode: host ? En mode host, Fail2Ban partage la pile réseau de la machine Ubuntu. C’est indispensable pour qu’il voie les vraies IPs sources et puisse agir sur iptables.

      Pourquoi monter les logs dans /data/nginx/logs ? L’image crazymax/fail2ban a un système de fichiers en lecture seule dans certains répertoires comme /var/log/nginx. Monter les logs dans /data/nginx/logs (qui est le volume /data accessible en écriture) évite cette erreur au démarrage.

      Structure des dossiers de configuration

      L’image crazymax/fail2ban attend ses fichiers de configuration dans /data/ (dans le conteneur), ce qui correspond à /home/USER/docker/fail2ban/ sur Ubuntu.

      Avant de déployer, crée la structure manuellement :

      mkdir -p /home/USER/docker/fail2ban/action.d
      
      mkdir -p /home/USER/docker/fail2ban/filter.d
      
      mkdir -p /home/USER/docker/fail2ban/jail.d
      

      Structure finale sur Ubuntu :

      /home/USER/docker/fail2ban/
      ├── action.d/
      │   └── docker-action.conf
      ├── filter.d/
      │   └── nginx-404.conf
      ├── jail.d/
      │   └── jail.local
      └── fail2ban.log    (cree automatiquement au demarrage)
      

      ⚠  Ne crée pas de sous-dossier ‘config/’ ou ‘data/’ supplémentaire. Les dossiers action.d, filter.d et jail.d doivent être directement dans /home/USER/docker/fail2ban/.

      Note sur les permissions – si les dossiers ont été créés par Docker (au premier démarrage du conteneur), ils appartiennent à root. Utilise sudo pour créer les fichiers, ou reprends la propriété du dossier :

      sudo chown -R USER:USER/home/USER/docker/fail2ban/
      

      Configuration de Fail2Ban

      Fichier action.d/docker-action.conf

      Ce fichier définit les règles iptables appliquées lors d’un bannissement. Il crée une chaîne dédiée f2b-npm-docker dans la table FORWARD.

      Crée le fichier /home/USER/docker/fail2ban/action.d/docker-action.conf :

      sudo nano /home/USER/docker/fail2ban/action.d/docker-action.conf
      

      Contenu :

      [Definition]
      
      actionstart = iptables -N f2b-npm-docker
      
                    iptables -A f2b-npm-docker -j RETURN
                    iptables -I FORWARD -p tcp -m multiport --dports 0:65535 -j f2b-npm-docker
      
      actionstop  = iptables -D FORWARD -p tcp -m multiport --dports 0:65535 -j f2b-npm-docker
      
                    iptables -F f2b-npm-docker
                    iptables -X f2b-npm-docker
      
      actioncheck = iptables -n -L FORWARD | grep -q 'f2b-npm-docker[ \t]'
      actionban   = iptables -I f2b-npm-docker -s <ip> -j DROP
      actionunban = iptables -D f2b-npm-docker -s <ip> -j DROP
      

      Fichier jail.d/jail.local

      Ce fichier définit les règles de bannissement et lie les filtres aux logs.

      Crée le fichier /home/USER/docker/fail2ban/jail.d/jail.local :

      sudo nano /home/USER/docker/fail2ban/jail.d/jail.local
      

      Contenu :

      [DEFAULT]
      
      # Temps de bannissement (1h)
      bantime  = 1h
      
      # Fenetre d'observation (10 min)
      findtime = 10m
      
      # Nombre d'erreurs avant bannissement
      maxretry = 5
      
      # Action : utilise le fichier docker-action.conf
      action = docker-action
      
      # --- JAIL POUR AUTHENTIFICATION NGINX ---
      
      [nginx-http-auth]
      enabled  = true
      filter   = nginx-http-auth
      
      # Surveille les logs d'erreur de NPM
      logpath  = /data/nginx/logs/proxy-host-*_error.log
      
      # --- JAIL ANTI-BOTS (erreurs 404/401/403) ---
      [nginx-404]
      enabled  = true
      port     = http,https
      filter   = nginx-404
      logpath  = /data/nginx/logs/proxy-host-*_access.log
      # Plus severe : 30 erreurs en 1 minute = banni 24h
      maxretry = 30
      findtime = 1m
      bantime  = 24h
      

      Fichier filter.d/nginx-404.conf

      Ce filtre indique à Fail2Ban quoi chercher dans les logs d’accès. Le format des logs NPM est différent du format Nginx standard – le regex doit en tenir compte.

      Format réel d’une ligne de log NPM :

      [11/May/2026:08:30:08 +0000] – 401 401 – GET https pdf.domaine.com « / » [Client 205.210.31.135] …

      Crée le fichier /home/USER/docker/fail2ban/filter.d/nginx-404.conf :

      sudo nano /home/USER/docker/fail2ban/filter.d/nginx-404.conf
      

      Contenu :

      [Definition]
      
      # Regex adapte au format de log NPM (champ [Client X.X.X.X])
      failregex = ^\[.*\] - \d+ \d+ - \w+ https? \S+ "\S+" \[Client <HOST>\] .*(404|401|403)
      ignoreregex =
      

      Le marqueur <HOST> est la variable Fail2Ban qui capture l’adresse IP – elle correspond au contenu du champ [Client …] dans les logs NPM.

      ignoreregex = avec rien après le signe égal signifie « aucune ligne à ignorer ». Cette ligne doit être présente même vide, sinon Fail2Ban peut générer une erreur au démarrage.

      Déploiement dans Portainer

      1. Dans Portainer, clique sur ton environnement « local », puis va dans l’onglet « Stacks » à gauche.
      2. Clique sur le bouton « + Add stack ».
      3. Donne-lui un nom : fail2ban.
      4. Dans la zone « Web editor », copie et colle le contenu du docker-compose.yml.
      5. Clique sur « Deploy the stack ». Docker télécharge l’image (1 à 2 minutes selon la connexion).

      Une fois la stack déployée, vérifie que le fichier fail2ban.log a bien été créé dans /home/USER/docker/fail2ban/. S’il n’apparaît pas, c’est souvent une question de permissions (le conteneur doit avoir le droit d’écrire dans ce dossier).

      Vérification

      Étape 1 – Vérifier que les logs sont accessibles

      Ouvre un terminal sur Ubuntu et tape :

      docker exec -it fail2ban ls /data/nginx/logs
      

      ✓  Si tu vois la liste de tes fichiers .log (en particulier proxy-host-*_access.log et proxy-host-*_error.log), le pont entre Fail2Ban et les logs NPM fonctionne.

      Étape 2 – Vérifier les jails actives

      Dans Portainer, ouvre la console (Exec) du conteneur fail2ban et tape :

      fail2ban-client status
      

      ✓  Tu dois voir apparaître deux jails : nginx-http-auth et nginx-404. C’est bien le cas pour moi :

      Résumé des sources de logs

      Type de logChemin dans logpathCe qu’il contient
      Erreurs d’authentification/data/nginx/logs/proxy-host-*_error.logTentatives de mots de passe ratés
      Visites (404/401/403)/data/nginx/logs/proxy-host-*_access.logBots cherchant des fichiers inexistants
      Log Fail2Ban/data/fail2ban.logCorrespond au volume /home/USER/docker/fail2ban:/data

      Commandes utiles

      Supervision

      Status général des jails :

      docker exec -t fail2ban fail2ban-client status

      Status détaillé d’une jail (ex: nginx-404) :

      docker exec -t fail2ban fail2ban-client status nginx-404

      Liste de toutes les IPs bannies :

      docker exec -t fail2ban fail2ban-client banned

      Recherche des requêtes d’une IP dans les logs :

      grep <IP-ADRESSE> /home/USER/docker/nginx-proxy-manager/data/logs/proxy-host-*_access.log

      Actions manuelles

      Bannir manuellement une IP :

      docker exec -t fail2ban fail2ban-client set nginx-404 banip <IP>

      Lever manuellement un bannissement :

      docker exec -t fail2ban fail2ban-client set nginx-404 unbanip <IP>

      Informations

      Version de Fail2Ban :

      docker exec -t fail2ban fail2ban-client version

      Aide complète :

      docker exec -t fail2ban fail2ban-client –help

      Rendons à César

      Pour concevoir ce processus d’installation et rédiger cet article, je me suis aidée de :

      • https://wiki.blablalinux.be/fr/docker-compose-fail2ban
      • l’IA Gemini (gemini.google.com)
      • l’IA Claude (claude.ai)

      100% testé et ajusté par moi.

      Installer Home Assistant sur Ubuntu avec Docker et Portainer

      Installer Home Assistant sur Ubuntu avec Docker et Portainer

      Article de la série « Mon ordinateur Ubuntu » 
      Actions et articles créés avec l’aide de Claude.ai et 100% testé et ajusté par moi.

      Home Assistant est une plateforme domotique open source puissante. Il en existe plusieurs variantes d’installation. Cet article explique comment installer la variante « Container » sur un ordinateur Ubuntu qui fait déjà tourner d’autres services Docker, avec un accès sécurisé depuis l’extérieur via Nginx Proxy Manager.

      Quelle variante de Home Assistant choisir ?

      Il existe trois grandes variantes :

      • HA OS – remplace complètement l’OS de la machine. À réserver à un appareil dédié (Raspberry Pi par exemple).
      • HA Supervised – donne accès au magasin d’add-ons officiel, mais officiellement supporté sur Debian uniquement. Risques de friction sur Ubuntu.
      • HA Container – s’installe comme n’importe quel container Docker. Pas d’accès au magasin d’add-ons natif, mais les add-ons les plus courants ont un équivalent en container Docker séparé. C’est la solution la plus cohérente si tu as déjà un PC Ubuntu avec Docker et Portainer.

      Ce dont tu as besoin avant de commencer

      Étape 1 – Créer les répertoires

      Sur le PC Linux, ouvre un terminal et crée les répertoires qui accueilleront les données de Home Assistant :

      sudo mkdir /home/USER/docker/home-assistant/
      sudo mkdir /home/USER/docker/home-assistant/config/
      

      C’est cohérent avec l’organisation décrite dans Docker et Portainer : regrouper les données. Toutes les données de HA seront dans ce dossier, et donc automatiquement couvertes par ta sauvegarde rclone.

      Étape 2 – Déployer la stack dans Portainer

      Connecte-toi à Portainer (https://TON-IP:9443), clique sur ton environnement « local », puis « Stacks » dans le menu gauche. Clique sur « + Add stack » et donne-lui le nom home-assistant.

      Dans la zone « Web editor », colle ce YAML :

      services:
        home-assistant:
          container_name: home-assistant
          image: "ghcr.io/home-assistant/home-assistant:stable"
          volumes:
            - /home/USER/docker/home-assistant/config:/config
            - /etc/localtime:/etc/localtime:ro
            - /run/dbus:/run/dbus:ro
          restart: unless-stopped
          privileged: true
          network_mode: host
          environment:
            TZ: Europe/Paris
      

      Quelques points importants sur ce YAML :

      • network_mode: host – HA utilise directement le réseau du PC, sans isolation. C’est recommandé par le projet HA pour la découverte automatique des appareils sur le réseau local.
      • privileged: true – nécessaire pour accéder au matériel (Bluetooth, USB, etc.).
      • /run/dbus:/run/dbus:ro – permet à HA de communiquer avec les services système, utile pour Bluetooth notamment.
      • Le volume letsencrypt n’est pas nécessaire ici – c’est Nginx Proxy Manager qui gère les certificats SSL.

      Clique sur « Deploy the stack ». Au bout de quelques secondes, HA est accessible sur ton réseau local via http://TON-IP:8123.

      Étape 3 – Accès externe via Nginx Proxy Manager

      Ouvrir le port 8123

      Dans l’interface de gestion de ton routeur, ajoute une règle de redirection de port :

      • Port externe : 8123
      • IP locale de destination : l’IP fixe de ton PC Linux
      • Port interne : 8123
      • Protocole : TCP
      Créer le proxy host dans NPM

      Connecte-toi à NPM (http://TON-IP:81), va dans « Proxy Hosts » et clique sur « Add Proxy Host ».

      Onglet « Details » :

      • Domain Names : ha.TON-DOMAINE.com
      • Scheme : http
      • Forward Name/IP : 127.0.0.1
      • Forward Port : 8123
      • Coche « Block Common Exploits » et « Websockets Support »

      Onglet « SSL » :

      • SSL Certificate : « Request a new SSL Certificate »
      • Coche « Force SSL », « HTTP/2 Support » et « HSTS Enabled »

      Clique sur « Save ».

      Le point spécifique à Home Assistant – configuration.yaml

      Contrairement aux autres containers, HA intègre une protection contre les accès via proxy non déclarés. Sans configuration supplémentaire, tu obtiendras une erreur 400 (Bad Request) en accédant via https://ha.TON-DOMAINE.com.

      Il faut déclarer NPM comme proxy de confiance. Ouvre le fichier de configuration :

      sudo nano /home/USER/docker/home-assistant/config/configuration.yaml
      

      Et ajoute ces lignes à la fin :

      http:
        use_x_forwarded_for: true
        trusted_proxies:
          - 127.0.0.1
          - 172.16.0.0/12
      

      Attention à l’indentation : 2 espaces par niveau, pas de tabulations. YAML est strict là-dessus.

      Redémarre le container HA dans Portainer. HA est maintenant accessible depuis l’extérieur via https://ha.TON-DOMAINE.com.

      Étape 4 – Premier démarrage et assistant de configuration

      Au premier accès, HA t’ouvre automatiquement l’assistant de démarrage. Tu y crées ton compte administrateur, choisis la langue, le fuseau horaire et la localisation.

      Bonne surprise : HA scanne ton réseau local et détecte automatiquement les appareils compatibles. Sur mon réseau il a trouvé Bluetooth, Google Cast, Frontier Silicon, Matter, Tado, Thread et UPnP – sans aucune configuration de ma part. La connexion effective de ces appareils est une étape ultérieure, mais la détection automatique donne un bon aperçu du potentiel.

      Étape 5 – Sauvegardes

      Si tu as déjà mis en place la sauvegarde automatique avec rclone décrite dans Sauvegarder ses containers Docker automatiquement avec Rclone, il n’y a rien à faire de plus. Le dossier /home/USER/docker/home-assistant/ est automatiquement inclus dans la sauvegarde quotidienne.

      Pour tester la restauration, la procédure est identique à celle décrite dans Restauration de containers Docker avec Rclone.

      Et ensuite ?

      Home Assistant est installé et opérationnel. Les prochaines étapes possibles :

      Ajouter des containers Docker complémentaires (MQTT, Zigbee2MQTT, etc.) selon les besoins

      Connecter les appareils détectés (Tado, Google Cast, etc.)

      Migrer des appareils depuis une box domotique existante

      ajouter un dongle Zigbee et ajouter des nouveaux appareils (j’ai trois ampoules et quelques capteurs d’ouverture de porte).

      Faille Linux Copy Fail (mai 2026)

      Faille Linux Copy Fail (mai 2026)

      Une vulnérabilité Copy Fail a été découverte fin avril 2026. Elle concerne beaucoup d’ordinateurs sous linux.

      Pour savoir si la vulnérabilité existe sur votre ordinateur : taper les commandes indiquées à la fin de cet article, dans le chapitre sur la vérification.

      mettre à jour mon ordinateur linux

      J’ai suivi les instructions de cet excellent site.

      Vérifier l’absence de cette vulnérabilité

      On peut aussi vérifier ensuite que tout a bien fonctionné :

      lsmod | grep algif_aead
      

      Rien ne devrait s’afficher en principe. Si rien ne s’affiche ça signifie que le module vulnérable ne se charge pas. C’est bien ce que l’on veut.

      Ultime vérification : Pour Ubuntu 24.04 (Noble Numbat), tu devrais avoir une version égale ou supérieure à la 6.8.0-31 (ou une version spécifique 6.14 si tu es sur un kernel HWE). C’est ce que me dit Gemini le 11 mai.

      uname -r
      

      La réponse est « 6.17.0-23-generic ». Tout va bien donc.

      Une image explicative de la faille

      Image créée par Gemini

      L’image est conçue comme une infographie technique simplifiée, divisée en deux parties distinctes pour expliquer le fonctionnement et les risques de la vulnérabilité CVE-2026-31431 :

      1. La zone « VULNERABILITY » (à gauche) : Un utilisateur avec des privilèges normaux lance une commande de copie de fichier. Cette action, normalement anodine, déclenche une erreur dans le noyau Linux. Cette erreur est symbolisée par des fragments de code brisés et une « fuite » d’informations qui contourne les sécurités habituelles.
      2. La zone « RISK » (à droite) : Un attaquant exploite cette corruption de mémoire pour contourner les protections. Un pictogramme montre un cadenas qui se brise, menant à une icône de l’utilisateur « Root » (super-utilisateur) symbolisé par une clé et une couronne, indiquant une prise de contrôle totale du système.
      3. L’interface Nginx : En haut de l’image, une interface graphique simplifiée de Nginx agit comme une barrière externe. Elle souligne le point que nous avons abordé : le danger survient lorsqu’une application exposée sur le web (via Nginx) est piratée et sert de point d’entrée pour lancer l’exploit « Copy Fail ».
      Obsidian synchronisé sur 3 appareils avec Dropbox

      Obsidian synchronisé sur 3 appareils avec Dropbox

      J’utilise Obsidian depuis peu pour stocker mes notes personnelles et professionnelles. L’objectif était simple : avoir mes notes accessibles sur mon PC Windows, mon téléphone Android et mon ordinateur Linux, sans payer d’abonnement. Voici comment j’ai mis ça en place, les obstacles rencontrés et les décisions prises.


      Pourquoi Obsidian et quel usage concret

      Obsidian est un outil de prise de notes basé sur des fichiers markdown (.md) stockés localement sur votre machine. Pas de cloud propriétaire, pas d’abonnement obligatoire pour les fonctions de base – mes notes m’appartiennent et restent dans un dossier normal de mon ordinateur.

      Mon usage principal : stocker des notes diverses au fil des jours, faire de la veille en conservant des liens commentés, et disposer d’une base de notes accessible depuis n’importe lequel de mes appareils.

      Ce que je ne cherchais pas : un système complexe avec des dizaines de plugins. La règle que je me suis fixée – n’ajouter de la structure que si un vrai besoin se manifeste.


      Ce qu’il faut avant de commencer

      • Un compte Dropbox (il peut être gratuit, 2 Go suffisent largement pour des notes texte)
      • Dropbox Desktop installé sur le PC Windows
      • Dropbox installé sur le PC linux (ce n’était pas mon cas, la synchronisation ne se fait pas)
      • Environ 30 minutes pour l’ensemble de l’installation

      Étape 1 – Installation Windows et création du vault dans Dropbox

      Télécharge Obsidian depuis obsidian.md//download et installe-le normalement.

      Au premier lancement, Obsidian propose de créer un vault (coffre). C’est le dossier qui contiendra toutes vos notes. Point crucial : place ce vault directement dans ton dossier Dropbox local.

      Sur mon installation, le vault se trouve dans D:\Dropbox\OBSIDIAN\obsidian-vault.

      Vérifie ensuite que Dropbox synchronise bien le dossier – l’icône Dropbox dans la barre des tâches doit indiquer une synchronisation en cours puis un statut « à jour ».


      Étape 2 – Plugin Remotely Save – configuration et authentification Dropbox

      Remotely Save est le plugin qui va gérer la synchronisation entre tes appareils via Dropbox. Il est gratuit pour Dropbox (attention : Google Drive est une fonctionnalité payante dans ce plugin).

      Pour l’installer :

      1. Paramètres > Modules complémentaires > activer les plugins communautaires
      2. Parcourir > rechercher « Remotely Save » > Installer > Activer
      3. Dans les réglages du plugin : choisir Dropbox comme service
      4. Cliquer sur Authentifier et autoriser l’accès à votre compte Dropbox
      5. Tester une première synchronisation manuelle avec l’icône de synchronisation en bas à gauche

      Le vault se retrouve alors dans un dossier OBSIDIAN dans ta Dropbox. On peut vérifier directement sur dropbox.com.


      Étape 3 – Installation Android et première synchronisation

      Installe Obsidian depuis le Play Store.

      Au premier lancement, crée un vault avec le même nom que sur Windows. Pour le stockage, choisis « Stockage de l’application ».

      Installe ensuite Remotely Save depuis les modules complémentaires (même procédure que sur Windows), configure Dropbox, authentifie-toi.

      Lance une première synchronisation manuelle – toutes les notes créées sur Windows apparaissent sur le téléphone, et inversement.


      Étape 4 – Installation Linux – cas particulier et limites

      Sur Ubuntu, Obsidian est disponible directement dans l’App Center. Installation en un clic, aucune ligne de commande nécessaire.

      La synchronisation est plus complexe sur Linux car Dropbox Desktop n’est pas installé sur ma machine. J’ai installé Remotely Save et configuré Dropbox, mais sans Dropbox Desktop local, le vault Linux reste isolé des autres appareils.

      Ma décision : ne pas installer Dropbox sur Linux pour l’instant, car mon usage Linux d’Obsidian est incertain. Si le besoin se confirme, j’installerai Dropbox Desktop Linux.

      Ce que j’ai appris en passant : les installations en container (Docker) n’ont pas de sens pour une application graphique comme Obsidian. Docker est fait pour des services auxquels on accède à distance, pas pour des interfaces utilisateur.


      Étape 5 – Synchronisation automatique – les réglages essentiels

      Par défaut, Remotely Save ne synchronise que manuellement. Pour automatiser, voici les réglages à faire sur chaque appareil séparément :

      Paramètres > Modules complémentaires > Remotely Save > icône engrenage :

      • Synchroniser au démarrage de l’application : activer
      • Synchroniser toutes les X minutes : activer, régler sur 5 (minutes)
      • Synchroniser à la fermeture de l’application : activer si disponible

      Ces réglages sont à répliquer sur chaque appareil. Une fois fait, la synchronisation se déclenche automatiquement sans aucune action manuelle.


      Premiers pas – notes quotidiennes et veille

      Pour apprendre à écrire en markdown, tu peut utiliser cette fiche, d’un dépôt GitHub.

      Pour démarrer simplement, la fonction Notes quotidiennes est idéale. Elle crée automatiquement une note par jour avec la date comme titre.

      Pour l’activer : Paramètres > Modules principaux > Notes quotidiennes > activer.

      L’icône calendrier dans la barre latérale gauche ouvre la note du jour en un clic. tu y notes ce que tu veux sans te poser de questions d’organisation.

      Pour la veille, deux approches simples :

      • Coller les URLs directement dans la note quotidienne avec un mot de contexte
      • Créer une note dédiée par thème (exemple : « Veille IA ») pour les liens que vous voulez retrouver facilement

      Mon conseil : résiste à la tentation dde structurer avant d’avoir des notes à organiser. Obsidian peut devenir très complexe très vite – commence simple.


      Ce que j’ai retenu de cette installation

      Remotely Save + Dropbox est la combinaison gratuite et fiable pour synchroniser Obsidian sur plusieurs appareils. Google Drive aurait été plus naturel pour moi mais c’est une fonctionnalité payante dans ce plugin.

      Le vault placé directement dans Dropbox sur Windows fonctionne sans friction. Sur Android, le plugin Remotely Save fait tout le travail. Sur Linux, la synchronisation nécessite Dropbox Desktop – à installer si l’usage se confirme.

      La synchronisation automatique toutes les 5 minutes est un bon équilibre entre réactivité et consommation batterie sur mobile.


      Cet article fait partie de ma démarche de capitalisation des compétences acquises. Si tu as des questions ou des retours sur cette installation, les commentaires sont ouverts.