feat(bbb-docker): Add enable switches for **Collabora** and **Coturn** + make Collabora URL configurable
Summary
This MR introduces opt-in/opt-out switches for bundling Collabora and Coturn inside the BigBlueButton Docker stack. It also makes the Collabora endpoint configurable via COLLABORA_URL. With these changes, operators can either run the bundled services or disable them to use centralized services provided elsewhere in the infrastructure (e.g., via Infinito.Nexus roles).
- New env flags:
ENABLE_COLLABORA,ENABLE_COTURN - New env var:
COLLABORA_URL(used by conversion scripts) - Conditional
depends_onand service blocks in the Compose template - Updated
sample.envandscripts/generate-compose
These switches are required to integrate with centralized deployments managed by Infinito.Nexus:
- BigBlueButton role: https://github.com/kevinveenbirkenbach/infinito-nexus/tree/master/roles/web-app-bigbluebutton
- Coturn service role: https://github.com/kevinveenbirkenbach/infinito-nexus/tree/master/roles/web-svc-coturn
- Collabora service role: https://github.com/kevinveenbirkenbach/infinito-nexus/tree/master/roles/web-svc-collabora
What changed
Compose template (docker-compose.tmpl.yml)
-
bbb-web.depends_on: gatedcollaborawith{{ if isTrue .Env.ENABLE_COLLABORA }} ... {{ end }} -
bbb-web.environment: addedCOLLABORA_URLwith sensible default -
etherpad.depends_on: conditionally depends oncollabora -
New conditional blocks:
- Wrap entire
collaboraservice with{{ if isTrue .Env.ENABLE_COLLABORA }} ... {{ end }} - Wrap entire
coturnservice with{{ if isTrue .Env.ENABLE_COTURN }} ... {{ end }}
- Wrap entire
Conversion scripts
-
mod/bbb-web/office-convert.sh: use$COLLABORA_URL/convert-to/...instead of hardcodedhttps://collabora:9980/cool/... -
mod/etherpad/etherpad-export.sh: same change to use$COLLABORA_URL
Environment & generation
-
sample.env: added:ENABLE_COLLABORA=true COLLABORA_URL=https://collabora:9980/cool ENABLE_COTURN=true -
scripts/generate-compose: export new flags to the templater:-e ENABLE_COTURN=${ENABLE_COTURN:-true} \ -e ENABLE_COLLABORA=${ENABLE_COLLABORA:-true} \
Why
- Let operators disable embedded services and consume centralized, shared services (e.g., a site-wide Collabora/Coturn), reducing duplication and simplifying maintenance.
- Avoid hardcoded Collabora URL to support different network topologies (internal hostname, external FQDN, reverse proxy path, TLS termination variants).
How to use
-
Bundled services (default):
ENABLE_COLLABORA=true COLLABORA_URL=https://collabora:9980/cool ENABLE_COTURN=true -
External/central services:
ENABLE_COLLABORA=false COLLABORA_URL=https://collabora.example.org/cool ENABLE_COTURN=falseEnsure your external Coturn and Collabora endpoints are reachable and correctly configured.
Backwards compatibility
- Defaults keep previous behavior: both services remain enabled and the in-stack Collabora URL is preserved.
- Scripts now honor
COLLABORA_URL. If unset, Compose injects the previous default (https://collabora:9980/cool).
Testing
-
Default path (embedded)
-
ENABLE_COLLABORA=true,ENABLE_COTURN=true - Run
./scripts/generate-composeanddocker compose up -d - Verify services include
collaboraandcoturn - Upload ODT/PPT/PDF → conversion works
- TURN/STUN connectivity works in meetings
-
-
Centralized Collabora
-
ENABLE_COLLABORA=false, setCOLLABORA_URLto external - Regenerate and start
- Confirm no
collaboraservice in Compose - Conversions call external
$COLLABORA_URL
-
-
Centralized Coturn
-
ENABLE_COTURN=false - Regenerate and start
- Confirm no
coturnservice in Compose - Verify BBB uses external TURN (env/config as per your infra)
-
Security considerations
- When pointing
COLLABORA_URLto an external service, ensure TLS and trust boundaries are appropriate. - Disabling embedded Coturn requires your external TURN to be correctly authenticated and reachable (shared secret or long-term credentials).
Checklist
- [x] Conditional
depends_onforbbb-webandetherpad - [x] Collabora & Coturn services gated by env flags
- [x] Conversion scripts read
COLLABORA_URL - [x]
sample.envextended with new vars - [x]
scripts/generate-composepasses flags to templater - [x] Verified defaults preserve existing behavior
Diff (reference)
Included in the MR: changes to docker-compose.tmpl.yml, mod/bbb-web/office-convert.sh, mod/etherpad/etherpad-export.sh, sample.env, and scripts/generate-compose as provided in the request.