Wer Home Assistant als Container betreibt, stößt bei Netzwerkdiensten wie MPD oder lokalen Skripten schnell auf ein Problem: Hostnamen mit der Endung .local werden vom System nicht aufgelöst. Das offizielle Docker-Image basiert auf Alpine Linux, welches die C-Bibliothek musl anstelle der GNU C-Bibliothek nutzt und mDNS auf Systemebene nicht standardmäßig unterstützt. Mit einem DNS-Relay auf dem Host und einer sauberen Netzwerkkonfiguration stellst du die Funktion wieder her.
Das brauchst du
- Home Assistant als Container-Installation
- Linux-Hostsystem mit Terminal-Zugriff (Root- oder Sudo-Rechte)
- Installiertes
dnsmasqundavahi2dnsauf dem Host
1. mDNS-Dienst auf dem Host für DNS bereitstellen
Da musl in Alpine Linux keine klassische mDNS-Auflösung über nsswitch.conf erlaubt, musst du mDNS-Anfragen über reguläre DNS-Anfragen abbilden. Richte dazu auf dem Host ein Hilfswerkzeug wie avahi2dns auf einem separaten Port (beispielsweise Port 5354) ein, um Anfragen für .local-Domains zu bedienen.
2. dnsmasq als Weiterleitung konfigurieren
Konfiguriere den DNS-Dienst dnsmasq auf dem Host so, dass er auf einer internen Schnittstelle lauscht und alle Anfragen mit der Domain-Endung .local gezielt an den Port von avahi2dns weiterleitet.
# Beispiel-Konfigurationszeile in dnsmasq
server=/local/127.0.0.1#5354Alle übrigen DNS-Anfragen für das Internet leitet dnsmasq wie gewohnt an deinen regulären Router oder DNS-Server weiter.
3. Macvlan-Netzwerk für Docker einrichten
Wenn du den Container nicht im Host-Netzwerkmodus betreibst oder eine isolierte IP-Vergabe bevorzugst, erstelle ein Macvlan-Netzwerk. Dadurch erhält der Home-Assistant-Container eine eigene virtuelle Netzwerkkarte mit eigener IP- und MAC-Adresse im lokalen Netz.
Achte darauf, dass der gewählte IP-Bereich (IP Range) außerhalb des DHCP-Vergabebereichs deines Routers liegt, um Adresskonflikte zu vermeiden.
docker network create -d macvlan \
--subnet=192.168.10.0/24 \
--ip-range=192.168.10.20/28 \
--gateway=192.168.10.1 \
-o parent=eth0 MacVlan_NetworkPasse Subnetz, Schnittstelle (eth0) und Gateway an deine eigene Netzwerkumgebung an.
4. DNS-Adresse im Home-Assistant-Container hinterlegen
Weise dem Container in deiner Docker-Konfiguration (etwa in der docker-compose.yml) die IP-Adresse des Host-DNS-Dienstes zu. Dadurch schickt Alpine Linux alle Namensauflösungen direkt an deinen dnsmasq-Server, der .local-Adressen erfolgreich an avahi2dns übergibt.
Funktioniert es?
Öffne die Konsole innerhalb deines laufenden Home-Assistant-Containers und sende einen Ping-Befehl an ein Gerät mit .local-Endung im Netzwerk:
docker exec -it homeassistant ping -4 mein-geraet.localWenn die IP-Adresse des Geräts aufgelöst wird und Antwortpakete eingehen, greifen Systemdienste und Integrationen wie MPD wieder problemlos auf deine lokalen Adressen zu.
Wenn es nicht klappt
- Fehlermeldung „bad address“: Der Container erreicht den DNS-Server nicht oder die Weiterleitungsregel in
dnsmasqfür Port 5354 ist nicht aktiv. Prüfe die Konfigurationsdatei vondnsmasqund starte den Dienst auf dem Host neu. - IPv6-Störungen: Bei paralleler IPv6-Nutzung schlägt die Auflösung gelegentlich fehl; teste den Verbindungsaufbau gezielt mit dem Parameter
-4beim Ping-Befehl. - Avahi-Reflektoren bei eigenem Netzwerk: Wenn ein eigenes Netzwerk statt des Host-Modus verwendet wird, können alternativ Reflektoren in
/etc/avahi/avahi-daemon.confaktiviert und der Dienstavahi-daemonneu gestartet werden.
Mit dieser Bridge-Lösung umgehst du die Limitierung von Alpine Linux dauerhaft und kannst netzwerkbasierte Medien- und Befehlsintegrationen ohne Einschränkungen betreiben.
Quellen: Forum: Home Assistant Community, community.home-assistant.io, community.home-assistant.io
