feat(ring): bridge runs automatically (no manual command)
User: the Ring bridge should start on its own, not via a manual command. Made ring-mqtt part of the always-on stack (dropped the `addons` compose profile) — it starts with `docker compose up -d`, idle until you log in. The setup guide no longer shows a start command; it just links to the bridge UI for the Ring login (+ 2FA) and reflects the real bridge status. README updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>feat/phase-1-bootstrap
parent
97dc49e577
commit
ab8713bcb3
21
README.md
21
README.md
|
|
@ -52,21 +52,14 @@ On-demand integrations, managed under **Add-ons** in the sidebar.
|
|||
|
||||
### Ring (cloud, opt-in)
|
||||
|
||||
Ring has no local API, so HomeOS bridges it via [ring-mqtt](https://github.com/tsightler/ring-mqtt),
|
||||
which runs as an **opt-in** container (it never starts on a Ring-less setup):
|
||||
Ring has no local API, so HomeOS bridges it via [ring-mqtt](https://github.com/tsightler/ring-mqtt).
|
||||
The bridge is part of the stack, so it **starts automatically** with `docker compose up -d` — no
|
||||
manual step. Then:
|
||||
|
||||
```bash
|
||||
bash docker/mosquitto/gen-passwd.sh # seeds the least-privileged `ring` broker account
|
||||
docker compose --profile addons up -d ring-mqtt # start the bridge
|
||||
```
|
||||
|
||||
Then:
|
||||
|
||||
1. Open **http://<host>:${RING_UI_PORT:-55123}** (ring-mqtt's own web UI) and sign in with your
|
||||
Ring account (email + password + 2FA). It mints and stores the refresh token — HomeOS never
|
||||
handles Ring's OAuth itself.
|
||||
2. In HomeOS → **Add-ons → Ring → Install**, then **Connect account**.
|
||||
3. Ring devices (doorbell, cameras, sensors) appear automatically under **Devices**, tagged **Cloud**.
|
||||
1. In HomeOS → **Add-ons → Ring → Install → Einrichten**, click **Open bridge UI**
|
||||
(**http://<host>:${RING_UI_PORT:-55123}**) and sign in with your Ring account (email + password
|
||||
+ 2FA). The bridge mints and stores the refresh token — HomeOS never handles Ring's OAuth.
|
||||
2. Ring devices (doorbell, cameras, sensors) appear automatically under **Devices**, tagged **Cloud**.
|
||||
|
||||
## Install as an app (PWA)
|
||||
|
||||
|
|
|
|||
|
|
@ -86,15 +86,13 @@ services:
|
|||
- "${MQTT_HOST_PORT:-1883}:1883"
|
||||
restart: unless-stopped
|
||||
|
||||
# Ring bridge — installable add-on, opt-in so a Ring-less setup never runs it:
|
||||
# docker compose --profile addons up -d ring-mqtt
|
||||
# Ring has no local API (handoff §12): the initial account login + 2FA is done in ring-mqtt's
|
||||
# own web UI (http://<host>:${RING_UI_PORT:-55123}), which mints the refresh token; the bridge
|
||||
# then connects to our broker as the least-privileged `ring` user and publishes device state
|
||||
# under ring/# for HomeOS to ingest. We do not build a custom Ring client.
|
||||
# Ring bridge — part of the stack so it starts automatically (no manual command). Idle and
|
||||
# cheap until you log in. Ring has no local API (handoff §12): the account login + 2FA is done
|
||||
# in ring-mqtt's own web UI (http://<host>:${RING_UI_PORT:-55123}), which mints the refresh
|
||||
# token; the bridge then connects to our broker as the least-privileged `ring` user and
|
||||
# publishes device state under ring/# for HomeOS to ingest. We do not build a custom Ring client.
|
||||
ring-mqtt:
|
||||
image: tsightler/ring-mqtt
|
||||
profiles: ["addons"]
|
||||
depends_on:
|
||||
- mosquitto
|
||||
environment:
|
||||
|
|
|
|||
|
|
@ -24,10 +24,9 @@ return [
|
|||
'body' => 'Ring bietet keine lokale Schnittstelle. Die Anmeldung inkl. 2FA passiert in der eigenen Weboberfläche der ring-mqtt-Bridge — HomeOS speichert keine Ring-Zugangsdaten.',
|
||||
'setup' => 'Einrichten',
|
||||
'setup_title' => 'Ring einrichten',
|
||||
'setup_intro' => 'Ring wird über die separate ring-mqtt-Bridge angebunden. So richtest du sie ein:',
|
||||
'step1' => 'Bridge starten (einmalig, am Server):',
|
||||
'step2' => 'Bridge-Oberfläche öffnen und mit deinem Ring-Konto anmelden (inkl. 2FA). Die Bridge speichert das Token.',
|
||||
'step3' => 'Fertig — deine Ring-Geräte erscheinen automatisch unter „Geräte" (Badge „Cloud").',
|
||||
'setup_intro' => 'Die ring-mqtt-Bridge läuft automatisch als Teil von HomeOS — kein manueller Start nötig. So verbindest du dein Ring-Konto:',
|
||||
'step1' => 'Bridge-Oberfläche öffnen (Button unten) und mit deinem Ring-Konto anmelden — inklusive 2FA. Die Bridge speichert das Token.',
|
||||
'step2' => 'Fertig — deine Ring-Geräte erscheinen automatisch unter „Geräte" (Badge „Cloud").',
|
||||
'open_bridge' => 'Bridge-Oberfläche öffnen',
|
||||
'status_title' => 'Bridge-Status',
|
||||
'status_hint_disconnected' => 'Noch keine Verbindung von der Bridge empfangen. Starte die Bridge und melde dich an.',
|
||||
|
|
|
|||
|
|
@ -24,10 +24,9 @@ return [
|
|||
'body' => 'Ring has no local API. The login incl. 2FA happens in the ring-mqtt bridge\'s own web UI — HomeOS never stores Ring credentials.',
|
||||
'setup' => 'Set up',
|
||||
'setup_title' => 'Set up Ring',
|
||||
'setup_intro' => 'Ring connects through the separate ring-mqtt bridge. Set it up like this:',
|
||||
'step1' => 'Start the bridge (once, on the server):',
|
||||
'step2' => 'Open the bridge UI and sign in with your Ring account (incl. 2FA). The bridge stores the token.',
|
||||
'step3' => 'Done — your Ring devices appear automatically under “Devices” (with a “Cloud” badge).',
|
||||
'setup_intro' => 'The ring-mqtt bridge runs automatically as part of HomeOS — no manual start. Connect your Ring account like this:',
|
||||
'step1' => 'Open the bridge UI (button below) and sign in with your Ring account — including 2FA. The bridge stores the token.',
|
||||
'step2' => 'Done — your Ring devices appear automatically under “Devices” (with a “Cloud” badge).',
|
||||
'open_bridge' => 'Open bridge UI',
|
||||
'status_title' => 'Bridge status',
|
||||
'status_hint_disconnected' => 'No connection received from the bridge yet. Start the bridge and sign in.',
|
||||
|
|
|
|||
|
|
@ -5,19 +5,12 @@
|
|||
<ol class="flex flex-col gap-3">
|
||||
<li class="flex gap-3">
|
||||
<span class="grid place-items-center w-6 h-6 rounded-full bg-inset text-ink-2 font-mono text-[12px] shrink-0">1</span>
|
||||
<div class="min-w-0 flex-1">
|
||||
<p class="text-[12.5px] text-ink-2">{{ __('addons.ring.step1') }}</p>
|
||||
<code class="mt-1 block rounded-lg bg-base border border-line-soft px-3 py-2 text-[12px] font-mono text-ink overflow-x-auto">docker compose --profile addons up -d ring-mqtt</code>
|
||||
</div>
|
||||
<p class="text-[12.5px] text-ink-2 pt-0.5">{{ __('addons.ring.step1') }}</p>
|
||||
</li>
|
||||
<li class="flex gap-3">
|
||||
<span class="grid place-items-center w-6 h-6 rounded-full bg-inset text-ink-2 font-mono text-[12px] shrink-0">2</span>
|
||||
<p class="text-[12.5px] text-ink-2 pt-0.5">{{ __('addons.ring.step2') }}</p>
|
||||
</li>
|
||||
<li class="flex gap-3">
|
||||
<span class="grid place-items-center w-6 h-6 rounded-full bg-inset text-ink-2 font-mono text-[12px] shrink-0">3</span>
|
||||
<p class="text-[12.5px] text-ink-2 pt-0.5">{{ __('addons.ring.step3') }}</p>
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
<a href="{{ $bridgeUrl }}" target="_blank" rel="noopener noreferrer"
|
||||
|
|
|
|||
Loading…
Reference in New Issue