Skip to content

feat(apps): add ESPHome Device Builder dashboard - #60

Merged
anatolinicolae merged 1 commit into
mainfrom
anatoli/add-esphome
Oct 27, 2026
Merged

anatolinicolae merged 1 commit into
mainfrom
anatoli/add-esphome

Conversation

@anatolinicolae

Copy link
Copy Markdown
Member

Adds an ESPHome app: the official ghcr.io/esphome/esphome:2026.10.1 image, pinned to its manifest-list digest (amd64 and arm64), serving the Device Builder dashboard on TCP 6052 with config in /DATA/AppData/esphome.

  • Bridge mode. mDNS does not reach the container, so .local names do not resolve and new devices are not discovered for adoption. Devices need wifi: use_address: or manual_ip: for status checks and OTA updates. Docker enables unprivileged ICMP in bridge namespaces, so the ping status sweep works without NET_RAW.
  • Login required. ESPHOME_USERNAME defaults to admin and ESPHOME_PASSWORD is empty. The Device Builder rejects a half-set pair at startup, so the app refuses to start until a password is set.
  • Minimal privileges. cap_drop: ALL plus DAC_OVERRIDE (in case CasaOS owns the config directory with another UID), and no-new-privileges. No USB or serial device is mapped; first flashes happen from another machine or web.esphome.io.

README documents the app and its security boundary. x-casaos.update_at is left for the reconcile workflow.

Validation

  • docker compose config -q passes for every app.
  • reconcile_versions.py check and check-index pass; the built index lists 15 apps with ESPHome at 2026.10.1.
  • The container was not started: the build sandbox cannot run containers. Startup, compile, and OTA still need a check on ZimaOS.

Adds ghcr.io/esphome/esphome:2026.10.1 in bridge mode on TCP 6052 with
persistent config in /DATA/AppData/esphome. ESPHOME_USERNAME defaults to
admin with an empty ESPHOME_PASSWORD, which the dashboard rejects as a
half-set pair, so it refuses to start until a password is set. Every
capability except DAC_OVERRIDE is dropped and no USB or serial device is
mapped. Bridge mode blocks mDNS, so devices need use_address or
manual_ip for status and over-the-air updates.

Amp-Thread-ID: https://ampcode.com/threads/T-01a17f0c-40f0-74e4-ab9c-c3ec6cb81b2c
Co-authored-by: Anatoli Nicolae <an@thundersquared.com>
@anatolinicolae
anatolinicolae merged commit 6d81863 into main Oct 27, 2026
1 check passed
@anatolinicolae
anatolinicolae deleted the anatoli/add-esphome branch October 27, 2026 20:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants