voice-bridge: Discord voice <-> Lotus voice room (patched nether-voicebridge)
Lint / Shell (shellcheck) (push) Successful in 2m0s
Lint / JS (eslint) (push) Successful in 2m1s
Lint / No secrets in webhook configs (push) Successful in 18s
Lint / Landing page is rendered (matrix (push) Successful in 18s
Lint / Python (ruff) (push) Successful in 25s
Lint / Secret scan (gitleaks) (push) Successful in 14s
Lint / Shell (shellcheck) (pull_request) Successful in 9s
Lint / JS (eslint) (pull_request) Successful in 9s
Lint / No secrets in webhook configs (pull_request) Successful in 7s
Lint / Python deps (pip-audit) (push) Successful in 1m7s
Lint / Landing page is rendered (matrix (pull_request) Successful in 4s
Lint / Python (ruff) (pull_request) Successful in 6s
Lint / Secret scan (gitleaks) (pull_request) Successful in 6s
Lint / Python deps (pip-audit) (pull_request) Successful in 30s
Lint / Shell (shellcheck) (push) Successful in 2m0s
Lint / JS (eslint) (push) Successful in 2m1s
Lint / No secrets in webhook configs (push) Successful in 18s
Lint / Landing page is rendered (matrix (push) Successful in 18s
Lint / Python (ruff) (push) Successful in 25s
Lint / Secret scan (gitleaks) (push) Successful in 14s
Lint / Shell (shellcheck) (pull_request) Successful in 9s
Lint / JS (eslint) (pull_request) Successful in 9s
Lint / No secrets in webhook configs (pull_request) Successful in 7s
Lint / Python deps (pip-audit) (push) Successful in 1m7s
Lint / Landing page is rendered (matrix (pull_request) Successful in 4s
Lint / Python (ruff) (pull_request) Successful in 6s
Lint / Secret scan (gitleaks) (pull_request) Successful in 6s
Lint / Python deps (pip-audit) (pull_request) Successful in 30s
Production setup for the Discord voice bridge on LXC 151: config and appservice-registration templates (secrets rendered on the server), an idempotent install script (one Synapse restart on first install, creates the bot account so it can be invited), and a hardened systemd unit. voice-limit-guard: VOICE_LIMIT_EXEMPT_USERS lets the bridge's own bot listen in a call without taking a slot; relayed Discord speakers still count. Unit tests added (61 pass); verified live on the dev stack. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_017PCb59uY3UKqDqt7B6hzd5
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
db2f523028
commit
46d0e98424
@@ -448,6 +448,40 @@ while the bridge or Synapse was down are bridged when it starts again.
|
||||
|
||||
---
|
||||
|
||||
## Voice Bridge (nether-voicebridge, Lotus-patched)
|
||||
|
||||
Bridges Discord voice into a Lotus voice room. People on Discord appear **inside the Matrix call**
|
||||
under their Discord names, with a speaking indicator. People in Lotus appear in the Discord channel
|
||||
as `[Matrix] <name>`, with mute mirrored to Discord.
|
||||
|
||||
| | Text | Voice |
|
||||
|---|---|---|
|
||||
| Discord (Lotus Guild server) | #matrix-bridge | matrix-bridge |
|
||||
| Matrix (Lotus) | Discord Bridge (mautrix-discord) | Discord Voice Bridge (`!yS_ZIHL3sOKQJBt4NiIQyiHKt3cv6HrIDeq7OxDpSM0`) |
|
||||
|
||||
- **Build:** upstream [nether-voicebridge](https://nether.codes/nether/nether-voicebridge) `cf52945`
|
||||
plus 11 Lotus patches (reported upstream). Patches, bug log and issue drafts live in
|
||||
`/root/code/voice-bridge-trial/`. **Don't run the unpatched release**. Without the patches the
|
||||
bridge can't see anyone using current Element Call or Lotus Call (`livekit_alias`), and encrypted
|
||||
voice breaks after a restart on Synapse.
|
||||
- **Accounts:** the bot is `@lotus-voice_bot`, shown in encrypted calls as "Discord Voice Bridge".
|
||||
Discord speakers are `@lotus-voice_<discord id>`. The appservice registration is
|
||||
`/etc/matrix-synapse/lotus-voice-registration.yaml`.
|
||||
- **Discord bots:** Lotus Voice 1–3, one per Matrix person speaking at once. Each has only Connect,
|
||||
Speak, Use Voice Activity and Change Nickname, and none can see #matrix-bridge text.
|
||||
- **Files on LXC 151:**
|
||||
- binary: `/opt/lotus-voice/lotus-voice-bridge`
|
||||
- config: `/etc/lotus-voice/config.toml` (0600, holds the bot tokens)
|
||||
- state: `/var/lib/lotus-voice`
|
||||
- service: `lotus-voice-bridge`, logs via `journalctl -u lotus-voice-bridge`
|
||||
- **Voice limits:** `voice-limit-guard` ignores `@lotus-voice_bot` (`VOICE_LIMIT_EXEMPT_USERS`), so
|
||||
the bot never takes a slot. Discord speakers count like anyone else. When a room is full the
|
||||
bridge stops trying cleanly, and the Discord user just isn't heard.
|
||||
- **Install / upgrade:** on the Proxmox node hosting LXC 151, run
|
||||
`bash voice-bridge/install.sh <binary> <secrets file with BOT1..BOT3>`. The first install
|
||||
registers the appservice, restarts Synapse once and creates the bot account. Then invite
|
||||
`@lotus-voice_bot:matrix.lotusguild.org` to the voice room. Upgrades just swap the binary.
|
||||
|
||||
## Bot profiles
|
||||
|
||||
Every bot account has a proper name and an avatar in one style (white glyph on a coloured square). Image sources are in `avatars/` and `discord-bridge/bot-avatar.png`.
|
||||
|
||||
Reference in New Issue
Block a user