ESPHome Builder

ESPHome Builder

Firmware builder for ESP devices

ESPHome Device Builder is a tool for creating custom firmware for ESP8266/ESP32 microcontrollers through simple YAML configuration files and managing them through Home Automation systems like Home Assistant.

🏠 Home: https://esphome.io 📦 Source: https://github.com/esphome/esphome 📜 Docs: https://esphome.io/guides/getting_started_command_line/#bonus-esphome-device-builder Docker: https://hub.docker.com/r/esphome/esphome

TODO: Consider implementing non-privileged mode with specific device permissions for improved security TODO: Set up udev rules for automatic USB device discovery

name: esphome-device-builder
services:
  esphome-device-builder:
    image: esphome/esphome:2025.9
    container_name: esphome-device-builder
    restart: unless-stopped
    network_mode: host
    environment:
      TZ: ${TIMEZONE}
      PUID: ${PUID}
      PGID: ${PGID}
    # kics-scan ignore-block
    volumes:
      - /etc/localtime:/etc/localtime:ro
    # Not needed due to 'network_mode: host'
    # ports:
    #   - "6052:6052"
    # Required for USB device access
    # kics-scan ignore-line
    # privileged: true
    # For USB device passthrough (uncomment and adjust as needed):
    # devices:
    #  - /dev/ttyUSB0:/dev/ttyUSB0
    labels:
      traefik.enable: true
      traefik.http.routers.esphome-device-builder.rule: Host(`esphome.${MYDOMAIN}`)
      traefik.http.routers.esphome-device-builder.middlewares: localaccess@file
      traefik.http.services.esphome-device-builder.loadbalancer.server.port: 6052
      homepage.group: Automation
      homepage.name: ESPHome Builder
      homepage.icon: esphome.png
      homepage.href: https://esphome.${MYDOMAIN}/
      homepage.description: "Firmware builder for ESP devices"