xiaozhi-esp32 Docker & Self-Hosted Deployment

GitHub

An MCP-based chatbot | 一个基于MCP的聊天机器人

28,858 stars C++ C++ 1 file · ~7,233 tokens #chatbot#esp32#mcp
1. Pull Image (DOCKERHUB) docker pull 78/xiaozhi-esp32:latest
2. Docker Run (1-Click Launch) docker run -d --name xiaozhi-esp32 --restart always 78/xiaozhi-esp32:latest
3. Podman Run podman run -d --name xiaozhi-esp32 --restart always 78/xiaozhi-esp32:latest
4. Skopeo Inspect (Zero-Pull Manifest) skopeo inspect docker://docker.io/78/xiaozhi-esp32:latest
5. ORAS Pull (OCI Artifact) oras pull 78/xiaozhi-esp32:latest
docker/firmware-builder/Dockerfile
# syntax=docker/dockerfile:1.7

ARG IDF_IMAGE=espressif/idf:release-v6.1
FROM ${IDF_IMAGE}

ARG FIRMWARE_SOURCE_REVISION=unknown
ARG FIRMWARE_SOURCE_URL=https://github.com/78/xiaozhi-esp32

LABEL org.opencontainers.image.title="XiaoZhi firmware builder" \
      org.opencontainers.image.description="Builds one XiaoZhi board configuration with a selected language and wake word" \
      org.opencontainers.image.source="${FIRMWARE_SOURCE_URL}" \
      org.opencontainers.image.revision="${FIRMWARE_SOURCE_REVISION}"

SHELL ["/bin/bash", "-o", "pipefail", "-c"]

WORKDIR /opt/xiaozhi-esp32
COPY . .

RUN chmod 0755 \
      docker/firmware-builder/entrypoint.sh \
      docker/firmware-builder/firmware_builder.py \
    && . "${IDF_PATH}/export.sh" >/dev/null \
    && idf.py --version \
    && python3 scripts/build.py --list-boards --json >/tmp/xiaozhi-boards.json \
    && python3 scripts/build.py --list-languages --json >/tmp/xiaozhi-languages.json

ENV FIRMWARE_SOURCE_DIR=/opt/xiaozhi-esp32 \
    FIRMWARE_OUTPUT_DIR=/output \
    FIRMWARE_SOURCE_REVISION=${FIRMWARE_SOURCE_REVISION} \
    PYTHONUNBUFFERED=1

ENTRYPOINT ["/opt/xiaozhi-esp32/docker/firmware-builder/entrypoint.sh"]