mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-06 10:59:59 +00:00
Prosody keeps an account's first password. The image's init registers focus and jvb only once, so after a credential rotation it prints "User exists" and keeps the old passwords, while jicofo and the videobridge start with the new ones. Jicofo then fails with "SASLError using SCRAM-SHA-1: not-authorized" and no conference can start. After compose up the role now deletes and re-registers both accounts with their current passwords, through the container_address lookup so it works in compose and swarm. Found by the full-cycle gate of #1165, whose second pass runs after a credential rotation. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
53 lines
3.0 KiB
YAML
53 lines
3.0 KiB
YAML
---
|
|
application_id: "web-app-jitsi"
|
|
entity_name: "{{ application_id | get_entity_name }}"
|
|
|
|
JITSI_WEB_SERVICE: "web"
|
|
JITSI_PROSODY_SERVICE: "prosody"
|
|
JITSI_JICOFO_SERVICE: "jicofo"
|
|
JITSI_JVB_SERVICE: "jvb"
|
|
|
|
JITSI_WEB_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ JITSI_WEB_SERVICE ~ '.name') }}"
|
|
JITSI_PROSODY_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ JITSI_PROSODY_SERVICE ~ '.name') }}"
|
|
JITSI_JICOFO_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ JITSI_JICOFO_SERVICE ~ '.name') }}"
|
|
JITSI_JVB_CONTAINER: "{{ lookup('config', application_id, 'services.' ~ JITSI_JVB_SERVICE ~ '.name') }}"
|
|
JITSI_PROSODY_CONTAINER_ADDRESS: "{{ lookup('container_address', application_id, JITSI_PROSODY_SERVICE) }}"
|
|
|
|
JITSI_JVB_MEDIA_PORT: "{{ lookup('config', application_id, 'services.jitsi.ports.public.media') }}"
|
|
|
|
JITSI_PROSODY_XMPP_PORT: "{{ lookup('config', application_id, 'services.' ~ JITSI_PROSODY_SERVICE ~ '.ports.internal.xmpp') }}"
|
|
JITSI_PROSODY_COMPONENT_PORT: "{{ lookup('config', application_id, 'services.' ~ JITSI_PROSODY_SERVICE ~ '.ports.internal.component') }}"
|
|
JITSI_PROSODY_HTTP_PORT: "{{ lookup('config', application_id, 'services.' ~ JITSI_PROSODY_SERVICE ~ '.ports.internal.http') }}"
|
|
|
|
JITSI_PUBLIC_URL: "{{ lookup('tls', application_id, 'url.base') }}"
|
|
|
|
JITSI_VOLUMES_DIR: "{{ lookup('container', application_id, 'directories.volumes') }}"
|
|
JITSI_PROSODY_CONFIG_HOST_PATH: "{{ JITSI_VOLUMES_DIR }}prosody-config"
|
|
JITSI_PROSODY_PLUGINS_HOST_PATH: "{{ JITSI_VOLUMES_DIR }}prosody-plugins-custom"
|
|
|
|
JITSI_OIDC_ENABLED: "{{ lookup('config', application_id, 'services.sso.enabled') | bool }}"
|
|
JITSI_LDAP_ENABLED: "{{ lookup('config', application_id, 'services.ldap.enabled') | bool }}"
|
|
|
|
JITSI_XMPP_DOMAIN: "meet.jitsi"
|
|
JITSI_XMPP_AUTH_DOMAIN: "auth.meet.jitsi"
|
|
JITSI_XMPP_GUEST_DOMAIN: "guest.meet.jitsi"
|
|
JITSI_XMPP_MUC_DOMAIN: "muc.meet.jitsi"
|
|
JITSI_XMPP_INTERNAL_MUC_DOMAIN: "internal-muc.meet.jitsi"
|
|
JITSI_XMPP_RECORDER_DOMAIN: "recorder.meet.jitsi"
|
|
|
|
JITSI_JICOFO_COMPONENT_SECRET: "{{ lookup('config', application_id, 'secrets.credentials.jicofo_component_secret') }}"
|
|
JITSI_JICOFO_AUTH_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.jicofo_auth_password') }}"
|
|
JITSI_JVB_AUTH_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.jvb_auth_password') }}"
|
|
JITSI_JIGASI_XMPP_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.jigasi_xmpp_password') }}"
|
|
JITSI_JIBRI_RECORDER_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.jibri_recorder_password') }}"
|
|
JITSI_JIBRI_XMPP_PASSWORD: "{{ lookup('config', application_id, 'secrets.credentials.jibri_xmpp_password') }}"
|
|
JITSI_COMPONENT_ACCOUNTS:
|
|
- user: focus
|
|
password: "{{ JITSI_JICOFO_AUTH_PASSWORD }}"
|
|
- user: jvb
|
|
password: "{{ JITSI_JVB_AUTH_PASSWORD }}"
|
|
|
|
JITSI_AUTH_TYPE: "{{ 'ldap' if (JITSI_LDAP_ENABLED and not JITSI_OIDC_ENABLED) else 'internal' }}"
|
|
JITSI_ENABLE_AUTH: "{{ JITSI_AUTH_TYPE != 'internal' }}"
|
|
JITSI_ENABLE_GUESTS: false
|