All apps · 0 apps
eufy-sdk-bridge
Docker app from Tursko's Repository
Overview
Readme
View on GitHubha-eufy-sdk-bridge
The host-facing daemon: one process that logs into eufy once and exposes the
eufy-sdk to a frontend — Home Assistant, a web UI,
anything. Ships as a multi-arch Docker image with go2rtc
bundled, so live camera video is available as RTSP / WebRTC / MSE / HLS with nothing else to install.
WS :3000/ws control, state, events ← the frontend talks to this
HTTP :3000/stream/<sn> live video (Annex-B) ← go2rtc pulls this
HTTP :3000/snapshot/<sn> a JPEG still
HTTP :3000/healthz which cameras are streaming
Video is deliberately not on the WebSocket: the WS hands back a URL, and connecting to that URL is what starts the camera — disconnecting is what stops it. There is no "stream is running" flag to drift out of sync.
Run it
Pull the published image and run it (bundles the SDK + go2rtc):
docker run -d --name eufy-bridge --network host \
-e EUFY_EMAIL='you@example.com' -e EUFY_PASSWORD='…' -e EUFY_COUNTRY='GB' \
-v /opt/eufy-bridge-data:/app/data \
ghcr.io/mega-yfue/ha-eufy-sdk-bridge:latest
or with Compose (cp .env.example .env first): docker compose up -d.
Full deploy guide (alongside Home Assistant, config reference, first-run 2FA/captcha): docs/docker-compose.md · WS protocol: docs/ws-protocol.md
Where it fits
| Repo | Role |
|---|---|
eufy-sdk |
the HA-agnostic library |
ha-eufy-sdk-bridge |
this — WS + HTTP + go2rtc daemon (Docker) |
ha-eufy-sdk-addon |
Home Assistant add-on wrapper |
ha-eufy-sdk |
the HACS integration (front door) |
Status: working — WS control + auth-over-WS (2FA/captcha), device listing, snapshots, and go2rtc streaming. Published image:
ghcr.io/mega-yfue/ha-eufy-sdk-bridge(multi-arch:amd64·arm64). Publishing a GitHub Release builds and pushes the versioned +:latesttags automatically (.github/workflows/publish-ghcr.yml); the same build runs locally viascripts/publish-multiarch.sh. A merge to thedevbranch publishes a rolling:devtag for testing.
Contributing
Contributions are welcome — please branch from dev and open your PR against dev (not
main). See CONTRIBUTING.md for the branch model, CI checks, and how releases
are cut.
Develop
The bridge is ESM (no build step) and depends on the SDK as a normal npm package
(@mega-yfue/eufy-sdk) — npm install pulls it
from the registry, no sibling checkout needed.
npm install
npm test # node --test
npm run lint # prettier --check . (npm run format to fix)
Every PR into main or dev runs the CI gate (.github/workflows/ci.yml):
npm ci → lint → compile (node --check on each .mjs) → test. main is the public release line;
dev is the development line (rolling :dev image).
Install eufy-sdk-bridge on Unraid in a few clicks.
Find eufy-sdk-bridge in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Categories
Related apps
Explore more like this
Explore allDetails
ghcr.io/mega-yfue/ha-eufy-sdk-bridge:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]/- Network
bridge- Shell
bash- Privileged
- false
Template configuration
Host Port
- Target
- 3000
- Default
- 3000
- Value
- 3000
The path where the configuration file will be stored.
- Target
- /app/data
- Default
- /mnt/user/appdata/eufy-sdk-bridge
- Value
- /mnt/user/appdata/eufy-sdk-bridge
Eufy Account Email
Eufy Account Password
Country code (default: US)
- Default
- US
- Value
- US
Auto-off a camera's live stream after this many `ms` with no detection event (motion/person/…). Helps save battery. Default is 300000ms (5 min).
- Default
- 300000
- Value
- 300000
Turn the device's native RTSP publish (rtspStream) OFF on a BATTERY camera left idle. Default is 300000ms (5 min).
- Default
- 300000
- Value
- 300000