services.ymlΒΆ

---
sso:
  bond: 1
  enabled: "{{ 'web-app-keycloak' in group_names }}"
  shared: "{{ 'web-app-keycloak' in group_names }}"
  flavor: oauth2
  oauth2:
    origin:
      host: web
      port: 80
ldap:
  bond: 1
  enabled: "{{ 'svc-db-openldap' in group_names }}"
  shared: "{{ 'svc-db-openldap' in group_names }}"
logout:
  bond: 1
  enabled: "{{ 'web-svc-logout' in group_names }}"
  shared: "{{ 'web-svc-logout' in group_names }}"
dashboard:
  bond: 1
  enabled: "{{ 'web-app-dashboard' in group_names }}"
  shared: "{{ 'web-app-dashboard' in group_names }}"
matomo:
  bond: 1
  enabled: "{{ 'web-app-matomo' in group_names }}"
  shared: "{{ 'web-app-matomo' in group_names }}"
prometheus:
  bond: 1
  enabled: "{{ 'web-app-prometheus' in group_names }}"
  shared: "{{ 'web-app-prometheus' in group_names }}"
# nocheck: playwright-service-flag - email not used by Jitsi room flow
email:
  bond: 1
  enabled: "{{ MAIL_PROVIDER in group_names }}"
  shared: "{{ MAIL_PROVIDER in group_names }}"
# nocheck: playwright-service-flag - css consumer, no Playwright surface (provider: web-svc-css)
css:
  bond: 1
  enabled: "{{ 'web-svc-css' in group_names }}"
  shared: "{{ 'web-svc-css' in group_names }}"
# nocheck: dynamic-flag - gated on services.sso.enabled, not on group_names
# nocheck: playwright-service-flag - runtime DOM patch, no probe-able surface flag
javascript:
  bond: 1
  enabled: "{{ lookup('config', 'web-app-jitsi', 'services.sso.enabled') | bool }}"
  shared: "{{ lookup('config', 'web-app-jitsi', 'services.sso.enabled') | bool }}"
# nocheck: playwright-service-flag: shared provider entity; the app itself is covered by this role's own Playwright spec
jitsi:
  healthcheck:
    flavor: tcp
  modes:
    compose:
      enabled: true
    swarm:
      enabled: true
  bond: 1
  enabled: true
  shared: true
  image: jitsi/web
  version: "stable-11031"
  min_storage: 315MB
  # nocheck: default-placement-manager  meta/volumes.yml uses type:bind config dirs staged on the stack host; a worker-scheduled task lacks the source paths (unpinning requires migrating them to nfs-backed named volumes)
  placement: manager
  ports:
    local:
      http: 8084
      sso: 16505
    public:
      media: 10000
    internal:
      http: 80
  proxy:
    service_key: web
  run_after:
    - web-app-keycloak
  lifecycle: beta
  cpus: "2.0"
  mem_reservation: 1g
  mem_limit: 3g
  pids_limit: 2048
web:
  name: jitsi-web
  cpus: "0.5"
  mem_reservation: 128m
  mem_limit: 512m
  pids_limit: 512
# nocheck: playwright-service-flag - internal sub-component (XMPP server, not a user-facing surface)
prosody:
  healthcheck:
    flavor: tcp
    port_key: http
  name: jitsi-prosody
  image: jitsi/prosody
  version: "stable-11031"
  ports:
    internal:
      xmpp: 5222
      component: 5347
      http: 5280
  cpus: "1.0"
  mem_reservation: 512m
  mem_limit: 1g
  pids_limit: 1024
# nocheck: playwright-service-flag - internal sub-component (conference focus)
# nocheck: image-healthcheck  XMPP component, no internal port declared
jicofo:
  name: jitsi-jicofo
  image: jitsi/jicofo
  version: "stable-11031"
  cpus: "1.0"
  mem_reservation: 512m
  mem_limit: 1g
  pids_limit: 1024
# nocheck: playwright-service-flag - internal sub-component (video bridge, media plane)
# nocheck: image-healthcheck  media bridge on UDP, no internal port declared
jvb:
  name: jitsi-jvb
  image: jitsi/jvb
  version: "stable-11031"
  cpus: "2.0"
  mem_reservation: 1g
  mem_limit: 2g
  pids_limit: 2048

# nocheck: playwright-service-flag
tor:
  enabled: false # nocheck: dynamic-flag
  shared: false # nocheck: dynamic-flag