> For the complete documentation index, see [llms.txt](https://cube.ewelink.cc/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cube.ewelink.cc/cube-os-fr/prise-en-main/quickstart/docker.md).

# Docker

Installez CUBE OS comme conteneur Docker sur un hôte Linux. Cette méthode fonctionne bien pour les serveurs domestiques, les appareils NAS et les machines Linux toujours allumées.

{% hint style="info" %}
Le déploiement Docker est pris en charge sur **Linux uniquement**.

Si vous n'avez pas d'hôte Linux, utilisez [Raspberry Pi](/cube-os-fr/prise-en-main/quickstart/raspberry-pi.md) ou [Machine virtuelle](/cube-os-fr/prise-en-main/quickstart/machine-virtuelle/virtualbox.md).
{% endhint %}

### 1. Préparation

{% stepper %}
{% step %}
**Vérifiez l'architecture de l'hôte**

CUBE Docker prend en charge ces architectures Linux :

* **amd64** (`x86_64`) — PC, serveurs, NAS Synology et appareils similaires
* **arm64** (`aarch64`) — Raspberry Pi 4/5, Orange Pi et autres hôtes ARM
  {% endstep %}

{% step %}
**Vérifiez la version du noyau Linux**

Le noyau `4.15` ou version ultérieure est requis.

```bash
uname -r
```

{% hint style="warning" %}
Certains appareils NAS sont livrés avec des noyaux plus anciens, tels que `4.4.x`. Ces hôtes ne sont pas compatibles avec CUBE Docker. Dans ce cas, exécutez CUBE OS dans une machine virtuelle Linux à la place.
{% endhint %}
{% endstep %}

{% step %}
**Installez Docker Engine**

Installez Docker Engine sur l'hôte avant de continuer.

Utilisez le [guide d'installation officiel de Docker](https://docs.docker.com/engine/install/).
{% endstep %}

{% step %}
**Vérifiez les ports requis**

Assurez-vous que les ports `80` et `1883` sont libres sur l'hôte.

```bash
sudo lsof -i :80
sudo lsof -i :1883
```

* **80** — interface web de CUBE OS
* **1883** — broker MQTT

Si un autre service utilise ces ports, arrêtez-le d'abord.
{% endstep %}

{% step %}
**Préparez un dongle Zigbee si nécessaire**

Si vous prévoyez d'ajouter des appareils Zigbee, connectez un dongle Zigbee compatible à l'hôte.

Les dongles Zigbee testés incluent :

> SONOFF ZBDongle-MAX\
> SONOFF ZBDongle-PMG24\
> SONOFF ZBDongle-LMG21\
> SONOFF ZBDongle-E\
> SONOFF ZBDongle-P\
> [Autres répertoriés](https://darkxst.github.io/silabs-firmware-builder/) par le développeur @darkxst&#x20;

{% hint style="info" %}
Pour plus d'informations sur les configurations et la compatibilité Zigbee, veuillez vous référer à ceci [guide](/cube-os-fr/verification-de-compatibilite/zigbee.md).
{% endhint %}

Pour plus d'informations sur la prise en charge de Zigbee, consultez [ce guide](/cube-os-fr/verification-de-compatibilite/zigbee.md).
{% endstep %}
{% endstepper %}

### 2. Récupérer l'image

{% stepper %}
{% step %}
**Téléchargez la dernière image**

```bash
docker pull ghcr.io/ewelinkcube/cube-os:latest
```

<div align="left"><figure><img src="/files/bc40a662499dff88f0d2d8c1c33c0b5aa29367b5" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Vous pouvez remplacer `latest` par un tag de version spécifique, comme `2.10.3`. Les versions disponibles sont listées sur [GitHub Releases](https://github.com/eWeLinkCUBE/CUBE-OS/releases/).
{% endhint %}
{% endstep %}
{% endstepper %}

### 3. Démarrer CUBE OS

{% stepper %}
{% step %}
**Créez un répertoire de données**

```bash
mkdir -p ~/cubeos-data
```

Ce répertoire stocke vos appareils, scènes et paramètres.
{% endstep %}

{% step %}
**Vérifiez le chemin du périphérique Zigbee si vous en utilisez un (facultatif)**

Les chemins de périphérique courants sont :

```bash
ls /dev/ttyUSB* /dev/ttyACM*
```

Utilisez le bon chemin dans la commande suivante.
{% endstep %}

{% step %}
**Démarrez le conteneur**

Utilisez cette commande comme base :

```bash
docker run -d \
  --name cubeos \
  --privileged \
  --net=host \
  -v ~/cubeos-data:/data \
  --device /dev/ttyUSB0:/dev/ttyUSB0 \
  -v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro \
  ghcr.io/ewelinkcube/cube-os:latest
```

<div align="left"><figure><img src="/files/0ae0aa2fa5fe9bbf7aed8f45f9f1a66f1e721270" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Si vous n'utilisez pas Zigbee, supprimez `--device /dev/ttyUSB0:/dev/ttyUSB0`.

Si vous n'utilisez pas Matter Hub ou eWeLink Remote, vous pouvez également supprimer le montage D-Bus.
{% endhint %}
{% endstep %}

{% step %}
**Comprendre les principaux paramètres**

* `--privileged` — requis pour l'accès au matériel
* `--net=host` — requis pour la découverte sur le réseau local et MQTT
* `-v ~/cubeos-data:/data` — conserve vos données après les redémarrages du conteneur
* `--device /dev/ttyUSB0:/dev/ttyUSB0` — transmet un dongle Zigbee
* `-v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro` — permet l'accès D-Bus pour les fonctionnalités prises en charge
  {% endstep %}
  {% endstepper %}

### 4. Accéder à CUBE OS

{% stepper %}
{% step %}
**Confirmez que le conteneur est en cours d'exécution**

```bash
docker ps
```

L'état du conteneur devrait afficher `Up`.
{% endstep %}

{% step %}
**Ouvrez l'interface web**

Ouvrez un navigateur sur le même réseau et rendez-vous à l'une de ces adresses :

* `http://<HOST_IP>/`
* <http://cube.local>

Remplacez `<HOST_IP>` par l'adresse IP de l'hôte Linux.
{% endstep %}

{% step %}
**Utilisez plus tard l'adresse locale courte**

Après la configuration, vous pouvez trouver l'ID court sur la page des paramètres.

Vous pouvez ensuite utiliser `cube-{short-id}.local` pour identifier cette instance de CUBE OS sur votre réseau local.
{% endstep %}
{% endstepper %}

### 5. Mettre à jour CUBE OS

Le déploiement Docker ne prend pas en charge les mises à jour OTA depuis l'interface web.

Pour mettre à jour manuellement :

```bash
docker stop cubeos
docker rm cubeos
docker pull ghcr.io/ewelinkcube/cube-os:latest

docker run -d \
  --name cubeos \
  --privileged \
  --net=host \
  -v ~/cubeos-data:/data \
  --device /dev/ttyUSB0:/dev/ttyUSB0 \
  -v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro \
  ghcr.io/ewelinkcube/cube-os:latest
```

Vos données restent dans `~/cubeos-data`, donc les appareils, scènes et paramètres restent après la mise à jour.

### 6. Limitations

En raison de l'isolation du conteneur, ces fonctionnalités ne sont pas disponibles dans les déploiements Docker :

* **Modules complémentaires** — impossible d'installer ou de gérer des modules complémentaires
* **Haut-parleur Bluetooth** — le transfert Bluetooth n'est pas pris en charge
* **Mise à jour du système** — les mises à jour OTA dans l'interface web sont désactivées
* **Redémarrage / Arrêt** — les commandes d'alimentation au niveau système ne sont pas disponibles

### 7. Remarque pour Raspberry Pi

Si vous exécutez Docker sur un Raspberry Pi, assurez-vous que la taille de page est `4096`:

```bash
getconf PAGE_SIZE

# Si le résultat n'est pas 4096, ajoutez cette ligne et redémarrez
echo "kernel=kernel8.img" | sudo tee -a /boot/firmware/config.txt
sudo reboot
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://cube.ewelink.cc/cube-os-fr/prise-en-main/quickstart/docker.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
