Repository navigation
build: follow Core and Optimizer onto the trixie base - #6
Merged
Merged
Conversation
@ srcfl/ftw#731 moves the whole FTW stack onto Debian 13 "trixie". This repo inherits that automatically -- the add-on image is built FROM the Optimizer image -- so the change that matters here is the test fixtures, which stood in for Core and Optimizer on bookworm and would have gone on testing a base that no longer ships. Also say, once, why libnss-mdns is not installed here even though Core has it: it only forwards to avahi-daemon over a Unix socket, and Supervisor gives an add-on no way to bind an arbitrary host path. FTW resolves ".local" in-process instead, which is what host_network is for. Documented in DOCS.md for operators who hit a name that will not resolve. Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com> @
Tested on a pilot HA green instead of reasoning about it, and the earlier text was wrong in the way that matters. `.local` does not need anything from FTW here: Supervisor points every app at its own CoreDNS, which carries an mdns plugin backed by systemd-resolved, and that answers over ordinary unicast DNS. A lookup failure names it — "on 172.30.32.3:53". The avahi paragraph stands but for a further reason: HA OS runs no avahi at all. Its multicast plugin is mdns-repeater, a packet relay with no query API, so there is no socket to bind even in principle. Evidence: srcfl/ftw#728 (comment). Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
Someone reading the previous version could reasonably ask which plugin they have to install. The answer is none, and that is worth stating rather than leaving implied. Supervisor hard-codes five built-in services and starts them itself (supervisor/plugins/manager.py: cli, dns, audio, observer, multicast). They are not add-ons — an app cannot install one, and cannot declare a dependency on one either. A failure there becomes a repairable system issue Supervisor raises on its own. The one real host requirement is systemd-resolved, which HA OS always has and which the Supervised installer's first step sets up. A host that skipped it resolves no .local names, so that case is called out with its workaround. Also documents the resolver address in the failure message, since seeing 172.30.32.3 is what separates "device is not there" from "resolution never got that far". Co-authored-by: HuggeK <48095810+HuggeK@users.noreply.github.com>
HuggeK
marked this pull request as ready for review
August 5, 2026 08:58
miravoss26
reviewed
Aug 5, 2026
miravoss26
left a comment
There was a problem hiding this comment.
Reviewed. Adds a DOCS.md section explaining .local name resolution on HA (Supervisor's own DNS → systemd-resolved), and bumps the Dockerfile bases (Core/Optimizer fixtures + FTW itself) from python:3.12-slim-bookworm to -trixie, matching srcfl/ftw#731.
- Docs: clear, specific, cites the actual failure string (
no such hostvs a resolver-address mismatch) — useful for whoever hits this next. - Dockerfile comment on
libnss-mdnsexplains why it's omitted rather than just omitting it — good, since a future reader would otherwise "helpfully" add it back. - All 5 checks green (repo/shell lint, HA app lint, amd64 + aarch64 build+smoke).
- No secrets, no new network destinations, no dependency changes beyond the base image tag.
Safe to merge from my read.
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
Member
|
Final pass on head 58db485:
This head is safe to squash-merge. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follows Core and the Optimizer onto the Debian 13 "trixie" base, and documents
what
.localdevice names actually depend on here.srcfl/ftw#731 has merged, so Core, the
updater and the Optimizer now all derive from one trixie base upstream. This
repo builds the app
FROM ${FTW_OPTIMIZER_FROM}, so its runtime layer lands onthat base too — the fixtures have to follow or CI stops testing what ships.
What changes
tests/fixtures/optimizer/Dockerfile→python:3.14-slim-trixie. This is theone that matters: the app's own
apt-getlayer is built on top of it, so thefixture has to match the suite the real install runs against.
tests/fixtures/core/Dockerfile→ same, for consistency. Core contributesonly three copied paths, so its base has no runtime effect here.
ftw/Dockerfile— comments only. Records where the suite comes from, and whylibnss-mdnsis deliberately absent.ftw/DOCS.md— a new section on devices namedzap.local.Verified, not assumed
CI builds the app's runtime layer on the fixture, so a green run here is real
evidence for the base bump:
apt-get install --no-install-recommends ca-certificates tini tzdataresolves on trixie, andtinistill lands at/usr/bin/tini, which theENTRYPOINThard-codes as a literal path.smoke.shthen exercises the health check and the optimizer kill/restart cycle on that
image.
The packages stay unpinned, as the comment above them already explains: Debian
does not keep old revisions in its normal index, so pinning would break later
rebuilds without buying a stronger guarantee.
The docs section was wrong, and a pilot install said so
The first version of
ftw/DOCS.mdhere claimed FTW resolves.localitself anddoes not use the operating system's resolver. Testing on a pilot HA green
disproved it. Probing one device three ways through
POST /api/drivers/test:connect: no route to hostzap.local.localnamelookup … on 172.30.32.3:53: no such host172.30.32.3is Supervisor's own DNS service, which ships anmdns plugin
backed by
systemd-resolved. So.localalready resolves here, over ordinaryunicast DNS, on the published
v1.10.0-beta.1— and it works underhost_network: true, which was the part that could not be settled from source.Why the avahi paragraph still stands, for a different reason
Supervisor's map vocabulary is a fixed enum (
data,config,ssl,local_apps,backup,share,media,homeassistant_config,all_app_configs,app_config), so an app cannot bind/run/avahi-daemon.But there is also nothing there to bind. HA OS runs no avahi at all — the
multicast plugin is
mdns-repeater, a packet
relay with no query API.
The section now says what the feature depends on and, more usefully, what a user
could get wrong:
systemd-resolvedon the host. HA OS always has it; aSupervised install has it if it followed the documented setup, whose first step
converts the host to NetworkManager and
systemd-resolved. A host that skippedthat resolves no
.localnames and must use IP addresses.It also states plainly that there is no plugin to install. Supervisor hard-codes
its five built-in services and starts them itself; they are not add-ons, cannot
be installed or removed, and an app cannot declare a dependency on one.
Not in scope
compatibility.yamlstill pins the digests of the last published beta, whichpredates the base move. Re-pointing it needs a release published from current
upstream master, which is the beta workflow's job rather than this PR's.
srcfl/ftw#788 has since merged. This
head now uses
python:3.14-slim-trixiefor the Optimizer fixture, matching thecurrent upstream image.