Home Assistant and Matter

The amount of side quests I go on lately is getting a bit worrisome. One thing I recently started using Endirillia for is controlling Home Assistant. I added support for notifications when the washing machine or dryer are done to not just get Delta notifications. But what actually threw me off while adding stuff to automatons this week was adding two Govee LED bars behind the TV.

I do not really care for RGB. But Govee has a good enough, consistent way to have a warm white with different brightness levels and their products integrate nicely with Home Assistant. The process so far consisted of provisioning them with the Govee app and turning on LAN control. Done. Worked reliably. So I was a bit surprised to see the LAN control toggle being gone when setting up the LED bars. Turns out Govee went all in on Matter, and my naive self thought it should not be too hard to add Matter support to HA.

Side quest - Docker

My Home Assistant is running on a server that should have been decommissioned some time ago, but I really do not want to touch HA and move it to a new host. Which is irrational, updates never failed me so far and "how hard can it be to get the Zigbee adapter passed through to a container"? On the other hand "Never touch a running system" is a generally accepted truth for a reason.

Despite my general unwillingness I still thought it might be a good idea to update the container. I think the last update was 15 months ago (give or take a few months). Turns out the compression of the HA Docker image changed in the meantime and my version of Docker was now too old. So it was time for the good old apt upgrade run. And dist-upgrade, because why not while we are at it.

Technically that should've been a good idea, but practically one of my oldest drives failed to mount, forcing me to go into the basement, grab the screen with an VGA input and a keyboard and update /etc/fstab to not auto mount a scratch drive that primarily existed the last two years to hold temporary data during system migrations.

I was curious what was going on and when the system was booted I tried to mount the partition manually.

root@citadel:~# mount /dev/sdd1 /mnt/scratch/
mount: /mnt/scratch: unknown filesystem type 'linux_raid_member'.
       dmesg(1) may have more information after failed mount system call.
root@citadel:~# mount -t ext4 /dev/sdd1 /mnt/scratch/
mount: /mnt/scratch: fsconfig() failed: /dev/sdd1: Can't open blockdev.
       dmesg(1) may have more information after failed mount system call.

Welp. A problem for another day.

Back to Home Assistant

Most tutorials I have seen deploy python-matter-server. Which seemed straight forward enough. Spin up the container in host mode, add the plugin, point it to localhost and be done with it.

matter-server | 2026-09-17 18:28:26.468 (Dummy-2) CHIP_ERROR [chip.native.DIS] Failed to advertise records: src/inet/UDPEndPointImplSockets.cpp:417: OS Error 0x02000065: Network is unreachable

After a bit searching and various random "tips" about mDNS and IGMP snooping I decided to narrow down what might be going on. I took down five of the six network interfaces in the server to remove potential error sources, and the number of ...65 errors increased. If you are confused right now - welcome to the club.

I tried pinning routes to the correct NIC with ip -6 route, flushed caches, tried to force the primary interface for the server, disabled ipv6 support for network interfaces that were down (just to be sure they are not in the picture anymore) and added NET_RAW and NET_ADMIN capabilities to the container. Still the same error.

It is only fair to note that I am using the server that is archived and there is a note in the readme that the server is being rewritten with a callout to migrate. Alas, it cannot get worse... Right?

Warning

This is a Beta version of a matter.js-based controller with a Python Matter Server compatible WebSocket interface. This version is not yet officially re-certified by the CSA, but will be in the future.

Please refer to the Beta testing instructions how to test this version.

Of course. At this point however I mostly do not care anymore. If it works, it works and I could not care less about a certification as long as it keeps working for the one device in our home that needs the integration.

services:
  ha:
    image: 'ghcr.io/home-assistant/home-assistant:stable'
    restart: always
    privileged: true
    network_mode: "host"
    volumes:
      - '/mnt/data/homeassistant/:/config'
    devices: 
      - '/dev/ttyACM0:/dev/ttyACM0'
  matter-server:
    container_name: matter-server
    image: ghcr.io/matter-js/matterjs-server:latest
    read_only: true
    restart: unless-stopped
    volumes:
      - /mnt/data/matter:/data
    network_mode: host

And to its credit, things mostly worked. I had to power cycle the LED bar to get it into pairing mode, simply generating the code to add another controller did not work. But I can control it through Home Assistant now. A win is a win.

posted on Sept. 23, 2026, 7:44 p.m. in homelab, self-hosting