> 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-es/primeros-pasos/quickstart/docker.md).

# Docker

Instala CUBE OS como un contenedor Docker en un host Linux. Este método funciona bien para servidores domésticos, dispositivos NAS y máquinas Linux siempre encendidas.

{% hint style="info" %}
La implementación de Docker es compatible en **Solo Linux**.

Si no tienes un host Linux, usa [Raspberry Pi](/cube-os-es/primeros-pasos/quickstart/raspberry-pi.md) o [Máquina virtual](/cube-os-es/primeros-pasos/quickstart/maquina-virtual/virtualbox.md).
{% endhint %}

### 1. Preparación

{% stepper %}
{% step %}
**Comprueba la arquitectura del host**

CUBE Docker es compatible con estas arquitecturas Linux:

* **amd64** (`x86_64`) — PCs, servidores, NAS Synology y dispositivos similares
* **arm64** (`aarch64`) — Raspberry Pi 4/5, Orange Pi y otros hosts ARM
  {% endstep %}

{% step %}
**Comprueba la versión del kernel de Linux**

Kernel `4.15` o posterior es necesario.

```bash
uname -r
```

{% hint style="warning" %}
Algunos dispositivos NAS incluyen kernels más antiguos, como `4.4.x`. Estos hosts no son compatibles con CUBE Docker. En ese caso, ejecuta CUBE OS en una máquina virtual Linux.
{% endhint %}
{% endstep %}

{% step %}
**Instala Docker Engine**

Instala Docker Engine en el host antes de continuar.

Usa la [guía oficial de instalación de Docker](https://docs.docker.com/engine/install/).
{% endstep %}

{% step %}
**Comprueba los puertos necesarios**

Asegúrate de que los puertos `80` y `1883` están libres en el host.

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

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

Si otro servicio está usando estos puertos, deténlo primero.
{% endstep %}

{% step %}
**Prepara un dongle Zigbee si es necesario**

Si planeas añadir dispositivos Zigbee, conecta un dongle Zigbee compatible al host.

Los dongles Zigbee probados incluyen:

> SONOFF ZBDongle-MAX\
> SONOFF ZBDongle-PMG24\
> SONOFF ZBDongle-LMG21\
> SONOFF ZBDongle-E\
> SONOFF ZBDongle-P\
> [Otros listados](https://darkxst.github.io/silabs-firmware-builder/) por el desarrollador @darkxst&#x20;

{% hint style="info" %}
Para obtener más información sobre las configuraciones y la compatibilidad de Zigbee, consulte esto [guía](/cube-os-es/comprobacion-de-compatibilidad/zigbee.md).
{% endhint %}

Para más información sobre la compatibilidad con Zigbee, consulta [esta guía](/cube-os-es/comprobacion-de-compatibilidad/zigbee.md).
{% endstep %}
{% endstepper %}

### 2. Descarga la imagen

{% stepper %}
{% step %}
**Descarga la imagen más reciente**

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

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

{% hint style="info" %}
Puedes reemplazar `latest` por una etiqueta de versión específica, como `2.10.3`. Las versiones disponibles se enumeran en [GitHub Releases](https://github.com/eWeLinkCUBE/CUBE-OS/releases/).
{% endhint %}
{% endstep %}
{% endstepper %}

### 3. Inicia CUBE OS

{% stepper %}
{% step %}
**Crea un directorio de datos**

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

Este directorio almacena tus dispositivos, escenas y ajustes.
{% endstep %}

{% step %}
**Comprueba la ruta del dispositivo Zigbee si usas uno(opcional)**

Las rutas de dispositivo comunes son:

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

Usa la ruta correcta en el siguiente comando.
{% endstep %}

{% step %}
**Inicia el contenedor**

Usa este comando como 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/6086717abf4017262560a524a9ae0d3da4bf7d86" alt="" width="563"><figcaption></figcaption></figure></div>

{% hint style="info" %}
Si no usas Zigbee, elimina `--device /dev/ttyUSB0:/dev/ttyUSB0`.

Si no usas Matter Hub ni eWeLink Remote, también puedes quitar el montaje de D-Bus.
{% endhint %}
{% endstep %}

{% step %}
**Comprende los parámetros principales**

* `--privileged` — necesario para acceder al hardware
* `--net=host` — necesario para el descubrimiento en LAN y MQTT
* `-v ~/cubeos-data:/data` — conserva tus datos tras reiniciar el contenedor
* `--device /dev/ttyUSB0:/dev/ttyUSB0` — pasa a través un dongle Zigbee
* `-v /run/dbus/system_bus_socket:/host_dbus/system_bus_socket:ro` — habilita el acceso a D-Bus para las funciones compatibles
  {% endstep %}
  {% endstepper %}

### 4. Accede a CUBE OS

{% stepper %}
{% step %}
**Confirma que el contenedor se está ejecutando**

```bash
docker ps
```

El estado del contenedor debería mostrar `En ejecución`.
{% endstep %}

{% step %}
**Abre la interfaz web**

Abre un navegador en la misma red y visita una de estas direcciones:

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

Reemplaza `<HOST_IP>` por la dirección IP del host Linux.
{% endstep %}

{% step %}
**Usa más adelante la dirección local corta**

Después de la configuración, puedes encontrar el ID corto en la página de ajustes.

Entonces puedes usar `cube-{short-id}.local` para identificar esta instancia de CUBE OS en tu LAN.
{% endstep %}
{% endstepper %}

### 5. Actualiza CUBE OS

La implementación de Docker no admite actualizaciones OTA desde la interfaz web.

Para actualizar manualmente:

```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
```

Tus datos permanecen en `~/cubeos-data`, así que los dispositivos, escenas y ajustes permanecen después de la actualización.

### 6. Limitaciones

Debido al aislamiento del contenedor, estas funciones no están disponibles en las implementaciones con Docker:

* **Complementos** — no se pueden instalar ni administrar complementos
* **Altavoz Bluetooth** — no se admite el paso a través de Bluetooth
* **Actualización del sistema** — las actualizaciones OTA en la interfaz web están desactivadas
* **Reinicio / Apagado** — los controles de energía a nivel de sistema no están disponibles

### 7. Nota sobre Raspberry Pi

Si ejecutas Docker en una Raspberry Pi, asegúrate de que el tamaño de página sea `4096`:

```bash
getconf PAGE_SIZE

# Si el resultado no es 4096, añade esta línea y reinicia
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-es/primeros-pasos/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.
