Migration Docker mode managé (x64) vers Docker pur (Raspberry Pi 5 CM)

Bonjour à tous,

Dans ma maison de campagne j’utilise un home assistant en mode managé sur une machine PC Engines APU2, donc installée depuis Debian x64, sur laquelle j’ai un accès SSH. C’est une machine qui tourne depuis 7 ans et fonctionne admirablement bien, sans aucun défaut.

Mais avec le sortie de la Raspeberry 5CM, il y a saut technologique et je me suis laissé tenter. Voir mon post au sujet de la Raspberry 5M : Découverte de la Raspberry Pi 5CM + NVMe (topic unique). J’aimerais utiliser la Raspberry Pi CM5 en mode Docker pur.

En effet, des test dans ma résidence principale montrent que Home Assistant utilise 0,7% du temps machine dans la Raspberry Pi 5CM, donc il y a plein de puissance disponible et je compte l’utiliser sous Docker, pour installer n’importe quel logiciel sans passer par l’interface de Home Assistant. C’est pour cela que Docker existe.

J’ai déjà des machines Home Assistant sous Docker, ce qui m’intéresse ici, c’est la migration et j’avoue ne pas avoir les idées claires, donc je prépare mon intervention par ce post :

Sur la machine PC Engines APU2 (Home Assistant partagé):

sudo docker ps
CONTAINER ID   IMAGE                                                      COMMAND                  CREATED         STATUS                  PORTS                                                                                                                          NAMES
99225aecf38f   homeassistant/amd64-addon-configurator:5.8.0               "/init"                  46 hours ago    Up 46 hours (healthy)                                                                                                                                  addon_core_configurator
17259861d9d4   ghcr.io/hassio-addons/uptime-kuma/amd64:0.13.0             "/init"                  46 hours ago    Up 46 hours             0.0.0.0:3001->3001/tcp, :::3001->3001/tcp                                                                                      addon_a0d7b954_uptime-kuma
1d9d1ab1716e   zigbee2mqtt/zigbee2mqtt-amd64:2.1.1-1                      "/sbin/tini -- /dock…"   46 hours ago    Up 46 hours             0.0.0.0:8485->8485/tcp, :::8485->8485/tcp                                                                                      addon_45df7312_zigbee2mqtt
509210ff90f3   homeassistant/amd64-addon-mosquitto:6.5.0                  "/init"                  46 hours ago    Up 46 hours             0.0.0.0:1883-1884->1883-1884/tcp, :::1883-1884->1883-1884/tcp, 0.0.0.0:8883-8884->8883-8884/tcp, :::8883-8884->8883-8884/tcp   addon_core_mosquitto
c078cf096ced   ghcr.io/home-assistant/amd64-hassio-multicast:2024.03.0    "/init"                  46 hours ago    Up 46 hours                                                                                                                                            hassio_multicast
4f9760a7eef0   ghcr.io/home-assistant/amd64-hassio-audio:2023.12.0        "/init"                  46 hours ago    Up 46 hours                                                                                                                                            hassio_audio
c089800ffb7a   ghcr.io/home-assistant/amd64-hassio-dns:2024.12.0          "/init"                  46 hours ago    Up 46 hours                                                                                                                                            hassio_dns
553c03ff3eda   ghcr.io/home-assistant/amd64-hassio-cli:2024.09.0          "/init"                  46 hours ago    Up 46 hours                                                                                                                                            hassio_cli
4253c3bc2d49   ghcr.io/home-assistant/qemux86-64-homeassistant:2025.2.4   "/init"                  4 days ago      Up 46 hours                                                                                                                                            homeassistant
59c7f46c62c8   ghcr.io/home-assistant/amd64-hassio-supervisor:latest      "/init"                  7 days ago      Up 46 hours                                                                                                                                            hassio_supervisor
b173d49208fe   ghcr.io/home-assistant/amd64-hassio-observer:2023.06.0     "/usr/bin/observer"      18 months ago   Up 46 hours             0.0.0.0:4357->80/tcp, [::]:4357->80/tcp                                                                                        hassio_observer

Je comptais inspecter le brokers Mosquito, Zigbee2mqtt et Home Assistant et récupérer le contenu des dossiers pour faire une migration dans cet ordre à l’identique. J’utilise un émetteur Zigbee sur prise Ethernet en POE, donc je n’ai pas de problème du côté Zigbee.

sudo docker inspect 509210ff90f3
[
    {
        "Id": "509210ff90f3dcddf708d08b2fb852799f2e4a16ee6db622fef8fa00b16bea54",
        "Created": "2025-02-19T10:48:55.122777832Z",
        "Path": "/init",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2259,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-02-19T10:48:55.68838104Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:61eaa57247b3d36e4093dd275e605459af7ea66a2cbf9f99ca6905dec6c08067",
        "ResolvConfPath": "/var/lib/docker/containers/509210ff90f3dcddf708d08b2fb852799f2e4a16ee6db622fef8fa00b16bea54/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/509210ff90f3dcddf708d08b2fb852799f2e4a16ee6db622fef8fa00b16bea54/hostname",
        "HostsPath": "/var/lib/docker/containers/509210ff90f3dcddf708d08b2fb852799f2e4a16ee6db622fef8fa00b16bea54/hosts",
        "LogPath": "",
        "Name": "/addon_core_mosquitto",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "journald",
                "Config": {
                    "tag": "{{.Name}}"
                }
            },
            "NetworkMode": "bridge",
            "PortBindings": {
                "1883/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "1883"
                    }
                ],
                "1884/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "1884"
                    }
                ],
                "8883/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8883"
                    }
                ],
                "8884/tcp": [
                    {
                        "HostIp": "",
                        "HostPort": "8884"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": [
                "172.30.32.3"
            ],
            "DnsOptions": [
                "timeout:10"
            ],
            "DnsSearch": [
                "local.hass.io"
            ],
            "ExtraHosts": [
                "hassio:172.30.32.2",
                "supervisor:172.30.32.2"
            ],
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 200,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": [
                "seccomp=unconfined"
            ],
            "Tmpfs": {
                "/dev/shm": ""
            },
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "Mounts": [
                {
                    "Type": "bind",
                    "Source": "/dev",
                    "Target": "/dev",
                    "ReadOnly": true,
                    "BindOptions": {
                        "ReadOnlyNonRecursive": true
                    }
                },
                {
                    "Type": "bind",
                    "Source": "/usr/share/hassio/addons/data/core_mosquitto",
                    "Target": "/data"
                },
                {
                    "Type": "bind",
                    "Source": "/usr/share/hassio/ssl",
                    "Target": "/ssl",
                    "ReadOnly": true
                },
                {
                    "Type": "bind",
                    "Source": "/usr/share/hassio/share",
                    "Target": "/share",
                    "ReadOnly": true,
                    "BindOptions": {
                        "Propagation": "rslave"
                    }
                }
            ],
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ],
            "Init": false
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/c7761020b3be452b1955ac56c84f6ad08cdc3934f403321842474b3dc258f2a0-init/diff:/var/lib/docker/overlay2/bd0e61d6e9e04ea1831494384fb32ebc6cc27f65e7e46bebceea5ed72a3e7ed8/diff:/var/lib/docker/overlay2/ee970ff4afa41b34dc7648bcfd23c4e1cb9f859ce42145bc9c5963b98b38dcdb/diff:/var/lib/docker/overlay2/47e39039d58f4b899937970734f96efa479d8d0727143a8a3f1f2656d005dbee/diff:/var/lib/docker/overlay2/55aee27d36e38274f20979e1d9b8f4e2abddc0f6b614c0b5a3e0f6ed1d819387/diff:/var/lib/docker/overlay2/57c12ae3b0893f52b1620f2ca91cb03e0c75e237325aca104044508e2228a960/diff:/var/lib/docker/overlay2/0d352d341fd66ff5fe7e5f3082bff144b245e45ec41d3da29973f349cfa9ef43/diff",
                "MergedDir": "/var/lib/docker/overlay2/c7761020b3be452b1955ac56c84f6ad08cdc3934f403321842474b3dc258f2a0/merged",
                "UpperDir": "/var/lib/docker/overlay2/c7761020b3be452b1955ac56c84f6ad08cdc3934f403321842474b3dc258f2a0/diff",
                "WorkDir": "/var/lib/docker/overlay2/c7761020b3be452b1955ac56c84f6ad08cdc3934f403321842474b3dc258f2a0/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/dev",
                "Destination": "/dev",
                "Mode": "",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/share/hassio/addons/data/core_mosquitto",
                "Destination": "/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/share/hassio/ssl",
                "Destination": "/ssl",
                "Mode": "",
                "RW": false,
                "Propagation": "rprivate"
            },
            {
                "Type": "bind",
                "Source": "/usr/share/hassio/share",
                "Destination": "/share",
                "Mode": "",
                "RW": false,
                "Propagation": "rslave"
            }
        ],
        "Config": {
            "Hostname": "core-mosquitto",
            "Domainname": "local.hass.io",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "1883/tcp": {},
                "1884/tcp": {},
                "8883/tcp": {},
                "8884/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "TZ=Europe/Paris",
                "SUPERVISOR_TOKEN=3c678e5aa0d33a02e0c16b001ea90f9c78d06ae439a05331e79636938d88717f81ab88530fbf6da20352db61f8d9a5495225cb97feb6b686",
                "HASSIO_TOKEN=3c678e5aa0d33a02e0c16b001ea90f9c78d06ae439a05331e79636938d88717f81ab88530fbf6da20352db61f8d9a5495225cb97feb6b686",
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=C.UTF-8",
                "DEBIAN_FRONTEND=noninteractive",
                "CURL_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt",
                "S6_BEHAVIOUR_IF_STAGE2_FAILS=2",
                "S6_CMD_WAIT_FOR_SERVICES_MAXTIME=0",
                "S6_CMD_WAIT_FOR_SERVICES=1",
                "S6_SERVICES_READYTIME=50"
            ],
            "Cmd": null,
            "Image": "homeassistant/amd64-addon-mosquitto:6.5.0",
            "Volumes": null,
            "WorkingDir": "/",
            "Entrypoint": [
                "/init"
            ],
            "OnBuild": null,
            "Labels": {
                "io.hass.arch": "amd64",
                "io.hass.base.arch": "amd64",
                "io.hass.base.image": "debian:bookworm-slim",
                "io.hass.base.name": "debian",
                "io.hass.base.version": "2024.12.1",
                "io.hass.description": "An Open Source MQTT broker",
                "io.hass.name": "Mosquitto broker",
                "io.hass.type": "addon",
                "io.hass.url": "https://github.com/home-assistant/addons/tree/master/mosquitto",
                "io.hass.version": "6.5.0",
                "org.opencontainers.image.created": "2025-01-13 20:44:55+00:00",
                "org.opencontainers.image.source": "https://github.com/home-assistant/docker-base",
                "org.opencontainers.image.version": "6.5.0",
                "supervisor_managed": ""
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "787df23663c0a99751b56b37ab9075edb2d38b7b11a8bb3e9aa67264dc7e49b9",
            "SandboxKey": "/var/run/docker/netns/787df23663c0",
            "Ports": {
                "1883/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "1883"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "1883"
                    }
                ],
                "1884/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "1884"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "1884"
                    }
                ],
                "8883/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8883"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "8883"
                    }
                ],
                "8884/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "8884"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "8884"
                    }
                ]
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "hassio": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "core-mosquitto"
                    ],
                    "MacAddress": "02:42:ac:1e:21:00",
                    "DriverOpts": null,
                    "NetworkID": "39a3a14df798797442a7313ea5ad3759da56ea799077d931b3737b50da237335",
                    "EndpointID": "2d58fb23a80556da415d71a915e08d37fbce5dd70e37ad39a4459579d2dec08e",
                    "Gateway": "172.30.32.1",
                    "IPAddress": "172.30.33.0",
                    "IPPrefixLen": 23,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": [
                        "addon_core_mosquitto",
                        "core-mosquitto",
                        "509210ff90f3"
                    ]
                }
            }
        }
    }
]

Est-ce la bonne façon de procéder ? Je stoppe les démons, je récupère les données dans le point de montage, est-ce aussi simple que cela ?

Cordialement,
Kellogs

Salut,

Docker pur, ça veut dire que tu fais tout, et tout seul.
Donc effectivement, il faut transposer les fichiers de config.

Par contre, perso je ne sais quel est l’avantage de cette solution, tu as un accès distant, donc c’est à mon avis plus facile de traiter les addons qu’un docker à la main

Est ce que ça veut dire que tu as HAOS sur cette machine ?

Dans ce cas pas de modules complémentaires
Pour avoir fait cette manip par le passé, il faut installer home assistant en mode docker, le démarrer et une fois qu’il a bien lancé toute la procédure et que tu as l’interface web avec l’invit, il faut stopper le container.

Aller dans le répertoire /homeassistant/config et effacer tous les fichiers, y compris les répertoires cachés type ./store

Récupérer le backup de ta précédente installation, le dézipper et récupérer ‹ homeassistant.tar.gz ›, le dézipper et copier tout le contenu de /data dans /homeassistant/config en n’oubliant pas les répertoires cachés type ./store
Tu redémarres le container
A partir de là tu peux espérer que ça marche
Les autres modules complémentaires sont dans des container séparés

Mais bon moi au final je suis revenu sur HAOS c’est plus facile à maintenir

Edit: j’ai lu trop vite, apparemment tu étais déjà en docker mais la procédure est la même il faut récupérer le contenu de config, l’erreur commune est d’oublier les répertoires cachés ./store

Merci, je suis dans Docker parce que j’utilise d’autres logiciels qui fonctionnent dans Docker, donc c’est plus facile au final d’avoir uniquement Docker.

super machine très fiable avec deux lan, idéale pour faire un firewal opnsense

La PC Engines APU2 est une machine increvable, qui peut fonctionner dans des environnements très stressés, voire sous les tropiques dans un environnement moite et humide. Son concepteur m’a indiqué que sur toute la série des APU2, il n’avait eu que quelques retours pour panne. Je vais revendre mes APU2 sur le forum dans quelques jours, au prix de 60€ pièce tout compris (disque, alim, boîtier, etc …). L’APU2 dispose de 3 LAN et non 2 LAN.

Il me reste deux PC Engines APU2 en stock, que je remplace par des Raspeberry Pi 5CM, une machine au minimum 10 fois plus puissante - et également très fiable. Pour info, j’ai ouvert un topic unique au sujet de la Raspberry 5CM : https://forum.hacf.fr/t/raspberry-pi-5cm-nvme-topic-unique. Les Raspberry sont également des machines increvables et c’est rare d’en voir une en panne. LE MTBF de la 5M est de 19 ans, signe de qualité dans la fabrication et le choix des composants.

oui effectivement, c’est parce que je n’en utilise que deux pour opnsense, d’ou mon oubli :slight_smile:
ça doit faire 8 ou 9 ans qu’il est en service d’abord sous pfsense puis sous opnsense, je confirme que c’est du matériel increvable.

Version 2GB ram ou 4GB ?

4Go de RAM, carte 512 Go, idéal pour Home Assistant, 60€ tout compris. Mais attention à la Raspberry 5CM, on est dans une gamme et une techno différente, bien supérieure.

J’ai publié une annonce sur le forum.

Bonsoir à tous,

Je rappelle aux lecteurs qu’il s’agit d’un migration de Home Assistant en mode administré vers Home Assistant en docker pur, donc que cela implique plus d’étapes que s’il fallait juste sauvegarder/restaurer.

Sur la nouvelle machine (un Raspberry Pi 5M), j’ai installé le système Raspbian 64bits lite, c’est à dire une Debian nue et accessible en lignes de commandes sous SSH. Ensuite, j’ai suivi les instructions habituelles pour installer Docker sur une Debian : Debian | Docker Docs

J’ai effectué la migration en quatre temps :

  • Sauvegarde de Home Assistant et de Zigbee2mqtt.
  • Restauration de mqtt et de Zigbee2mqtt.
  • Restauration de Home Assistant.
  • Configuration des mises à jour automatiques (Watchtower).
  1. Sauvegarde de Home Assistant et de Zigbee2mqtt
    J’ai sauvegardé Zigbee2mqtt dans l’interface web de Zigbee2mqtt. Pourquoi ? Parce que la fonctionnalité existe et comme je vais restaurer Zigbee2mqtt je souhaitais le faire dans le même environnement.

Ensuite j’ai sauvegardé Home Assistant. En fait, la sauvegarde de Home Assistant contenait celle de Zigbee2mqtt, mais je ne l’ai pas utilisée.

Enfin j’ai arrêté mon ancien serveur PC Engines. J’ai bien essayé de stopper manuellement Docker, mais les processus étaient relancés par le mode supervisé, donc j’ai préféré tout éteindre pour ne pas interférer. Cela m’a aussi conforté dans l’idée qu’en cas de problème, je pouvais toujours relancer l’ancienne machine.

J’utilise un émetteur Zigbee sur réseau local (UZG01), donc je n’ai pas eu à déplacer une clé USB Zigbee. SI vous utilisez un dongle USB, il faudra le placer sur la nouvelle machine.

  1. Récupération de mqtt et de Zigbee2mqtt

Voici le docker-compose.yml

services:

  mosquitto:
    image: eclipse-mosquitto
    container_name: mqtt
    ports:
      - 1883:1883
      - 9001:9001
    volumes:
      - ./mosquitto/config:/mosquitto/config
      - ./mosquitto/data:/mosquitto/data
      - ./mosquitto/log:/mosquitto/log
    restart: unless-stopped

  #Conteneur ZigBee2MQTT
  zigbee2mqtt:
    image: koenkk/zigbee2mqtt
    container_name: zigbee2mqtt
    depends_on:
      - mosquitto
    volumes:
      - ./zigbee2mqtt:/app/data
      - /run/udev:/run/udev:ro
    privileged: true
    ports:
      - 8080:8080
    environment:
      - "TZ=Europe/Paris"
    restart: unless-stopped

J’ai créé l’arborescence des fichiers et j’ai redémarré par sudo docker-compose up -d. Ensuite j’ai tout arrêté et j’ai restauré les fichiers suivants à partir de mes sauvegardes :

mosquitto/config/mosquitto.conf
mosquitto/config/mosquitto.passwd

J’ai préféré créer un fichier .passwd pour y mettre un mot de passe.

Le fichier mosquitto.conf est le suivant :

persistence true
persistence_location /mosquitto/data/

log_dest file /mosquitto/log/mosquitto.log
log_dest stdout

listener 1883
## Authentication ##
allow_anonymous false
user mosquitto
password_file /mosquitto/config/mosquitto.passwd

include_dir /mosquitto/config/conf.d

Ensuite, j’ai récupéré mon backup zigbee2mqtt et je l’ai mis dans le dossier zigbee2mqtt. Dans le fichier zigbee2mqtt/configuration.yaml, je n’ai fait que quelques ajustements :

  server: mqtt://mosquitto:1883
  user: mosquitto
  password: votremotdepassemqtt

et

frontend:
  enabled: true
  port: 8080

J’ai redémarré par sudo docker-compose up pour voir le log de démarrage en temps réel et tout s’est bien passé. Je me suis alors connecté à l’interface web de zigbee2mqtt sur le port 8080 et j’ai vérifié que tous mes objets Zigbee étaient bien listés et communiquants.

  1. Restauration de Home Assistant
    Pour la restauration de Home Assistant, cela a été beaucoup plus simple. J’ai créé le conteneur Docker avec la configuration suivante :
services:

  homeassistant:
    image: homeassistant/home-assistant:stable
    container_name: homeassistant
    environment:
      - "TZ=Europe/Paris"
    ports:
      - 8123:8123
    volumes:
      - ./home-assistant:/config
    restart: unless-stopped

J’ai démarré le conteneur par sudo docker-compose up -d et je me suis connecté à l’interface. J’ai recréé mon user avec mot de passe. Ensuite, j’ai restauré la sauvegarde, mais sans les données zigbee2mqtt et sans mqtt puisque c’était déjà fait. Je suis alors allé dans Paramètres/Appareils et services et j’ai modifié l’adresse du serveur mqtt. Dès lors dans les 60 secondes qui ont suivi, j’ai récupéré progressivement l’état de tous mes objets.

J’ai terminé par une sauvegarde du nouveau système.

  1. Configuration des mises à jour automatiques

Pour bénéficier de mises à jour automatiques, j’ai configuré un conteneur Docker Watchtower, dont voici le fichier docker-compose. Depuis un an, j’effectue mes mises à jour ainsi et cela ne m’a jamais posé de problèmes :

version: "3"
services:
  watchtower:
    image: containrrr/watchtower
    container_name: watchtower
    restart: always
    environment:
      WATCHTOWER_SCHEDULE: "0 13 2 * * *"
      TZ: Europe/Paris
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_DEBUG: "true"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

Conclusion : je suis maintenant en Docker pur et je pourrai installer tout ce que je veux en Docker.