tezraJOURNAL
← All articles

Story 01 / Home infrastructure

Single-node Kubernetes.
A smart-home hub.

A personal cloud, email and media already share one server. Here is how Home Assistant and Zigbee through SONOFF can join them, with clear dependencies and a recovery plan.

Vitaliy Mishin10 min read
One server · shared platformTZ / 01
Nextcloud / SMBStalwart / PlexTranscription / GPU
KubernetesSINGLE NODE
Home AssistantMQTT / Zigbee2MQTTSONOFF / Zigbee
Left: existing server services, including SMB on the host. Dashed: the proposed smart-home setup; the SONOFF coordinator sits outside Kubernetes.

One server, several useful jobs

A home server earns its place by helping with everyday tasks. Open a document from a laptop or phone. Turn a meeting recording into text. Watch a film on the television. The next step is to let that same system respond to the physical home: movement, temperature and an open door.

My server already handles several of these jobs. It runs a single-node Kubernetes cluster: one physical computer provides the control plane and runs the applications. This creates a shared platform for deploying separate services and managing their configuration.

What is running, and what is being designed

On 24 September 2026, I checked that the node was ready, the applications listed below were running, and the Samba service was active. Home Assistant, Zigbee2MQTT and a SONOFF coordinator have not yet been deployed in this setup. The smart-home sections describe the proposed next stage; the automation examples still need testing.

What my home server does
RoleToolsEveryday value
Files and documentsSamba / SMB, NextcloudShared folders and browser access to documents.
EmailStalwartA mail service on a personal domain.
Media libraryPlex, TransmissionOrganising personal media and managing downloads.
Audio processingTranscription service, RTX 3070 TiTranscribing recordings on my own hardware.
Development labGitLab, test applicationsA place to develop and validate services.

Not every service needs to run inside Kubernetes. Samba, for example, runs on the host. In this architecture, the server provides the hardware, Kubernetes hosts applications, and Home Assistant would provide the home-control layer. Each has a distinct responsibility.

Why use Kubernetes at home with only one node?

The practical benefit is a consistent way to operate multiple applications. You can describe which container should run, where its data belongs and how to check whether it is ready. Configuration records the intended system, so an update does not depend on remembering how a process was originally started.

Shared workloads deserve particular attention at home. Transcribing a long recording, scanning a media library and running a database can all compete for resources. Set appropriate requests and limits, then compare them with actual usage. They help manage allocation; they do not create extra memory or processing capacity. Kubernetes resource management.

The cost is maintaining the cluster itself: upgrades, networking, storage and recovery. If the whole project is Home Assistant and a couple of supporting services, Docker Compose or Home Assistant OS may require less effort. Kubernetes makes sense when it is already part of the household infrastructure, or when operating it is an intentional part of the project.

A single node gives services a common operating model. It does not make the computer highly available.

How Home Assistant, MQTT and Zigbee fit together

For the proposed setup, I would use Home Assistant for the interface and automation logic, Mosquitto as the MQTT broker, and Zigbee2MQTT to connect the broker to the Zigbee radio network. A SONOFF coordinator provides the radio interface.

A temperature sensor sends a reading over Zigbee. The coordinator receives it, Zigbee2MQTT publishes it to MQTT, and Home Assistant uses it in a dashboard or automation. A command to a compatible relay travels in the opposite direction. Device discovery requires the MQTT integration in Home Assistant and discovery enabled in Zigbee2MQTT. Integration documentation.

PROPOSED EVENT PATH
SensorsSONOFFZigbee2MQTTMQTTHome Assistant
Zigbee connects devices to the coordinator. MQTT connects the software services. Commands travel in the opposite direction.

An alternative is ZHA, which connects a coordinator directly to Home Assistant. That Zigbee setup does not need a separate MQTT broker. Choose one owner for a coordinator: ZHA and Zigbee2MQTT cannot both use it at the same time. ZHA documentation.

For Kubernetes, the relevant installation is Home Assistant Container. It does not include the app installation mechanism available in Home Assistant OS; Mosquitto and Zigbee2MQTT must be deployed separately. This suits an owner willing to maintain each component. Home Assistant installation options.

SONOFF: USB by the server, or Ethernet near the sensors?

SONOFF is a brand covering different devices. Before configuring anything, identify the exact model, radio chipset and installed firmware. A consumer Zigbee Bridge should not be assumed to behave like a USB coordinator.

Option 1. A USB coordinator

The CC2652P-based ZBDongle-P uses the zstack adapter in Zigbee2MQTT. The EFR32MG21-based ZBDongle-E uses ember with compatible firmware. Similar-looking dongles need different settings. ZBDongle-P · ZBDongle-E.

USB is a reasonable fit when the server is in a suitable radio location. The deployment needs access to the device, a stable way to identify the adapter and placement of Zigbee2MQTT on the node with that USB port. After unplugging and reconnecting the dongle, verify that communication recovers; a running process alone is not enough.

Option 2. A network coordinator

SONOFF Dongle Max, model Dongle-M, supports Ethernet and PoE power. It can sit closer to the living area while the server stays in a utility room. This introduces a dependency on the switch and local network. Zigbee2MQTT recommends wired connectivity for remote adapters because Wi-Fi latency and packet loss can disrupt their serial protocol. Connecting Dongle Max · Adapter recommendations.

In either case, test coverage in the actual house. Compatible mains-powered devices can extend the Zigbee mesh; a battery sensor should not be counted on as a repeater. Check support for the exact device model and required features, rather than relying on the Zigbee logo alone.

Five automations worth starting with

The first automation should deliver a small, understandable benefit and be easy to test. These are design examples, not automations already verified on my server.

  1. Night lighting. Motion in a hallway turns on a compatible lamp at low brightness. The light goes off after a defined period without further motion. Start with one area and retain ordinary manual control.
  2. Bathroom humidity. A sensor reports humidity; Home Assistant compares it with a threshold and controls ventilation through a suitable relay. Separate on and off thresholds help avoid repeated switching.
  3. An open window. After several minutes of ventilation, the system changes the mode of a compatible thermostat. Closing the window restores the previous setpoint. Test what happens if communication with the sensor is lost.
  4. Water detection. A leak sensor triggers a local alert. Automatic shut-off is a separate project requiring a suitable valve actuator, manual control and testing. Critical household protection should remain independent of this server.
  5. A button by the front door. One press turns off selected lights. Define the group explicitly, keeping refrigerators, networking equipment and other essential loads outside it.

Write down four things for each automation: the event, the condition, the action and how it ends or can be overridden. For example: “motion → after 11 p.m. → light at 15% → off after two minutes without motion.” That is a testable requirement other people in the household can understand.

What happens when the internet or server goes down?

A local Zigbee automation can be designed without a manufacturer's cloud. Independence from the internet, however, does not remove dependencies on power, the radio network or the home computer. The proposed architecture needs to be considered one failure at a time.

Explore the dependencies
All components are available

A sensor sends an event through SONOFF and Zigbee2MQTT. MQTT delivers it to Home Assistant, which runs the configured action.

ZigbeeLANMQTTHome AssistantInternet
A dependency model, not a measured test result.
Expected behaviour — to be tested after deployment
EventWhat changes
Internet connection failsLocal automations may continue if LAN and power remain available. Cloud integrations and external notifications are unavailable.
Home Assistant stopsIts automations stop. Zigbee2MQTT and MQTT can run independently, but do not replace Home Assistant's logic.
The server shuts downApplications hosted on it are unavailable. A separately powered network coordinator cannot preserve server-side automations by itself.
The house loses powerThe outcome depends on backup power for every required component, including networking equipment and actuators.

Some Zigbee devices support direct binding, such as a remote controlling a lamp. Commands can then bypass Home Assistant, but support and behaviour must be checked for the specific devices. Zigbee binding explained.

What to plan before pairing the first sensor

Persistent data and backups

Home Assistant configuration, Zigbee2MQTT data and any required broker data need to survive outside a container's writable filesystem. A PersistentVolume addresses storage lifecycle; it is not a backup. A copy on the same disk does not protect against that disk failing. Kubernetes storage.

I would keep application configuration and a supported coordinator backup on separate storage, protect them as sensitive data and test recovery. Whether a Zigbee network can migrate depends on the adapter and software in use.

One owner for the coordinator

One coordinator requires one active Zigbee2MQTT instance. An update must not create a second competing owner of the device. When using Helm, enable persistent storage explicitly and configure node placement for a USB adapter. Running Zigbee2MQTT on Kubernetes.

Networking and access

Do not expose management interfaces or MQTT to the public internet simply for convenience. Existing protected access to the home network can support remote management. Multicast discovery needs a separate network design; a regular Ingress does not solve it. Configure MQTT accounts and permissions for the topics they need.

A practical validation sequence

Connect one sensor and one controllable device. Verify readings and manual commands, then add a simple automation. Next, test application restarts, a server reboot and loss of the external internet connection, one at a time. An observed result is the basis for saying that a particular automation survives a particular failure.

When this architecture makes sense

My home server already brings together documents, email, media and audio processing. A smart home adds another set of events and actions to that computing platform. Clear responsibilities help: Kubernetes operates applications, Home Assistant holds the household logic, and SONOFF connects the software to Zigbee devices.

A small first setup is enough: a coordinator, a sensor, a lamp and one understandable automation. Once its dependencies are known and recovery has been tested, the system becomes easier to extend. Being able to explain and maintain each step is what makes a home platform useful over time.

Frequently asked questions

Does a smart home need Kubernetes?

No. It is useful when it already hosts your home applications or you deliberately want to operate it. Home Assistant OS and Docker Compose can be simpler for a small collection of services.

Can I skip Zigbee2MQTT?

Yes. ZHA connects a compatible coordinator directly to Home Assistant. The choice depends on your devices, required features and maintenance preferences.

Do I need a graphics card?

The Zigbee setup and ordinary automations described here do not require a GPU. My server uses its graphics card for a separate audio transcription service.

Will everything work without internet access?

Only the parts with no external service dependencies. Test local automations with the WAN disconnected; evaluate remote access and external notifications separately.

Vitaliy Mishin
Vitaliy Mishin

Principal Engineer & Systems Architect at Tezra

System architecture, secure access and infrastructure operations.