Skip to content

Govee2MQTT Setup Guide

Andy Gillis edited this page Jul 21, 2026 · 1 revision

Govee2MQTT Service Overview

Govee2MQTT bridges Govee LAN-enabled lights directly to your MQTT broker, allowing local API control, rapid status updates, and automation via Home Assistant without relying on Govee's cloud API.


Key Features & Requirements

  • Local LAN Control: Provides fast, local control of Govee lighting fixtures (requires LAN Control enabled per device within the official Govee Home app).
  • Network Mode: Operates using network_mode: host to facilitate local UDP device discovery across your network segment.
  • Home Assistant Integration: Automatically discovers connected Govee lights when linked to the same Mosquitto MQTT broker.
  • Full Lighting Controls: Supports state, brightness, RGB color selection, lighting effects, and custom transitions.

Step 1: Deploy Service Template

  1. Copy the govee2mqtt.yaml template into your active server compose directory:
cp compose/templates/govee2mqtt.yaml compose/server1/govee2mqtt.yaml
  1. Verify that your root .env contains the required network settings (SERVER_IP, TZ, GOVEE_MAC, etc.).

Step 2: Service Definition

# ------------------------------------------------------------------------------
# Govee2MQTT - LAN Control for Govee Lights
# ------------------------------------------------------------------------------
# This container bridges Govee LAN-enabled lights to MQTT, enabling
# real-time control and automation via Home Assistant.
#
# Key Features:
# - Local control of Govee lights (no cloud required)
# - Supports color, brightness, effects, and transitions
# - Publishes device state and listens for commands via MQTT
#
# Notes:
# - Requires LAN control enabled in Govee app
# - MQTT broker must be reachable at ${MQTT_HOST}
# ------------------------------------------------------------------------------
services:
  govee2mqtt:
    container_name: govee2mqtt.${HOST_NAME}
    hostname: govee2mqtt.${HOST_NAME}.lan
    image: ghcr.io/wez/govee2mqtt:latest
    environment:
      TZ: ${TZ}
      GOVEE_MQTT_HOST: ${SERVER_IP}
      PUID: ${PUID}
      PGID: ${PGID}
      MQTT_PORT: 1883
      GOVEE_MAC: ${GOVEE_MAC}
      GOVEE_MODEL: H705E
      GOVEE_NAME: govee_outdoor
      GOVEE_CONFIG: /config/config.yaml
    volumes:
      - ${DOCKERDIR}/govee2mqtt/config:/config
    restart: always
    network_mode: host
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    labels:
      - "com.centurylinklabs.watchtower.enable=true"

Note: The volume mount is set to standard ${DOCKERDIR}/govee2mqtt/config:/config for consistency with the rest of your appdata stack.


Deployment Commands

Launch or restart the container using your project stack flag:

  • Deploy Service:

    docker compose -p mediaserver -f docker-compose-server1.yaml up -d govee2mqtt
  • Check Container Logs (Device Discovery):

    docker compose -p mediaserver -f docker-compose-server1.yaml logs -f govee2mqtt

Clone this wiki locally