Configuration of Jigasi

Hello, thank you for your help so far. I am able to debug Jigasi in IntelliJ while starting a MUC on one Android and one iOS client. I have some questions about the configuration of Jigasi though, since transcription is not occurring yet. I think it has to do with the Jetty port or an audio Exception, but there are several other things being logged as well. Given the way @damencho is replying, it seems he is very busy, so please feel free to reply selectively, although it may help other developers to answer more fully. I will try answering some of this myself too.

  • what is the SERVER_ADDRESS for onsip.com?
  • what is meant by " This can be done by using the SIP dial button and using the the URI jitsi_meet_transcribe" (I don’t get extra buttons in the MUC).
  • how do I find the Jetty port?
  • my Android/iOS MUC has audio, the quality of the call is very poor but there is also negative feedback, however I get an java.lang.IllegalStateException: audioSystem (see below)
  • can you tell from the jicofo.log that jigasi has ‘joined’ the MUC? (or from the jigasi log that there is an MUC ongoing and that jigasi is ‘joining’ it?

Feb 24, 2020 8:42:48 PM org.jitsi.utils.logging.LoggerImpl log
INFO: net.java.sip.communicator.service.media.MAX_PORT_NUMBER=20000
Feb 24, 2020 8:42:48 PM org.jitsi.utils.logging.LoggerImpl log
INFO: sun.java.launcher=SUN_STANDARD

Feb 24, 2020 8:42:48 PM org.jitsi.utils.logging.LoggerImpl log
INFO: org.jitsi.impl.neomedia.device.PulseAudioSystem.disabled=true

Feb 24, 2020 8:42:48 PM org.jitsi.utils.logging.LoggerImpl log
INFO: failed to find jitsi-defaults.properties with class loader, will continue without it.

Feb 24, 2020 8:42:48 PM org.jitsi.utils.logging.LoggerImpl log
INFO: failed to find jitsi-default-overrides.properties with class loader, will continue without it.

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.xbill.DNS.ResolverConfig (file:/home/user1/.m2/repository/dnsjava/dnsjava/2.1.7/dnsjava-2.1.7.jar) to method sun.net.dns.ResolverConfiguration.open()
WARNING: Please consider reporting this to the maintainers of org.xbill.DNS.ResolverConfig
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Feb 24, 2020 8:42:48 PM net.java.sip.communicator.util.Logger info
INFO: java.net.preferIPv6Addresses=null
Feb 24, 2020 8:42:48 PM net.java.sip.communicator.util.Logger info
INFO: java.net.preferIPv4Stack=null

SEVERE: Failed to register custom Renderer org.jitsi.impl.neomedia.jmfext.media.renderer.audio.PulseAudioRenderer with JMF.
java.lang.IllegalStateException: audioSystem
	at org.jitsi.impl.neomedia.jmfext.media.renderer.audio.PulseAudioRenderer.<init>(PulseAudioRenderer.java:156)
	at org.jitsi.impl.neomedia.jmfext.media.renderer.audio.PulseAudioRenderer.<init>(PulseAudioRenderer.java:136)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.base/java.lang.Class.newInstance(Class.java:584)
	at org.jitsi.impl.neomedia.device.DeviceConfiguration.registerCustomRenderers(DeviceConfiguration.java:1047)
	at org.jitsi.impl.neomedia.device.DeviceConfiguration.<init>(DeviceConfiguration.java:366)
	at org.jitsi.impl.neomedia.MediaServiceImpl.<init>(MediaServiceImpl.java:162)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.base/java.lang.Class.newInstance(Class.java:584)
	at org.jitsi.impl.libjitsi.LibJitsiImpl$ServiceLock.initializeService(LibJitsiImpl.java:196)
	at org.jitsi.impl.libjitsi.LibJitsiImpl$ServiceLock.getService(LibJitsiImpl.java:131)
	at org.jitsi.impl.libjitsi.LibJitsiImpl.getService(LibJitsiImpl.java:91)
	at org.jitsi.impl.libjitsi.LibJitsiOSGiImpl.getService(LibJitsiOSGiImpl.java:95)
	at org.jitsi.service.libjitsi.LibJitsi.invokeGetServiceOnImpl(LibJitsi.java:172)
	at org.jitsi.service.libjitsi.LibJitsi.getMediaService(LibJitsi.java:124)
	at net.java.sip.communicator.impl.neomedia.NeomediaActivator.start(NeomediaActivator.java:391)
	at org.jitsi.impl.osgi.framework.BundleImpl.start(BundleImpl.java:307)
	at org.jitsi.impl.osgi.framework.launch.FrameworkImpl.startLevelChanged(FrameworkImpl.java:472)
	at org.jitsi.impl.osgi.framework.startlevel.FrameworkStartLevelImpl$Command.run(FrameworkStartLevelImpl.java:137)
	at org.jitsi.impl.osgi.framework.AsyncExecutor.runInThread(AsyncExecutor.java:122)
	at org.jitsi.impl.osgi.framework.AsyncExecutor.access$000(AsyncExecutor.java:28)
	at org.jitsi.impl.osgi.framework.AsyncExecutor$1.run(AsyncExecutor.java:231)

Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: Warming up SecureRandom...
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: Warming up SecureRandom finished.
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger info
INFO: Audio Notifier Service ...[REGISTERED]
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: VersionService registered: Jigasi 1.1.build.git
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger info
INFO: initialized SipGateway
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger info
INFO: skipped initialization of TranscriptionGateway
2536 [org.jitsi.impl.osgi.framework.AsyncExecutor] INFO org.eclipse.jetty.util.log - Logging initialized @3530ms to org.eclipse.jetty.util.log.Slf4jLog
2695 [org.jitsi.impl.osgi.framework.AsyncExecutor] INFO org.eclipse.jetty.server.Server - jetty-9.4.15.v20190215; built: 2019-02-15T16:53:49.381Z; git: eb70b240169fcf1abbd86af36482d1c49826fa0b; jvm 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
2812 [org.jitsi.impl.osgi.framework.AsyncExecutor] INFO org.eclipse.jetty.server.AbstractConnector - Started MuxServerConnector@25b13019{HTTP/1.1,[http/1.1]}{0.0.0.0:8788}
2812 [org.jitsi.impl.osgi.framework.AsyncExecutor] INFO org.eclipse.jetty.server.Server - Started @3814ms
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: Not starting the Jetty service for org.jitsi.jigasi.rest.TranscriptServerBundleActivator(port=-1)
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger warn
WARNING: MUC call control disabled.


Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: org.jitsi.jigasi.transcription.jetty.port=-1

INFO: org.jitsi.jigasi.transcription.BASE_URL=http://localhost/
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DOMAIN_BASE=<<DOMAIN_BASE>>
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log
INFO: net.java.sip.communicator.impl.notifications.eventType1582573370301=NewSelectedDevice

INFO: net.java.sip.communicator.impl.protocol.sip.acc1403273890647.SERVER_ADDRESS=onsip.com
Feb 24, 2020 8:42:50 PM org.jitsi.utils.logging.LoggerImpl log

WARNING: Warning from the JAIN-SIP stackusing default tls security policy
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger warn
WARNING: Warning from the JAIN-SIP stackUsing default keystore type pkcs12
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger warn
WARNING: Warning from the JAIN-SIP stackTLS server settings will be inactive - TLS key store will use JVM defaults keyStoreType=pkcs12 javax.net.ssl.keyStore=null javax.net.ssl.keyStorePassword=null
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger info
INFO: Info from the JAIN-SIP stack: javax.net.ssl.trustStorePassword is null, using the password passed through javax.net.ssl.keyStorePassword
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger warn
WARNING: Warning from the JAIN-SIP stackUsing default truststore type pkcs12
Feb 24, 2020 8:42:50 PM net.java.sip.communicator.util.Logger warn
WARNING: Warning from the JAIN-SIP stackTLS trust settings will be inactive - TLS trust store will use JVM defaults. trustStoreType=pkcs12 javax.net.ssl.trustStore=null javax.net.ssl.trustStorePassword=null

WARNING: Missing resource for key: net.java.sip.communicator.SIP_PREFERRED_CLEAR_PORT
Feb 24, 2020 8:42:51 PM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: net.java.sip.communicator.SIP_PREFERRED_SECURE_PORT
Feb 24, 2020 8:42:51 PM net.java.sip.communicator.util.Logger info

INFO: Primary DNS seems laggy: no response for _sips._TCP.parismens.onsip.com./SRV after 1500ms. Enabling redundant mode.
Feb 24, 2020 8:42:51 PM net.java.sip.communicator.util.Logger info

INFO: Sending query for _sips._TCP.parismens.onsip.com./SRV to backup resolvers
Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info

INFO: Sending query for _sip._TCP.parismens.onsip.com./SRV to backup resolvers
Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info

INFO: Sending query for _sip._UDP.parismens.onsip.com./SRV to backup resolvers
Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info

INFO: Sending query for sip.onsip.com./A to backup resolvers
Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info

INFO: Sending query for sip.onsip.com./AAAA to backup resolvers
Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info

INFO: REG STATE CHANGE ProtocolProviderServiceSipImpl(SIP:paris@parismens.onsip.com) -> RegistrationStateChangeEvent[ oldState=Unregistered; newState=RegistrationState=Registering; userRequest=false; reasonCode=-1; reason=null]

Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info
INFO: Info from the JAIN-SIP stack: Setting SIPMessage peerPacketSource to: /199.7.173.101:5060

Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: service.gui.ERROR

Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: plugin.reconnectplugin.CONNECTION_FAILED_MSG

Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info
INFO: REG STATE CHANGE ProtocolProviderServiceSipImpl(SIP:paris@parismens.onsip.com) -> RegistrationStateChangeEvent[ oldState=Registering; newState=RegistrationState=Connection Failed; userRequest=false; reasonCode=1; reason=No realms present, cannot authenticate]

Feb 24, 2020 8:42:52 PM net.java.sip.communicator.util.Logger info
INFO: Info from the JAIN-SIP stack: the sip stack timer gov.nist.javax.sip.stack.timers.DefaultSipTimer has been stopped
Feb 24, 2020 8:42:53 PM net.java.sip.communicator.util.Logger info
INFO: Info from the JAIN-SIP stack: the sip stack timer gov.nist.javax.sip.stack.timers.DefaultSipTimer has been stopped

in jicofo.log,there is:

Jicofo 2020-02-24 20:48:19.512 INFO: [30] org.jitsi.jicofo.LipSyncHack.log() Not merging A/V streams from jigatest@conference.my-domain/ad476406 to jigatest@conference.my-domain/5222dcb6

pcap.log:

What is that for?

You don’t need to configure sip account if you want transcriptions.

Are we talking here about dial in/out and jigasi or transcriptions? The exception you can ignore.

Yep, there is a log in jicofo when jigasi joins the brewery for jigasis.

OK, thanks. I didn’t think a SIP account was needed here. Which do you use (instead of onsip.com) and what is the server address there?

The Jetty port:
org.jitsi.jigasi.transcription.jetty.port -1 The port which will be used to serve the final transcripts. Its default value is -1, which means the Jetty instance serving the transcript files is turned off.
I set it to 10101 but don’t get any transcription, no extra button in the video call, no explicit “jigasi has joined the call” in the logs…

Here is my config file. Could you please take a look or suggest what else might be the case?:

#Sample config with one XMPP and one SIP account configured
# Replace {sip-pass-hash} with SIP user password hash
# as well as other account properties

# Name of default JVB room that will be joined if no special header is included
# in SIP invite
org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME=siptest

net.java.sip.communicator.impl.protocol.SingleCallInProgressPolicy.enabled=false

# Should be enabled when using translator mode
#net.java.sip.communicator.impl.neomedia.audioSystem.audiosilence.captureDevice_list=["AudioSilenceCaptureDevice:noTransferData"]

# Adjust opus encoder complexity
net.java.sip.communicator.impl.neomedia.codec.audio.opus.encoder.COMPLEXITY=10

# Disables packet logging
net.java.sip.communicator.packetlogging.PACKET_LOGGING_ENABLED=true

net.java.sip.communicator.impl.protocol.sip.acc1403273890647=acc1403273890647

#<<JIGASI_SIPUSER>> 
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.ACCOUNT_UID=SIP\:<<JIGASI_SIPUSER>>
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.ACCOUNT_UID=SIP\:paris@parismens.onsip.com

#<<JIGASI_SIPPWD>> 
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PASSWORD=secret
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PASSWORD=<<JIGASI_SIPPWD>>

net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PROTOCOL_NAME=SIP

net.java.sip.communicator.impl.protocol.sip.acc1403273890647.SERVER_ADDRESS=onsip.com

#<<JIGASI_SIPUSER>> 
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.USER_ID=<<JIGASI_SIPUSER>>
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.USER_ID=paris@parismens.onsip.com

net.java.sip.communicator.impl.protocol.sip.acc1403273890647.KEEP_ALIVE_INTERVAL=25
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.KEEP_ALIVE_METHOD=OPTIONS
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.VOICEMAIL_ENABLED=false
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.AMR-WB/16000=750
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.G722/8000=700
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.GSM/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.H263-1998/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.H264/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.PCMA/8000=600
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.PCMU/8000=650
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/12000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/16000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/24000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.VP8/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.iLBC/8000=10
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.opus/48000=1000
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.red/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/16000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/32000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.telephone-event/8000=1
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.ulpfec/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.OVERRIDE_ENCODINGS=true
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DEFAULT_ENCRYPTION=false

# If an authenticated (hidden) domain is used to connect to a conference,
# PREVENT_AUTH_LOGIN will prevent the SIP participant from being seen as a
# hidden participant in the conference
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PREVENT_AUTH_LOGIN=FALSE

# Used when incoming calls are used in multidomain environment, used to detect subdomains
# used for constructing callResource and eventually contacting jicofo
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DOMAIN_BASE=<<DOMAIN_BASE>>

# the pattern to be used as bosh url when using bosh in multidomain environment
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}

# can be enabled to disable audio mixing and use translator, jigasi will act as jvb, just forward every ssrc stream it receives.
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.USE_TRANSLATOR_IN_CONFERENCE=true

# We can use the prefix org.jitsi.jigasi.xmpp.acc to override any of the
# properties that will be used for creating xmpp account for communication.

# The following two props assume we are using jigasi on the same machine as
# the xmpp server.
org.jitsi.jigasi.xmpp.acc.IS_SERVER_OVERRIDDEN=true
org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=127.0.0.1
org.jitsi.jigasi.xmpp.acc.VIDEO_CALLING_DISABLED=true
org.jitsi.jigasi.xmpp.acc.JINGLE_NODES_ENABLED=false
org.jitsi.jigasi.xmpp.acc.AUTO_DISCOVER_STUN=false
org.jitsi.jigasi.xmpp.acc.IM_DISABLED=true
org.jitsi.jigasi.xmpp.acc.SERVER_STORED_INFO_DISABLED=true
org.jitsi.jigasi.xmpp.acc.IS_FILE_TRANSFER_DISABLED=true
# Or you can use bosh for the connection establishment by specifing the URL to use.
# org.jitsi.jigasi.xmpp.acc.BOSH_URL_PATTERN=https://server.com/http-bind?room={roomName}

#Used when outgoing calls are used in multidomain environment, used to detect subdomains
#org.jitsi.jigasi.xmpp.acc.DOMAIN_BASE=<<DOMAIN_BASE>>
#org.jitsi.jigasi.xmpp.acc.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}

# can be enabled to disable audio mixing and use translator, jigasi will act as jvb, just forward every ssrc stream it receives.
#org.jitsi.jigasi.xmpp.acc.USE_TRANSLATOR_IN_CONFERENCE=true

# If you want jigasi to perform authenticated login instead of anonymous login
# to the XMPP server, you can set the following properties.
# org.jitsi.jigasi.xmpp.acc.USER_ID=SOME_USER@SOME_DOMAIN
# org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS
# org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

# If you want to use the SIP user part of the incoming/outgoing call SIP URI
# you can set the following property to true.
# org.jitsi.jigasi.USE_SIP_USER_AS_XMPP_RESOURCE=true

# Activate this property if you are using self-signed certificates or other
# type of non-trusted certicates. In this mode your service trust in the
# remote certificates always.
# net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true

# Enable this property to be able to shutdown gracefully jigasi using
# a rest command
# org.jitsi.jigasi.ENABLE_REST_SHUTDOWN=true

# Options regarding Transcription. Read the README for a detailed description
# about each property

org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
#org.jitsi.jigasi.ENABLE_SIP=true

# whether to use the more expensive, but better performing
# "video" model when doing transcription
org.jitsi.jigasi.transcription.USE_VIDEO_MODEL = true

# delivering final transcript
org.jitsi.jigasi.transcription.DIRECTORY=/home/user1/transcripts
# The base URL which will be used to serve the final transcripts. The URL used to serve a transcript will be this base appended by the filename of the transcript.
org.jitsi.jigasi.transcription.BASE_URL=http://localhost/
# The port which will be used to serve the final transcripts. Its default value is -1, which means the Jetty instance serving the transcript files is turned off.
org.jitsi.jigasi.transcription.jetty.port=10101
# Whether or not to advertise the URL which will serve the final transcript when Jigasi joins the room.
org.jitsi.jigasi.transcription.ADVERTISE_URL=true

# save formats
# Whether or not to save the final transcript in JSON. Note that this format is not very human readable.
# org.jitsi.jigasi.transcription.SAVE_JSON=false
# Whether or not to save the final transcript in plain text.
org.jitsi.jigasi.transcription.SAVE_TXT=true

# send formats
# Whether or not to send results, when they come in, to the chatroom in JSON. Note that this will result in subtitles being shown.
# org.jitsi.jigasi.transcription.SEND_JSON=true
# Whether or not to send results, when they come in, to the chatroom in plain text. Note that this will result in the chat being somewhat spammed.
# org.jitsi.jigasi.transcription.SEND_TXT=false

# translation
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=true

# record audio. Currently only wav format is supported
org.jitsi.jigasi.transcription.RECORD_AUDIO=true
org.jitsi.jigasi.transcription.RECORD_AUDIO_FORMAT=wav

# execute one or more scripts when a transcript or recording is saved
# org.jitsi.jigasi.transcription.EXECUTE_SCRIPTS=true
# org.jitsi.jigasi.transcription.SCRIPTS_TO_EXECUTE_LIST_SEPARATOR=","
# org.jitsi.jigasi.transcription.SCRIPTS_TO_EXECUTE_LIST=script/example_handle_transcript_directory.sh

# properties for optionally sending statistics to a DataDog server
#org.jitsi.ddclient.prefix=jitsi.jigasi
#org.jitsi.ddclient.host=localhost
#org.jitsi.ddclient.port=8125

# sip health checking
# Enables sip health checking by specifying a number/uri to call
# the target just needs to auto-connect the call play some audio,
# the call must be established for less than 10 seconds
# org.jitsi.jigasi.HEALTH_CHECK_SIP_URI=healthcheck
#
# The interval between healthcheck calls, by default is 5 minutes
# org.jitsi.jigasi.HEALTH_CHECK_INTERVAL=300000
#
# The timeout of healthcheck, if there was no successful health check for
# 10 minutes (default value) we consider jigasi unhealthy
# org.jitsi.jigasi.HEALTH_CHECK_TIMEOUT=600000

I currently commented out every property except the ones below. I am not sure about the use of http://localhost or http(s)://my-domain
jitsi meet conferences run on https://my-domain

# Name of default JVB room that will be joined if no special header is included
# in SIP invite
org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME=jigatest

net.java.sip.communicator.impl.protocol.SingleCallInProgressPolicy.enabled=false

# Adjust opus encoder complexity
net.java.sip.communicator.impl.neomedia.codec.audio.opus.encoder.COMPLEXITY=10

# Disables packet logging
net.java.sip.communicator.packetlogging.PACKET_LOGGING_ENABLED=true
net.java.sip.communicator.impl.protocol.sip.acc1403273890647=acc1403273890647


net.java.sip.communicator.impl.protocol.sip.acc1403273890647.KEEP_ALIVE_INTERVAL=25
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.KEEP_ALIVE_METHOD=OPTIONS
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.VOICEMAIL_ENABLED=false
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.AMR-WB/16000=750
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.G722/8000=700
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.GSM/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.H263-1998/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.H264/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.PCMA/8000=600
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.PCMU/8000=650
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/12000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/16000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/24000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.SILK/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.VP8/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.iLBC/8000=10
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.opus/48000=1000
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.red/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/16000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/32000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.speex/8000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.telephone-event/8000=1
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.Encodings.ulpfec/90000=0
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.OVERRIDE_ENCODINGS=true
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DEFAULT_ENCRYPTION=false

# If an authenticated (hidden) domain is used to connect to a conference,
# PREVENT_AUTH_LOGIN will prevent the SIP participant from being seen as a
# hidden participant in the conference
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.PREVENT_AUTH_LOGIN=FALSE

# Used when incoming calls are used in multidomain environment, used to detect subdomains
# used for constructing callResource and eventually contacting jicofo
#net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DOMAIN_BASE=<<DOMAIN_BASE>>
net.java.sip.communicator.impl.protocol.sip.acc1403273890647.DOMAIN_BASE=my-domain


# The following two props assume we are using jigasi on the same machine as
# the xmpp server.
org.jitsi.jigasi.xmpp.acc.IS_SERVER_OVERRIDDEN=true
org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=127.0.0.1
org.jitsi.jigasi.xmpp.acc.VIDEO_CALLING_DISABLED=false
org.jitsi.jigasi.xmpp.acc.JINGLE_NODES_ENABLED=false
org.jitsi.jigasi.xmpp.acc.AUTO_DISCOVER_STUN=false
org.jitsi.jigasi.xmpp.acc.IM_DISABLED=true
org.jitsi.jigasi.xmpp.acc.SERVER_STORED_INFO_DISABLED=true
org.jitsi.jigasi.xmpp.acc.IS_FILE_TRANSFER_DISABLED=true

# Options regarding Transcription. Read the README for a detailed description
# about each property
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
org.jitsi.jigasi.ENABLE_SIP=false

# whether to use the more expensive, but better performing
# "video" model when doing transcription
org.jitsi.jigasi.transcription.USE_VIDEO_MODEL = false

# delivering final transcript
#org.jitsi.jigasi.transcription.DIRECTORY=/var/lib/jigasi/transcripts
org.jitsi.jigasi.transcription.DIRECTORY=/home/user1/transcripts
# The base URL which will be used to serve the final transcripts. The URL used to serve a transcript will be this base appended by the filename of the transcript.
org.jitsi.jigasi.transcription.BASE_URL=https://my-domain
# The port which will be used to serve the final transcripts. Its default value is -1, which means the Jetty instance serving the transcript files is turned off.
org.jitsi.jigasi.transcription.jetty.port=10101
# Whether or not to advertise the URL which will serve the final transcript when Jigasi joins the room.
org.jitsi.jigasi.transcription.ADVERTISE_URL=true

# Whether or not to save the final transcript in plain text.
org.jitsi.jigasi.transcription.SAVE_TXT=true

# Whether or not to send results, when they come in, to the chatroom in plain text. Note that this will result in the chat being somewhat spammed.
org.jitsi.jigasi.transcription.SEND_TXT=true

# translation
org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=false

# record audio. Currently only wav format is supported
org.jitsi.jigasi.transcription.RECORD_AUDIO=true
org.jitsi.jigasi.transcription.RECORD_AUDIO_FORMAT=wav

With this, I commented out the SIP account properties. Now jigasi logs:

SEVERE: Failed to load account {DOMAIN_BASE=my-domain, Encodings.H264/90000=0, Encodings.SILK/16000=0, Encodings.speex/8000=0, ENCRYPTED_PASSWORD=secret, Encodings.telephone-event/8000=1, Encodings.H263-1998/90000=0, KEEP_ALIVE_METHOD=OPTIONS, Encodings.PCMU/8000=650, Encodings.PCMA/8000=600, Encodings.AMR-WB/16000=750, Encodings.opus/48000=1000, Encodings.SILK/24000=0, Encodings.GSM/8000=0, Encodings.SILK/12000=0, VOICEMAIL_ENABLED=false, Encodings.speex/32000=0, Encodings.SILK/8000=0, DEFAULT_ENCRYPTION=false, Encodings.VP8/90000=0, ACCOUNT_UID=SIP:paris@parismens.onsip.com, Encodings.iLBC/8000=10, Encodings.ulpfec/90000=0, Encodings.G722/8000=700, OVERRIDE_ENCODINGS=true, Encodings.red/90000=0, Encodings.speex/16000=0, KEEP_ALIVE_INTERVAL=25}
java.lang.NullPointerException: The account properties contained no user id.
	at net.java.sip.communicator.service.protocol.ProtocolProviderFactory.createAccount(ProtocolProviderFactory.java:1109)
	at net.java.sip.communicator.service.protocol.AccountManager.doLoadStoredAccounts(AccountManager.java:203)
	at net.java.sip.communicator.service.protocol.AccountManager.loadStoredAccounts(AccountManager.java:463)
	at net.java.sip.communicator.service.protocol.AccountManager.runInLoadStoredAccountsThread(AccountManager.java:579)
	at net.java.sip.communicator.service.protocol.AccountManager.access$100(AccountManager.java:37)
	at net.java.sip.communicator.service.protocol.AccountManager$2.run(AccountManager.java:504)

Can you provide a sip-communicator.properties for when someone only wants transcriptions and no in-out going SIP calls?

Adding the SIP account properties prevents this error, but you wrote they are unnecessary.

Comment everything that starts with:

You need to configure the xmpp account that will connect to the muc. Let me paste a ready config.

#Sample config with one XMPP and one SIP account configured
# Replace {sip-pass-hash} with SIP user password hash
# as well as other account properties

# Name of default JVB room that will be joined if no special header is included
# in SIP invite
org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME=siptest

net.java.sip.communicator.impl.protocol.SingleCallInProgressPolicy.enabled=false

# Adjust opus encoder complexity
net.java.sip.communicator.impl.neomedia.codec.audio.opus.encoder.COMPLEXITY=10

# allow dtmf pass through to the sip side
org.jitsi.service.neomedia.AudioMediaStream.DISABLE_DTMF_HANDLING=true

# Disables packet logging
net.java.sip.communicator.packetlogging.PACKET_LOGGING_ENABLED=true


net.java.sip.communicator.impl.protocol.sip.SKIP_REINVITE_ON_FOCUS_CHANGE_PROP=true
###############




net.java.sip.communicator.impl.protocol.jabber.accxmpp=accxmpp
net.java.sip.communicator.impl.protocol.jabber.accxmpp.ACCOUNT_UID=Jabber:jigasi@auth.my-domain@10.20.3.44
net.java.sip.communicator.impl.protocol.jabber.accxmpp.USER_ID=jigasi@auth.my-domain
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_SERVER_OVERRIDDEN=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.SERVER_ADDRESS=10.20.3.44
net.java.sip.communicator.impl.protocol.jabber.accxmpp.SERVER_PORT=5222
net.java.sip.communicator.impl.protocol.jabber.accxmpp.BOSH_URL=https://10.20.3.44/http-bind
net.java.sip.communicator.impl.protocol.jabber.accxmpp.ALLOW_NON_SECURE=true
#base64 AES keyLength:256 or 128
net.java.sip.communicator.impl.protocol.jabber.accxmpp.PASSWORD=my-xmpp-password

#net.java.sip.communicator.impl.protocol.jabber.accxmpp.RESOURCE=jigasi
net.java.sip.communicator.impl.protocol.jabber.accxmpp.AUTO_GENERATE_RESOURCE=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.RESOURCE_PRIORITY=30

net.java.sip.communicator.impl.protocol.jabber.accxmpp.KEEP_ALIVE_METHOD=XEP-0199
net.java.sip.communicator.impl.protocol.jabber.accxmpp.KEEP_ALIVE_INTERVAL=30
net.java.sip.communicator.impl.protocol.jabber.accxmpp.CALLING_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.JINGLE_NODES_ENABLED=false
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_CARBON_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.DEFAULT_ENCRYPTION=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_USE_ICE=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_ACCOUNT_DISABLED=false
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_PREFERRED_PROTOCOL=false
net.java.sip.communicator.impl.protocol.jabber.accxmpp.AUTO_DISCOVER_JINGLE_NODES=false
net.java.sip.communicator.impl.protocol.jabber.accxmpp.PROTOCOL=Jabber
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_USE_UPNP=false
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IM_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.SERVER_STORED_INFO_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.IS_FILE_TRANSFER_DISABLED=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.USE_DEFAULT_STUN_SERVER=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.ENCRYPTION_PROTOCOL.DTLS-SRTP=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.ENCRYPTION_PROTOCOL_STATUS.DTLS-SRTP=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.OVERRIDE_ENCODINGS=true
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.G722/8000=705
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.GSM/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.H263-1998/90000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.H264/90000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.PCMA/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.PCMU/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.SILK/12000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.SILK/16000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.SILK/24000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.SILK/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.VP8/90000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.iLBC/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.opus/48000=750
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.speex/16000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.speex/32000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.Encodings.speex/8000=0
net.java.sip.communicator.impl.protocol.jabber.accxmpp.BREWERY=JigasiBrewery@internal.auth.my-domain
net.java.sip.communicator.impl.protocol.jabber.accxmpp.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}

net.java.sip.communicator.impl.protocol.jabber.accxmpp.DOMAIN_BASE=my-domain


#######

net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true

# we can receive dial/hangup only from the control muc
org.jitsi.jigasi.ALLOWED_JID=JigasiBrewery@internal.auth.my-domain

org.jitsi.jigasi.BREWERY_ENABLED=true

net.java.sip.communicator.impl.neomedia.audioSystem.audiosilence.captureDevice_list=["AudioSilenceCaptureDevice:noTransferData"]

# We can use the prefix org.jitsi.jigasi.xmpp.acc to override any of the
# properties that will be used for creating xmpp account for communication.

org.jitsi.jigasi.xmpp.acc.IS_SERVER_OVERRIDDEN=true
org.jitsi.jigasi.xmpp.acc.SERVER_ADDRESS=my-domain

org.jitsi.jigasi.xmpp.acc.BOSH_URL_PATTERN=https://{host}{subdomain}/http-bind?room={roomName}
org.jitsi.jigasi.xmpp.acc.VIDEO_CALLING_DISABLED=true
org.jitsi.jigasi.xmpp.acc.JINGLE_NODES_ENABLED=false
org.jitsi.jigasi.xmpp.acc.AUTO_DISCOVER_STUN=false
org.jitsi.jigasi.xmpp.acc.Encodings.H264/90000=0
org.jitsi.jigasi.xmpp.acc.Encodings.VP8/90000=0
org.jitsi.jigasi.xmpp.acc.Encodings.telephone-event/8000=0
org.jitsi.jigasi.xmpp.acc.Encodings.opus/48000=1000
org.jitsi.jigasi.xmpp.acc.OVERRIDE_ENCODINGS=true
org.jitsi.jigasi.xmpp.acc.IM_DISABLED=true
org.jitsi.jigasi.xmpp.acc.SERVER_STORED_INFO_DISABLED=true
org.jitsi.jigasi.xmpp.acc.IS_FILE_TRANSFER_DISABLED=true
org.jitsi.jigasi.xmpp.acc.KEEP_ALIVE_METHOD=XEP-0199
org.jitsi.jigasi.xmpp.acc.KEEP_ALIVE_INTERVAL=30


org.jitsi.jigasi.xmpp.acc.USER_ID=transcriber@recorder.my-domain
org.jitsi.jigasi.xmpp.acc.PASS=my-password
org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false
org.jitsi.jigasi.xmpp.acc.ALLOW_NON_SECURE=true

# 30 minutes
org.jitsi.jigasi.JVB_INVITE_TIMEOUT=1800000

# If you want jigasi to perform authenticated login instead of anonymous login
# to the XMPP server, you can set the following properties.
# org.jitsi.jigasi.xmpp.acc.USER_ID=SOME_USER@SOME_DOMAIN
# org.jitsi.jigasi.xmpp.acc.PASS=SOME_PASS
# org.jitsi.jigasi.xmpp.acc.ANONYMOUS_AUTH=false

# If you want to use the SIP user part of the incoming/outgoing call SIP URI
# you can set the following property to true.
# org.jitsi.jigasi.USE_SIP_USER_AS_XMPP_RESOURCE=true

# Activate this property if you are using self-signed certificates or other
# type of non-trusted certicates. In this mode your service trust in the
# remote certificates always.
# net.java.sip.communicator.service.gui.ALWAYS_TRUST_MODE_ENABLED=true

# Enable this property to be able to shutdown gracefully jigasi using
# a rest command
org.jitsi.jigasi.ENABLE_REST_SHUTDOWN=true

#########

# enable transcription role, disable sip
org.jitsi.jigasi.ENABLE_TRANSCRIPTION=true
org.jitsi.jigasi.ENABLE_SIP=false



# delivering final transcript
# org.jitsi.jigasi.transcription.DIRECTORY=/var/lib/jigasi/transcripts
# org.jitsi.jigasi.transcription.BASE_URL=http://localhost/
# org.jitsi.jigasi.transcription.jetty.port=-1
# org.jitsi.jigasi.transcription.ADVERTISE_URL=false

# save formats
# org.jitsi.jigasi.transcription.SAVE_JSON=false
# org.jitsi.jigasi.transcription.SAVE_TXT=true

# send formats
org.jitsi.jigasi.transcription.SEND_JSON=true
# org.jitsi.jigasi.transcription.SEND_TXT=false

# translation
# org.jitsi.jigasi.transcription.ENABLE_TRANSLATION=false

# record audio. Currently only wav format is supported
# org.jitsi.jigasi.transcription.RECORD_AUDIO=false
# org.jitsi.jigasi.transcription.RECORD_AUDIO_FORMAT=wav

# execute one or more scripts when a transcript or recording is saved
# org.jitsi.jigasi.transcription.EXECUTE_SCRIPTS=true
# org.jitsi.jigasi.transcription.SCRIPTS_TO_EXECUTE_LIST_SEPARATOR=","
# org.jitsi.jigasi.transcription.SCRIPTS_TO_EXECUTE_LIST=script/example_handle_transcript_directory.sh

# debug health check failures (thread dump in logs)
org.jitsi.jigasi.HEALTH_CHECK_DEBUG_ENABLED=false


org.jitsi.jigasi.LOCAL_REGION=my-region

In the config there are several values my-.... that you need to change and you need to create two users jigasi@auth.my-domain and transcriber@recorder.my-domain.

And you need in jicofo props config:

org.jitsi.jicofo.jigasi.BREWERY=JigasiBrewery@internal.auth.my-domain

You also need to enable transcriptions in your config.js transcribingEnabled: true,, and make sure in your interface_config.js in the TOOLBAR_BUTTONS array you have closedcaptions button listed.

using prosodyctl?

Yes.

and
ACCOUNT_UID=Jabber:jigasi@auth.my-domain@10.20.3.44
becomes
ACCOUNT_UID=Jabber:jigasi@auth.my-domain@my-exxternal-ip or @127.0.0.1 ? or @10.20.3.44 or was that left over from your conf.?

it now contains:
org.jitsi.jicofo.auth.URL=XMPP:my-domain
org.jitsi.jicofo.jigasi.BREWERY=JigasiBrewery@internal.auth.my-domain

org.jitsi.jigasi.DEFAULT_JVB_ROOM_NAME=jigatest
10.20.3.44 is an internal ip-address, I guess it should be where the Prosody XMPP server runs(?), but I don’t really know where that is

The errors have changed (right before and after closing the call) in the jigasi log:

SEVERE: Failed to connect to XMPP service
org.jivesoftware.smack.SmackException: Timeout reached for the connection to null:0.
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.connectInternal(XMPPBOSHConnection.java:202)
	at org.jivesoftware.smack.AbstractXMPPConnection.connect(AbstractXMPPConnection.java:383)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:1309)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:970)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.initializeConnectAndLogin(ProtocolProviderServiceJabberImpl.java:795)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.register(ProtocolProviderServiceJabberImpl.java:500)
	at org.jitsi.jigasi.util.RegisterThread.run(RegisterThread.java:59)

Feb 25, 2020 9:51:46 AM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: service.gui.ERROR
Feb 25, 2020 9:51:46 AM net.java.sip.communicator.util.Logger warn
WARNING: Missing resource for key: plugin.reconnectplugin.CONNECTION_FAILED_MSG
Feb 25, 2020 9:52:01 AM org.jivesoftware.smackx.ping.PingManager pingServerIfNecessary
WARNING: XMPPConnection was not authenticated
Feb 25, 2020 9:53:42 AM org.jivesoftware.smack.bosh.XMPPBOSHConnection shutdown
WARNING: shutdown
java.lang.NullPointerException
	at org.igniterealtime.jbosh.BOSHClient.send(BOSHClient.java:494)
	at org.igniterealtime.jbosh.BOSHClient.disconnect(BOSHClient.java:586)
	at org.igniterealtime.jbosh.BOSHClient.disconnect(BOSHClient.java:567)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.shutdown(XMPPBOSHConnection.java:266)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.notifyConnectionError(XMPPBOSHConnection.java:417)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection$BOSHConnectionListener.connectionEvent(XMPPBOSHConnection.java:464)
	at org.igniterealtime.jbosh.BOSHClient.fireConnectionClosedOnError(BOSHClient.java:1684)
	at org.igniterealtime.jbosh.BOSHClient.dispose(BOSHClient.java:713)
	at org.igniterealtime.jbosh.BOSHClient.processExchange(BOSHClient.java:1138)
	at org.igniterealtime.jbosh.BOSHClient.processMessages(BOSHClient.java:999)
	at org.igniterealtime.jbosh.BOSHClient.access$300(BOSHClient.java:100)
	at org.igniterealtime.jbosh.BOSHClient$RequestProcessor.run(BOSHClient.java:1728)
	at java.base/java.lang.Thread.run(Thread.java:834)

Feb 25, 2020 9:53:42 AM org.jivesoftware.smack.AbstractXMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection XMPPBOSHConnection[not-authenticated] (0) closed with error
org.igniterealtime.jbosh.BOSHException: Could not obtain response
	at org.igniterealtime.jbosh.ApacheHTTPResponse.awaitResponse(ApacheHTTPResponse.java:251)
	at org.igniterealtime.jbosh.ApacheHTTPResponse.getBody(ApacheHTTPResponse.java:192)
	at org.igniterealtime.jbosh.BOSHClient.processExchange(BOSHClient.java:1123)
	at org.igniterealtime.jbosh.BOSHClient.processMessages(BOSHClient.java:999)
	at org.igniterealtime.jbosh.BOSHClient.access$300(BOSHClient.java:100)
	at org.igniterealtime.jbosh.BOSHClient$RequestProcessor.run(BOSHClient.java:1728)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.net.ConnectException: Connection timed out (Connection timed out)
	at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:399)
	at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:242)
	at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:224)
	at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:403)
	at java.base/java.net.Socket.connect(Socket.java:609)
	at java.base/sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:285)
	at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:532)
	at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:409)
	at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:479)
	at org.apache.http.conn.scheme.SchemeSocketFactoryAdaptor.connectSocket(SchemeSocketFactoryAdaptor.java:66)
	at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:177)
	at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:144)
	at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:131)
	at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:611)
	at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:446)
	at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:882)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
	at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
	at org.igniterealtime.jbosh.ApacheHTTPResponse.awaitResponse(ApacheHTTPResponse.java:235)
	... 6 more

Prosody logs a failure to connect to internal.auth (and the ports it uses):

Feb 25 09:51:08 general info    Prosody is using the select backend for connection handling
Feb 25 09:51:08 portmanager     info    Activated service 'http' on [localhost]:5280
Feb 25 09:51:08 portmanager     info    Activated service 'https' on [localhost]:5281
Feb 25 09:51:08 portmanager     info    Activated service 's2s' on [::]:5269, [*]:5269
Feb 25 09:51:08 portmanager     info    Activated service 'c2s' on [::]:5222, [*]:5222
Feb 25 09:51:08 portmanager     info    Activated service 'legacy_ssl' on no ports
Feb 25 09:51:08 mod_posix       info    Prosody is about to detach from the console, disabling further console output
Feb 25 09:51:08 mod_posix       info    Successfully daemonized to PID 28427
Feb 25 09:51:08 portmanager     info    Activated service 'component' on [127.0.0.1]:5347, [::1]:5347
Feb 25 09:51:10 c2s561eedc24af0 info    Client connected
Feb 25 09:51:10 c2s561eedc24af0 info    Stream encrypted (TLSv1.3 with TLS_AES_256_GCM_SHA384)
Feb 25 09:51:10 c2s561eedc24af0 info    Authenticated as focus@auth.my-domain
Feb 25 09:51:10 callcontrol.my-domain:component     warn    Component not connected, bouncing error for: <iq id='VzmKA-34209' type='get' to='callcontrol.counse$
Feb 25 09:51:10 jitsi-videobridge.my-domain:component       warn    Component not connected, bouncing error for: <iq id='VzmKA-34216' type='get' to='jitsi-vide$
Feb 25 09:51:10 focus.my-domain:component   warn    Component not connected, bouncing error for: <iq id='VzmKA-34218' type='get' to='focus.counseledmeetings.co$
Feb 25 09:51:16 c2s561eedc24af0 info    Client disconnected: closed
Feb 25 09:51:16 c2s561eedbfbf80 info    Client connected
Feb 25 09:51:17 c2s561eedbfbf80 info    Stream encrypted (TLSv1.3 with TLS_AES_256_GCM_SHA384)
Feb 25 09:51:17 c2s561eedbfbf80 info    Authenticated as focus@auth.my-domain
Feb 25 09:51:17 s2sout561eedc06220      info    Failed in all attempts to connect to internal.auth.my-domain
Feb 25 09:51:17 s2sout561eedc06220      info    Sending error replies for 1 queued stanzas because of failed outgoing connection to internal.auth.my-domain

and jicofo:

Jicofo 2020-02-25 09:51:17.519 SEVERE: [19] org.jitsi.jicofo.xmpp.BaseBrewery.start().190 Failed to create room: JigasiBrewery@internal.auth.my-domain
net.java.sip.communicator.service.protocol.OperationFailedException: Failed to join the room
        at org.jitsi.impl.protocol.xmpp.ChatRoomImpl.joinAs(ChatRoomImpl.java:298)
        at org.jitsi.impl.protocol.xmpp.ChatRoomImpl.join(ChatRoomImpl.java:209)
        at org.jitsi.jicofo.xmpp.BaseBrewery.start(BaseBrewery.java:184)
        at org.jitsi.jicofo.xmpp.BaseBrewery.maybeStart(BaseBrewery.java:135)
        at org.jitsi.jicofo.xmpp.BaseBrewery.registrationStateChanged(BaseBrewery.java:160)
        at org.jitsi.jicofo.ProtocolProviderHandler.registrationStateChanged(ProtocolProviderHandler.java:141)
        at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:187)
        at net.java.sip.communicator.service.protocol.AbstractProtocolProviderService.fireRegistrationStateChanged(AbstractProtocolProviderService.java:141)
        at org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.notifyConnected(XmppProtocolProvider.java:335)
        at org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.access$000(XmppProtocolProvider.java:62)
        at org.jitsi.impl.protocol.xmpp.XmppProtocolProvider$XmppConnectionListener.authenticated(XmppProtocolProvider.java:623)
        at org.jivesoftware.smack.AbstractXMPPConnection.callConnectionAuthenticatedListener(AbstractXMPPConnection.java:1297)
        at org.jivesoftware.smack.AbstractXMPPConnection.afterSuccessfulLogin(AbstractXMPPConnection.java:572)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection.afterSuccessfulLogin(XMPPTCPConnection.java:379)
        at org.jivesoftware.smack.tcp.XMPPTCPConnection.loginInternal(XMPPTCPConnection.java:444)
        at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:491)
        at org.jitsi.impl.protocol.xmpp.XmppProtocolProvider.doConnect(XmppProtocolProvider.java:287)
        at org.jitsi.retry.RetryStrategy$TaskRunner.run(RetryStrategy.java:193)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
        at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: org.jivesoftware.smack.XMPPException$XMPPErrorException: XMPP error reply received from internal.auth.my-domain: XMPPError: remote-server-not-found $
        at org.jivesoftware.smack.XMPPException$XMPPErrorException.ifHasErrorThenThrow(XMPPException.java:132)
        at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:263)
        at org.jivesoftware.smack.StanzaCollector.nextResultOrThrow(StanzaCollector.java:214)
        at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:540)
        at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.discoverInfo(ServiceDiscoveryManager.java:506)
        at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:748)
        at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeatures(ServiceDiscoveryManager.java:744)
        at org.jivesoftware.smackx.disco.ServiceDiscoveryManager.supportsFeature(ServiceDiscoveryManager.java:740)
        at org.jivesoftware.smackx.muc.MultiUserChatManager.providesMucService(MultiUserChatManager.java:361)
        at org.jivesoftware.smackx.muc.MultiUserChat.enter(MultiUserChat.java:311)
        at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:498)
        at org.jivesoftware.smackx.muc.MultiUserChat.createOrJoin(MultiUserChat.java:444)
        at org.jitsi.impl.protocol.xmpp.ChatRoomImpl.joinAs(ChatRoomImpl.java:240)

@damencho you reckon it is that IP address?

It doesn’t matter, but put internal ip

You need to define such muc component in prosody, then restart, prosody, jigasi and jicofo.

OK, I added
Component "internal.auth.counseledmeetings.com" "muc" to /etc/prosody/prosody.cfg.lua` and changed that ip address to my internal IP address. I also see that

The host 'recorder.my-domain' is not listed in the configuration file (or is not enabled).
The user will not be able to log in until this is changed.

I added Component “recorder.my-domain” to the /etc/prosody/conf.avail/my-domain.cfg.lua
So, a component instead of a host because I don’t have LE certs for recorder. Not sure this will work.

I think the current (jigasi) errors are related to that:

Feb 25, 2020 1:58:07 PM net.java.sip.communicator.util.Logger info
INFO: JID allowed to make outgoing calls: jigasibrewery@internal.auth.my-domain
Feb 25, 2020 1:58:07 PM org.igniterealtime.jbosh.BOSHClient init
INFO: Starting with 1 request processors
Feb 25, 2020 1:58:07 PM org.jivesoftware.smack.bosh.XMPPBOSHConnection shutdown
WARNING: shutdown
java.lang.NullPointerException
	at org.igniterealtime.jbosh.BOSHClient.send(BOSHClient.java:494)
	at org.igniterealtime.jbosh.BOSHClient.disconnect(BOSHClient.java:586)
	at org.igniterealtime.jbosh.BOSHClient.disconnect(BOSHClient.java:567)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.shutdown(XMPPBOSHConnection.java:266)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.notifyConnectionError(XMPPBOSHConnection.java:417)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection$BOSHConnectionListener.connectionEvent(XMPPBOSHConnection.java:464)
	at org.igniterealtime.jbosh.BOSHClient.fireConnectionClosedOnError(BOSHClient.java:1684)
	at org.igniterealtime.jbosh.BOSHClient.dispose(BOSHClient.java:713)
	at org.igniterealtime.jbosh.BOSHClient.processExchange(BOSHClient.java:1138)
	at org.igniterealtime.jbosh.BOSHClient.processMessages(BOSHClient.java:999)
	at org.igniterealtime.jbosh.BOSHClient.access$300(BOSHClient.java:100)
	at org.igniterealtime.jbosh.BOSHClient$RequestProcessor.run(BOSHClient.java:1728)
	at java.base/java.lang.Thread.run(Thread.java:834)

Feb 25, 2020 1:58:07 PM org.jivesoftware.smack.AbstractXMPPConnection callConnectionClosedOnErrorListener
WARNING: Connection XMPPBOSHConnection[not-authenticated] (0) closed with error
org.igniterealtime.jbosh.BOSHException: Could not parse body:
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><style>body{margin-top:14%;text-align:center;background-color:#F8F8F8;font-family:sans-serif;}h1{font-size:xx-large;}p{font-size:x-large;}p+p { font-size: large; font-family: courier }</style>
</head>
<body><h1>404 Not Found</h1><p>Whatever you were looking for is not here. Keep looking.</p><p>Unknown host: 10.0.2.15</p>
</body>
</html>

	at org.igniterealtime.jbosh.BodyParserXmlPull.parse(BodyParserXmlPull.java:132)
	at org.igniterealtime.jbosh.StaticBody.fromString(StaticBody.java:114)
	at org.igniterealtime.jbosh.ApacheHTTPResponse.awaitResponse(ApacheHTTPResponse.java:246)
	at org.igniterealtime.jbosh.ApacheHTTPResponse.getBody(ApacheHTTPResponse.java:192)
	at org.igniterealtime.jbosh.BOSHClient.processExchange(BOSHClient.java:1123)
	at org.igniterealtime.jbosh.BOSHClient.processMessages(BOSHClient.java:999)
	at org.igniterealtime.jbosh.BOSHClient.access$300(BOSHClient.java:100)
	at org.igniterealtime.jbosh.BOSHClient$RequestProcessor.run(BOSHClient.java:1728)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalStateException: Root element was not 'body' in the 'http://jabber.org/protocol/httpbind' namespace.  (Was 'html' in '')
	at org.igniterealtime.jbosh.BodyParserXmlPull.parse(BodyParserXmlPull.java:98)
	... 8 more

Feb 25, 2020 1:58:08 PM org.jivesoftware.smack.SASLAuthentication selectMechanism
WARNING: Server did not report any SASL mechanisms
Feb 25, 2020 1:58:08 PM net.java.sip.communicator.util.Logger error
SEVERE: Failed to connect to XMPP service
org.jivesoftware.smack.SmackException: No supported and enabled SASL Mechanism provided by server. Server announced mechanisms: []. Registered SASL mechanisms with Smack: [SASL Mech: GSSAPI, Prio: 100, SASL Mech: SCRAM-SHA-1-PLUS, Prio: 100, SASL Mech: SCRAM-SHA-1, Prio: 110, SASL Mech: DIGEST-MD5, Prio: 200, SASL Mech: CRAM-MD5, Prio: 300, SASL Mech: PLAIN, Prio: 400, SASL Mech: X-OAUTH2, Prio: 410, SASL Mech: EXTERNAL, Prio: 500, SASL Mech: ANONYMOUS, Prio: 500]. Enabled SASL mechanisms for this connection: null. Blacklisted SASL mechanisms: [SCRAM-SHA-1-PLUS].
	at org.jivesoftware.smack.SASLAuthentication.selectMechanism(SASLAuthentication.java:361)
	at org.jivesoftware.smack.SASLAuthentication.authenticate(SASLAuthentication.java:192)
	at org.jivesoftware.smack.bosh.XMPPBOSHConnection.loginInternal(XMPPBOSHConnection.java:222)
	at org.jivesoftware.smack.AbstractXMPPConnection.login(AbstractXMPPConnection.java:491)
	at net.java.sip.communicator.impl.protocol.jabber.LoginByPasswordStrategy.login(LoginByPasswordStrategy.java:98)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:1371)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.connectAndLogin(ProtocolProviderServiceJabberImpl.java:970)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.initializeConnectAndLogin(ProtocolProviderServiceJabberImpl.java:795)
	at net.java.sip.communicator.impl.protocol.jabber.ProtocolProviderServiceJabberImpl.register(ProtocolProviderServiceJabberImpl.java:500)
	at org.jitsi.jigasi.util.RegisterThread.run(RegisterThread.java:59)

As for recorder, in prosody.log (you think I should get LE certs for it?):

Feb 25 13:58:36 recorder.my-domain:component        warn    Component not connected, bouncing error for: <iq id='KFeaE-240' type='get' to='recorde

And in jicofo.log:

Jicofo 2020-02-25 13:55:36.879 WARNING: [33] org.jitsi.jicofo.BridgeSelector.log() No pub-sub node mapped for jitsi-videobridge.my-domain

The secret under

Component "callcontrol.my-domain"
        component_secret = "secret"

where is it supposed to go again? Into the jigasi sip-communicator.properties, right?

looks like this

Maybe it is because I used a Component instead of a VirtualHost for register.my-domain in prosody conf because I don’t have certs for a VirtualHost? @damencho do you have a VirtualHost or a Component for register.my-domain?

And a similar discussion here Jigasi failed to work with jwt token

Wait, these were just mockups you need to replace my-domain with your domain.
You don’t need certificates for components that are defined, you don’t need cert for anything from prosody, the self-signed used there are fine.
You need cert just on the webserver

Yes I understand I need to replace my-domain. I just change it here on the forum, to keep it general.