Official Docker image for Homebridge - Emulate the iOS HomeKit API on your network
We have migrated the official Homebridge Docker image from oznu/homebridge to homebridge/homebridge.
Please update your configurations to use the new image location for the latest updates and features.
- Docker Engine with networking access
- Host network mode support (required for HomeKit)
β οΈ Compatibility Note: This image does not work with Docker Desktop for Mac or Windows due to networking limitations (details).
This is a multi-architecture Ubuntu 24.04-based image supporting x86_64, ARM32v7 (Raspberry Pi), and ARM64v8 platforms.
| Image Tag | Architectures | Base Image | Release Type | Description |
|---|---|---|---|---|
latest, ubuntu |
amd64, arm32v7, arm64v8 | Ubuntu 24.04 | Stable | Production-ready with latest stable releases |
beta |
amd64, arm32v7, arm64v8 | Ubuntu 24.04 | Beta | Pre-release with beta versions for testing |
alpha |
amd64, arm32v7, arm64v8 | Ubuntu 24.04 | Alpha | Early access with alpha versions for development |
Create a docker-compose.yml file:
services:
homebridge:
image: homebridge/homebridge:latest
restart: always
network_mode: host
hostname: docker-desktop # Optional: Set container hostname
volumes:
- ./volumes/homebridge:/homebridge
environment:
- TZ=America/Toronto # Optional: Set your timezone
- ENABLE_AVAHI=1 # Optional: Enable/disable Avahi (1=enabled, 0=disabled)
logging:
driver: json-file
options:
max-size: '10m'
max-file: '1'
healthcheck:
test: ["CMD-SHELL", "curl --fail http://localhost:8581 || exit 1"]
interval: 60s
retries: 5
start_period: 300s
timeout: 2sStart the container:
docker compose up -ddocker run \
--net=host \
--name=homebridge \
-e TZ=America/Toronto \
-v $(pwd)/homebridge:/homebridge \
homebridge/homebridge:latest| Parameter | Docker Compose | Docker CLI | Description |
|---|---|---|---|
| Network Mode | network_mode: host |
--net=host |
Required - Enables host networking for HomeKit discovery |
| Volume Mount | volumes: |
-v /path:/homebridge |
Required - Persistent storage for config and plugins |
| Parameter | Docker Compose | Docker CLI | Default | Description |
|---|---|---|---|---|
| Hostname | hostname: homebridge |
--hostname=homebridge |
Container ID | Set custom hostname for the container |
| Timezone | environment:- TZ=America/Toronto |
-e TZ=America/Toronto |
UTC |
Set timezone (list) |
| Avahi mDNS | environment:- ENABLE_AVAHI=1 |
-e ENABLE_AVAHI=1 |
1 |
Set to 0 to disable Avahi mDNS service |
Access the Homebridge UI at http://<your-server-ip>:8581
The UI allows you to:
- β Install, update, and remove plugins
- β Edit Homebridge configuration
- β View logs and restart Homebridge
- β Manage accessories and bridges
For advanced customization, use the Startup Script feature in the UI (Settings β Startup & Environment).
The startup.sh script:
- Runs on every container start
- Persists across container recreations
- Can install packages, copy files, or execute custom commands
Example:
#!/bin/sh
# Install custom Node.js packages
npm install -g some-custom-package
# Install Python dependencies
pip3 install some-python-library
# Copy configuration from host
cp /homebridge/custom-config.json /etc/custom-config.json- Running Homebridge with Docker on Linux
- Running Homebridge on Synology NAS
- Running Homebridge on Unraid
Pull the latest image and recreate your container:
docker compose pull
docker compose up -d
β οΈ Not Recommended: Automated updates using tools like Watchtower are strongly discouraged and done at your own risk
Since the 2025-06-25 release, updates to
- Homebridge core
- Homebridge UI
- Node.js runtime
will be overwritten if the container is updated.
This image includes FFmpeg with libfdk-aac audio support for camera streaming and video processing.
This repository includes automated validation to ensure container builds work correctly.
To validate a specific release:
- Go to Actions
- Select "Validate Docker Container"
- Click "Run workflow"
- Choose the release tag:
latest- Stable releasebeta- Beta pre-releasealpha- Alpha early release
The validation workflow will:
- β Start the container and verify it runs
- β Check Homebridge UI accessibility on port 8581
- β Verify Homebridge service starts with version detection
- β Validate container health checks
- β Extract and validate the Docker manifest
FFmpeg with libfdk-aac audio support is included in this image. No additional installation required.
If you see errors like:
Node.js[445]: ../src/util.cc:188:double node::GetCurrentTimeInMicroseconds(): Assertion `(0) == (uv_gettimeofday(&tv))' failed.
s6-svscan: warning: unable to iopause: Operation not permitted
Your host OS needs to be updated. See #434 and #441 for solutions.
Join the Official Homebridge Discord and ask in the #docker channel.
Copyright (C) 2024 homebridge
Copyright (C) 2017-2022 oznu
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Made with β€οΈ by the Homebridge community