Files
computer-playbook/roles/web-app-jitsi/templates/env.j2
kevinveenbirkenbachandClaude Opus 4.8 15e7647d2f refactor(env): central TZ+LANG base included by every role env.j2
New roles/sys-svc-container/templates/env.j2 sets TZ={{ HOST_TIMEZONE }} and LANG=C.UTF-8. Every role env.j2 includes it at the top; it renders via stack_host_template, the same engine that resolves the includes in compose.yml.j2, so it works in both compose and swarm. TZ/LANG are removed from the individual role env.j2 so each value stays single-source.

New lint tests/lint/ansible/test_env_base_include.py verifies every role env.j2 includes the base and never re-sets a base-owned key (keys derived from the base file).

mattermost and gitea meta/volumes.yml drop the /etc/timezone host-path bind: swarm hard-rejects a task whose bind source is missing on the node (Debian-trixie nodes have no /etc/timezone). TZ now comes from the base env. /etc/localtime bind also dropped; the container timezone follows TZ.

Non-directive comments were removed from the touched env.j2 (banners, restatements, reference URLs, narration) so the changed files pass the comment-lint; only tool directives remain.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-15 22:13:57 +02:00

68 lines
2.1 KiB
Django/Jinja

{% include 'roles/sys-svc-container/templates/env.j2' %}
HTTP_PORT=8000
HTTPS_PORT=8443
PUBLIC_URL={{ JITSI_PUBLIC_URL }}
XMPP_DOMAIN={{ JITSI_XMPP_DOMAIN }}
XMPP_AUTH_DOMAIN={{ JITSI_XMPP_AUTH_DOMAIN }}
XMPP_GUEST_DOMAIN={{ JITSI_XMPP_GUEST_DOMAIN }}
XMPP_MUC_DOMAIN={{ JITSI_XMPP_MUC_DOMAIN }}
XMPP_INTERNAL_MUC_DOMAIN={{ JITSI_XMPP_INTERNAL_MUC_DOMAIN }}
XMPP_RECORDER_DOMAIN={{ JITSI_XMPP_RECORDER_DOMAIN }}
XMPP_SERVER={{ JITSI_PROSODY_SERVICE }}
XMPP_BOSH_URL_BASE=http://{{ JITSI_PROSODY_SERVICE }}:{{ JITSI_PROSODY_HTTP_PORT }}
AUTH_TYPE={{ JITSI_AUTH_TYPE }}
ENABLE_AUTH={{ JITSI_ENABLE_AUTH | string | lower }}
ENABLE_GUESTS={{ JITSI_ENABLE_GUESTS | string | lower }}
ENABLE_LOBBY=true
ENABLE_PREJOIN_PAGE=true
{% if JITSI_LDAP_ENABLED and not JITSI_OIDC_ENABLED %}
LDAP_URL={{ LDAP.SERVER.URI }}
LDAP_BASE={{ LDAP.DN.OU.USERS }}
LDAP_BINDDN={{ LDAP.DN.ADMINISTRATOR.DATA }}
LDAP_BINDPW={{ LDAP.BIND_CREDENTIAL | dotenv_quote }}
LDAP_FILTER=({{ LDAP.USER.ATTRIBUTES.ID }}=$uid)
LDAP_AUTH_METHOD=bind
LDAP_VERSION=3
LDAP_USE_TLS=0
LDAP_START_TLS=0
{% endif %}
JICOFO_COMPONENT_SECRET={{ JITSI_JICOFO_COMPONENT_SECRET }}
JICOFO_AUTH_USER=focus
JICOFO_AUTH_PASSWORD={{ JITSI_JICOFO_AUTH_PASSWORD | dotenv_quote }}
JVB_AUTH_USER=jvb
JVB_AUTH_PASSWORD={{ JITSI_JVB_AUTH_PASSWORD | dotenv_quote }}
JVB_BREWERY_MUC=jvbbrewery
JIGASI_XMPP_USER=jigasi
JIGASI_XMPP_PASSWORD={{ JITSI_JIGASI_XMPP_PASSWORD | dotenv_quote }}
JIBRI_RECORDER_USER=recorder
JIBRI_RECORDER_PASSWORD={{ JITSI_JIBRI_RECORDER_PASSWORD | dotenv_quote }}
JIBRI_XMPP_USER=jibri
JIBRI_XMPP_PASSWORD={{ JITSI_JIBRI_XMPP_PASSWORD | dotenv_quote }}
JVB_PORT={{ JITSI_JVB_MEDIA_PORT }}
JVB_ADVERTISE_IPS={{ networks.internet.ip4 | default('') }}
JVB_STUN_SERVERS=meet-jit-si-turnrelay.jitsi.net:443
JVB_TCP_HARVESTER_DISABLED=true
JVB_ENABLE_APIS=rest,colibri
COLIBRI_REST_ENABLED=true
ENABLE_RECORDING=false
ENABLE_TRANSCRIPTIONS=false
ENABLE_LIVESTREAMING=false
ENABLE_LETSENCRYPT=false
ENABLE_HTTP_REDIRECT=false
ENABLE_HSTS=false
ENABLE_XMPP_WEBSOCKET=true
ENABLE_COLIBRI_WEBSOCKET=true
RESOLUTION=720
RESOLUTION_MIN=180
RESOLUTION_WIDTH=1280
RESOLUTION_WIDTH_MIN=320
DISABLE_HTTPS=true