feat(jigasi,transcriber): transcriber component and jigasi configuration updates (#1881)
* feat(jigasi): new JIGASI_MODE variable for sip vs transcriber behavior * wip: split jigasi config into segments * prune jigasi compose variables * prune further variables * append instead of overwrite * fix variables * sync xmpp config with meet configs * further config syncup * remove property from xmpp section * move translator as per comments * fix sipserver trailing end * fix acc domain for jigasi bosh join * fix public domain * jigasi openjdk requirement * make gcloud optional for transcription configuration * revert dockerfile to discuss separately * revert translator config removal * remove translator config from transcriber composepull/1899/head
parent
3e93212f0a
commit
3f6740809c
@ -0,0 +1,83 @@ |
||||
{{ $JIGASI_XMPP_USER := .Env.JIGASI_XMPP_USER | default "jigasi" -}} |
||||
{{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}} |
||||
{{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}} |
||||
{{ $XMPP_GUEST_DOMAIN := .Env.XMPP_GUEST_DOMAIN | default "guest.meet.jitsi" -}} |
||||
{{ $USE_TRANSLATOR_IN_CONFERENCE := .Env.USE_TRANSLATOR_IN_CONFERENCE | default "0" | toBool -}} |
||||
|
||||
org.jitsi.jigasi.ENABLE_SIP=true |
||||
|
||||
# SIP account |
||||
net.java.sip.communicator.impl.protocol.sip.acc1=acc1 |
||||
{{ if .Env.JIGASI_SIP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_ADDRESS={{ .Env.JIGASI_SIP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_AUTO_CONFIG=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROXY_PORT={{ .Env.JIGASI_SIP_PORT | default "5060" }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PREFERRED_TRANSPORT={{ .Env.JIGASI_SIP_TRANSPORT | default "UDP" }} |
||||
{{ end }} |
||||
{{ if .Env.JIGASI_ENABLE_SDES_SRTP | default "0" | toBool }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SAVP_OPTION=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DEFAULT_ENCRYPTION=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DEFAULT_SIPZRTP_ATTRIBUTE=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.ZRTP=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.SDES=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL.DTLS-SRTP=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.ZRTP=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.SDES=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SDES_CIPHER_SUITES=AES_CM_128_HMAC_SHA1_80,AES_CM_128_HMAC_SHA1_32 |
||||
{{ end }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.ACCOUNT_UID=SIP\:{{ .Env.JIGASI_SIP_URI }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PASSWORD={{ .Env.JIGASI_SIP_PASSWORD | b64enc }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.PROTOCOL_NAME=SIP |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.SERVER_ADDRESS={{ .Env.JIGASI_SIP_SERVER }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.USER_ID={{ .Env.JIGASI_SIP_URI }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.KEEP_ALIVE_INTERVAL=25 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.KEEP_ALIVE_METHOD={{ .Env.JIGASI_SIP_KEEP_ALIVE_METHOD | default "OPTIONS" }} |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.VOICEMAIL_ENABLED=false |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.JITSI_MEET_ROOM_HEADER_NAME=X-Room-Name |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.JITSI_MEET_DOMAIN_BASE_HEADER_NAME=X-Domain-Base |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.AMR-WB/16000=750 |
||||
# Temporarily disable G722, see: https://github.com/jitsi/docker-jitsi-meet/issues/1357 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.G722/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.GSM/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.H263-1998/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.H264/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.PCMA/8000=600 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.PCMU/8000=650 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/12000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/16000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/24000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.SILK/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.VP8/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.iLBC/8000=10 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.opus/48000=1000 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.red/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/16000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/32000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.speex/8000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.telephone-event/8000=1 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.Encodings.ulpfec/90000=0 |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.OVERRIDE_ENCODINGS=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.DOMAIN_BASE={{ $XMPP_DOMAIN }} |
||||
|
||||
{{ if .Env.ENABLE_AUTH | default "0" | toBool }} |
||||
{{ if .Env.ENABLE_GUESTS | default "0" | toBool }} |
||||
org.jitsi.jigasi.xmpp.acc.USER_ID={{ $JIGASI_XMPP_USER }}@{{ $XMPP_GUEST_DOMAIN }} |
||||
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=true |
||||
{{ else }} |
||||
org.jitsi.jigasi.xmpp.acc.USER_ID={{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }} |
||||
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false |
||||
{{ end }} |
||||
org.jitsi.jigasi.xmpp.acc.PASS={{ .Env.JIGASI_XMPP_PASSWORD }} |
||||
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true |
||||
{{ end }} |
||||
|
||||
# forces sending presence on sip call hangup |
||||
net.java.sip.communicator.impl.protocol.jabber.FORCE_PRESENCE_ON_LEAVE=true |
||||
|
||||
{{ if $USE_TRANSLATOR_IN_CONFERENCE }} |
||||
org.jitsi.jigasi.xmpp.acc.USE_TRANSLATOR_IN_CONFERENCE=true |
||||
net.java.sip.communicator.impl.protocol.sip.acc1.USE_TRANSLATOR_IN_CONFERENCE=true |
||||
# Should be enabled when using translator mode |
||||
net.java.sip.communicator.impl.neomedia.audioSystem.audiosilence.captureDevice_list=["AudioSilenceCaptureDevice:noTransferData"] |
||||
{{ end }} |
@ -0,0 +1,32 @@ |
||||
{{ $JIGASI_TRANSCRIBER_USER := .Env.JIGASI_TRANSCRIBER_USER | default "transcriber" -}} |
||||
{{ $JIGASI_TRANSCRIBER_FILTER_SILENCE := .Env.JIGASI_TRANSCRIBER_FILTER_SILENCE | default "0" | toBool -}} |
||||
{{ $XMPP_RECORDER_DOMAIN := .Env.XMPP_RECORDER_DOMAIN | default "recorder.meet.jitsi" -}} |
||||
|
||||
org.jitsi.jigasi.ENABLE_SIP=false |
||||
org.jitsi.jigasi.xmpp.acc.USER_ID={{ $JIGASI_TRANSCRIBER_USER }}@{{ $XMPP_RECORDER_DOMAIN }} |
||||
org.jitsi.jigasi.xmpp.acc.PASS={{ .Env.JIGASI_TRANSCRIBER_PASSWORD }} |
||||
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false |
||||
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true |
||||
|
||||
# Transcription config |
||||
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true |
||||
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=true |
||||
org.jitsi.jigasi.transcription.DIRECTORY=/tmp/transcripts |
||||
org.jitsi.jigasi.transcription.BASE_URL={{ .Env.PUBLIC_URL }}/transcripts |
||||
org.jitsi.jigasi.transcription.jetty.port=-1 |
||||
org.jitsi.jigasi.transcription.ADVERTISE_URL={{ .Env.JIGASI_TRANSCRIBER_ADVERTISE_URL | default "false"}} |
||||
org.jitsi.jigasi.transcription.SAVE_JSON=false |
||||
org.jitsi.jigasi.transcription.SEND_JSON=true |
||||
org.jitsi.jigasi.transcription.SAVE_TXT=true |
||||
org.jitsi.jigasi.transcription.SEND_TXT={{ .Env.JIGASI_TRANSCRIBER_SEND_TXT | default "false"}} |
||||
org.jitsi.jigasi.transcription.RECORD_AUDIO={{ .Env.JIGASI_TRANSCRIBER_RECORD_AUDIO | default "false"}} |
||||
org.jitsi.jigasi.transcription.RECORD_AUDIO_FORMAT=wav |
||||
{{ if .Env.JIGASI_TRANSCRIBER_CUSTOM_SERVICE -}} |
||||
org.jitsi.jigasi.transcription.customService={{ .Env.JIGASI_TRANSCRIBER_CUSTOM_SERVICE }} |
||||
{{ end -}} |
||||
{{ if $JIGASI_TRANSCRIBER_FILTER_SILENCE -}} |
||||
org.jitsi.jigasi.transcription.FILTER_SILENCE = true |
||||
{{ end -}} |
||||
{{ if .Env.JIGASI_TRANSCRIBER_REMOTE_CONFIG_URL -}} |
||||
org.jitsi.jigasi.transcription.remoteTranscriptionConfigUrl={{ .Env.JIGASI_TRANSCRIBER_REMOTE_CONFIG_URL }} |
||||
{{ end -}} |
@ -0,0 +1,67 @@ |
||||
{{ $JIGASI_BREWERY_MUC := .Env.JIGASI_BREWERY_MUC | default "jigasibrewery" -}} |
||||
{{ $JIGASI_XMPP_USER := .Env.JIGASI_XMPP_USER | default "jigasi" -}} |
||||
{{ $XMPP_AUTH_DOMAIN := .Env.XMPP_AUTH_DOMAIN | default "auth.meet.jitsi" -}} |
||||
{{ $XMPP_DOMAIN := .Env.XMPP_DOMAIN | default "meet.jitsi" -}} |
||||
{{ $XMPP_INTERNAL_MUC_DOMAIN := .Env.XMPP_INTERNAL_MUC_DOMAIN | default "internal-muc.meet.jitsi" -}} |
||||
{{ $XMPP_PORT := .Env.XMPP_PORT | default "5222" -}} |
||||
{{ $XMPP_SERVER := .Env.XMPP_SERVER | default "xmpp.meet.jitsi" -}} |
||||
{{ $XMPP_SERVERS := splitList "," $XMPP_SERVER -}} |
||||
{{/* assign env from context, preserve during range when . is re-assigned */}} |
||||
{{ $ENV := .Env -}} |
||||
|
||||
# XMPP account used for control |
||||
{{ range $index, $element := $XMPP_SERVERS -}} |
||||
{{ $SERVER := splitn ":" 2 $element }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}=acc{{ $index }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.ACCOUNT_UID=Jabber:{{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }} |
||||
net.java.sip.communicator.plugin.reconnectplugin.ATLEAST_ONE_SUCCESSFUL_CONNECTION.Jabber\:{{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }}=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.USER_ID={{ $JIGASI_XMPP_USER }}@{{ $XMPP_AUTH_DOMAIN }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_SERVER_OVERRIDDEN=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.SERVER_ADDRESS={{ $SERVER._0 }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.SERVER_PORT={{ $SERVER._1 | default $XMPP_PORT }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.ALLOW_NON_SECURE=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.PASSWORD={{ $ENV.JIGASI_XMPP_PASSWORD | b64enc }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.AUTO_GENERATE_RESOURCE=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.RESOURCE_PRIORITY=30 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.KEEP_ALIVE_METHOD=XEP-0199 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.KEEP_ALIVE_INTERVAL=20 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.CALLING_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.JINGLE_NODES_ENABLED=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_CARBON_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.DEFAULT_ENCRYPTION=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_USE_ICE=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_ACCOUNT_DISABLED=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_PREFERRED_PROTOCOL=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.AUTO_DISCOVER_JINGLE_NODES=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.PROTOCOL=Jabber |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_USE_UPNP=false |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IM_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.SERVER_STORED_INFO_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.IS_FILE_TRANSFER_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.USE_DEFAULT_STUN_SERVER=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.ENCRYPTION_PROTOCOL.DTLS-SRTP=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.VIDEO_CALLING_DISABLED=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.OVERRIDE_ENCODINGS=true |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.G722/8000=705 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.GSM/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.H263-1998/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.H264/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.PCMA/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.PCMU/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.SILK/12000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.SILK/16000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.SILK/24000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.SILK/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.VP8/90000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.iLBC/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.opus/48000=750 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.speex/16000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.speex/32000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.speex/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.Encodings.telephone-event/8000=0 |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.BREWERY={{ $JIGASI_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }} |
||||
net.java.sip.communicator.impl.protocol.jabber.acc{{ $index }}.DOMAIN_BASE={{ $XMPP_DOMAIN }} |
||||
{{ end -}} |
||||
|
||||
org.jitsi.jigasi.ALLOWED_JID={{ $JIGASI_BREWERY_MUC }}@{{ $XMPP_INTERNAL_MUC_DOMAIN }} |
@ -0,0 +1,61 @@ |
||||
version: '3.5' |
||||
|
||||
services: |
||||
transcriber: |
||||
image: jitsi/jigasi:${JITSI_IMAGE_VERSION:-unstable} |
||||
restart: ${RESTART_POLICY:-unless-stopped} |
||||
volumes: |
||||
- ${CONFIG}/transcriber:/config:Z |
||||
- ${CONFIG}/transcripts:/tmp/transcripts:Z |
||||
environment: |
||||
- AUTOSCALER_SIDECAR_KEY_FILE |
||||
- AUTOSCALER_SIDECAR_KEY_ID |
||||
- AUTOSCALER_SIDECAR_GROUP_NAME |
||||
- AUTOSCALER_SIDECAR_HOST_ID |
||||
- AUTOSCALER_SIDECAR_INSTANCE_ID |
||||
- AUTOSCALER_SIDECAR_PORT |
||||
- AUTOSCALER_SIDECAR_REGION |
||||
- AUTOSCALER_SIDECAR_SHUTDOWN_POLLING_INTERVAL |
||||
- AUTOSCALER_SIDECAR_STATS_POLLING_INTERVAL |
||||
- AUTOSCALER_URL |
||||
- BOSH_URL_PATTERN |
||||
- XMPP_AUTH_DOMAIN |
||||
- XMPP_GUEST_DOMAIN |
||||
- XMPP_MUC_DOMAIN |
||||
- XMPP_INTERNAL_MUC_DOMAIN |
||||
- XMPP_SERVER |
||||
- XMPP_PORT |
||||
- XMPP_RECORDER_DOMAIN |
||||
- XMPP_DOMAIN |
||||
- PUBLIC_URL |
||||
- JIGASI_CONFIGURATION |
||||
- JIGASI_JVB_TIMEOUT |
||||
- JIGASI_LOCAL_REGION |
||||
- JIGASI_LOG_FILE |
||||
- JIGASI_MODE=transcriber |
||||
- JIGASI_XMPP_USER |
||||
- JIGASI_XMPP_PASSWORD |
||||
- JIGASI_BREWERY_MUC |
||||
- JIGASI_TRANSCRIBER_ADVERTISE_URL |
||||
- JIGASI_TRANSCRIBER_CUSTOM_SERVICE |
||||
- JIGASI_TRANSCRIBER_FILTER_SILENCE |
||||
- JIGASI_TRANSCRIBER_PASSWORD |
||||
- JIGASI_TRANSCRIBER_RECORD_AUDIO |
||||
- JIGASI_TRANSCRIBER_REMOTE_CONFIG_URL |
||||
- JIGASI_TRANSCRIBER_SEND_TXT |
||||
- JIGASI_TRANSCRIBER_USER |
||||
- GC_PROJECT_ID |
||||
- GC_PRIVATE_KEY_ID |
||||
- GC_PRIVATE_KEY |
||||
- GC_CLIENT_EMAIL |
||||
- GC_CLIENT_ID |
||||
- GC_CLIENT_CERT_URL |
||||
- SHUTDOWN_REST_ENABLED |
||||
- SENTRY_DSN="${JIGASI_SENTRY_DSN:-0}" |
||||
- SENTRY_ENVIRONMENT |
||||
- SENTRY_RELEASE |
||||
- TZ |
||||
depends_on: |
||||
- prosody |
||||
networks: |
||||
meet.jitsi: |
Loading…
Reference in new issue