Setup Jibri on different server

I have setup jibri in the same server than jitsi, but now i want to install another Jibri on a new server. Is there any procedure to do that ?

Jitsi’s TCP/5222 should be accessible by jibri.
The nickname in jibri.conf should be different than the other setups.

if i want to setup a Jibri docker config, do i have to respect the different nicknames for each instance and also enable port 5222?

I’m not familiar with Dockerized setup but I think that nicknames are handled correctly in it.

For TCP/5222, this port should be allowed on Jitsi side, not on Jibri

Each Jibri docker container has a different nickname:

it is set in the config here:

So by default they will all work as expected, with different nicknames. You can also set your preferred nickname(s) through the env variable JIBRI_INSTANCE_ID, although, once again, it’s not needed.

I have configured jibri with docker but I can’t find where these files are located, where I can configure a different nickname for each instance;
and in my configuration I can connect but as soon as I start a recording, I am told that the recording will start but nothing happens, when I read the logs I can’t figure out which error I’m facing

Blockquote
Jibri 2023-02-22 09:29:57.593 INFO: [1] MainKt.handleCommandLineArgs#186: Jibri run with args [–config, /etc/jitsi/jibri/config.json]
Jibri 2023-02-22 09:29:58.102 INFO: [1] MainKt.setupLegacyConfig#211: Checking legacy config file /etc/jitsi/jibri/config.json
Jibri 2023-02-22 09:29:58.173 INFO: [1] MainKt.setupLegacyConfig#214: Legacy config file /etc/jitsi/jibri/config.json doesn’t exist
Jibri 2023-02-22 09:30:00.481 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::jibriId’
ConfigSourceSupplier: key: ‘jibri.id’, type: ‘kotlin.String’, source: ‘config’
Jibri 2023-02-22 09:30:00.500 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: LambdaSupplier: Trying to retrieve value via JibriConfig::jibriId
Jibri 2023-02-22 09:30:00.611 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::jibriId’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class java.lang.NullPointerException
Jibri 2023-02-22 09:30:00.741 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.id’ from source ‘config’ as type kotlin.String
Jibri 2023-02-22 09:30:01.199 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value jibri-115612826 for key ‘jibri.id’ from source ‘config’ as type kotlin.String
Jibri 2023-02-22 09:30:01.208 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.id’, type: ‘kotlin.String’, source: ‘config’
Jibri 2023-02-22 09:30:01.235 INFO: [1] MainKt.main#55: Jibri starting up with id jibri-115612826
Jibri 2023-02-22 09:30:01.262 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::enableStatsD’
ConfigSourceSupplier: key: ‘jibri.stats.enable-stats-d’, type: ‘kotlin.Boolean’, source: ‘config’
Jibri 2023-02-22 09:30:01.267 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: LambdaSupplier: Trying to retrieve value via JibriConfig::enableStatsD
Jibri 2023-02-22 09:30:01.271 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::enableStatsD’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$Error: class java.lang.NullPointerException
Jibri 2023-02-22 09:30:01.291 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.stats.enable-stats-d’ from source ‘config’ as type kotlin.Boolean
Jibri 2023-02-22 09:30:01.298 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value true for key ‘jibri.stats.enable-stats-d’ from source ‘config’ as type kotlin.Boolean
Jibri 2023-02-22 09:30:01.303 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.stats.enable-stats-d’, type: ‘kotlin.Boolean’, source: ‘config’
Jibri 2023-02-22 09:30:01.438 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
ConfigSourceSupplier: key: ‘jibri.webhook.subscribers’, type: ‘kotlin.collections.List<kotlin.String>’, source: ‘config’
Jibri 2023-02-22 09:30:01.471 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.webhook.subscribers’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
Jibri 2023-02-22 09:30:01.520 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value for key ‘jibri.webhook.subscribers’ from source ‘config’ as type kotlin.collections.List<kotlin.String>
Jibri 2023-02-22 09:30:01.523 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.webhook.subscribers’, type: ‘kotlin.collections.List<kotlin.String>’, source: ‘config’
Jibri 2023-02-22 09:30:04.312 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.jwt-info’ from source ‘config’ as type com.typesafe.config.ConfigObject
Jibri 2023-02-22 09:30:04.380 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value SimpleConfigObject({}) for key ‘jibri.jwt-info’ from source ‘config’ as type com.typesafe.config.ConfigObject
Jibri 2023-02-22 09:30:04.399 INFO: [1] JwtInfo$Companion.fromConfig#176: got jwtConfig: {}

Jibri 2023-02-22 09:30:04.411 INFO: [1] JwtInfo$Companion.fromConfig#186: Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: reference.conf @ jar:file:/opt/jitsi/jibri/jibri.jar!/reference.conf: 77: No configuration setting found for key ‘signing-key-path’
Jibri 2023-02-22 09:30:04.418 FINE: [1] RefreshingProperty.getValue#47: Refreshing property jwt (not yet initialized or expired)…
Jibri 2023-02-22 09:30:05.284 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
ConfigSourceSupplier: key: ‘internal_http_port’, type: ‘kotlin.Int’, source: ‘command line args’
ConfigSourceSupplier: key: ‘jibri.api.http.internal-api-port’, type: ‘kotlin.Int’, source: ‘config’
Jibri 2023-02-22 09:30:05.288 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘internal_http_port’ from source ‘command line args’ as type kotlin.Int
Jibri 2023-02-22 09:30:05.296 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via ConfigSourceSupplier: key: ‘internal_http_port’, type: ‘kotlin.Int’, source: ‘command line args’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: not found
Jibri 2023-02-22 09:30:05.304 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.api.http.internal-api-port’ from source ‘config’ as type kotlin.Int
Jibri 2023-02-22 09:30:05.349 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value 3333 for key ‘jibri.api.http.internal-api-port’ from source ‘config’ as type kotlin.Int
Jibri 2023-02-22 09:30:05.367 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.api.http.internal-api-port’, type: ‘kotlin.Int’, source: ‘config’
Jibri 2023-02-22 09:30:05.415 INFO: [1] MainKt.main#125: Using port 3333 for internal HTTP API
SLF4J: Failed to load class “org.slf4j.impl.StaticLoggerBinder”.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Jibri 2023-02-22 09:30:05.479 FINE: [18] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status
Jibri 2023-02-22 09:30:06.962 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
LambdaSupplier: ‘JibriConfig::xmppEnvironments’
TypeConvertingSupplier: converting value from ConfigSourceSupplier: key: ‘jibri.api.xmpp.environments’, type: ‘kotlin.collections.List<com.typesafe.config.Config>’, source: ‘config’
Jibri 2023-02-22 09:30:06.985 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: LambdaSupplier: Trying to retrieve value via JibriConfig::xmppEnvironments
Jibri 2023-02-22 09:30:06.985 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via LambdaSupplier: ‘JibriConfig::xmppEnvironments’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: Considering empty XMPP envs list as not found
Jibri 2023-02-22 09:30:06.987 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.api.xmpp.environments’ from source ‘config’ as type kotlin.collections.List<com.typesafe.config.Config>
Jibri 2023-02-22 09:30:06.997 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value [Config(SimpleConfigObject({“base-url”:" https://visio.backbone-corp.COM",“call-login”:{“domain”:“recorder.visio.backbone-corp.COM”,“password”:“RPwd”,“username”:“recorder”},“control-login”:{“domain”:“auth.visio.backbone-corp.COM”,“password”:“JPwd”,“port”:“5222”,“username”:“jibri”},“control-muc”:{“domain”:“internal.auth.visio.backbone-corp.COM”,“nickname”:“jibri-115612826”,“room-name”:“jibribrewery”},“name”:“-0”,“strip-from-room-domain”:“conference.”,“trust-all-xmpp-certs”:true,“usage-timeout”:“0”,“xmpp-domain”:“visio.backbone-corp.COM”,“xmpp-server-hosts”:[“visio.backbone-corp.COM”]}))] for key ‘jibri.api.xmpp.environments’ from source ‘config’ as type kotlin.collections.List<com.typesafe.config.Config>
Jibri 2023-02-22 09:30:07.345 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: TypeConvertingSupplier: Converted value type from ConfigSourceSupplier: key: ‘jibri.api.xmpp.environments’, type: ‘kotlin.collections.List<com.typesafe.config.Config>’, source: ‘config’ to [XmppEnvironmentConfig(name=-0, xmppServerHosts=[visio.backbone-corp.COM], xmppDomain=visio.backbone-corp.COM, baseUrl= https://visio.backbone-corp.COM, controlLogin=XmppCredentials(domain=auth.visio.backbone-corp.COM, port=5222, username=jibri, password=), controlMuc=XmppMuc(domain=internal.auth.visio.backbone-corp.COM, roomName=jibribrewery, nickname=jibri-115612826), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.visio.backbone-corp.COM, port=null, username=recorder, password=), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true, securityMode=null)]
Jibri 2023-02-22 09:30:07.363 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via TypeConvertingSupplier: converting value from ConfigSourceSupplier: key: ‘jibri.api.xmpp.environments’, type: ‘kotlin.collections.List<com.typesafe.config.Config>’, source: ‘config’
Jibri 2023-02-22 09:30:08.711 INFO: [1] XmppApi.updatePresence#209: Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
Jibri 2023-02-22 09:30:08.725 FINE: [1] MucClientManager.setPresenceExtension#160: Setting a presence extension: org.jitsi.xmpp.extensions.jibri.JibriStatusPacketExt@6cc86152
Jibri 2023-02-22 09:30:08.808 INFO: [1] XmppApi.start#156: Connecting to xmpp environment on visio.backbone-corp.COM with config XmppEnvironmentConfig(name=-0, xmppServerHosts=[visio.backbone-corp.COM], xmppDomain=visio.backbone-corp.COM, baseUrl= https://visio.backbone-corp.COM, controlLogin=XmppCredentials(domain=auth.visio.backbone-corp.COM, port=5222, username=jibri, password=), controlMuc=XmppMuc(domain=internal.auth.visio.backbone-corp.COM, roomName=jibribrewery, nickname=jibri-115612826), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.visio.backbone-corp.COM, port=null, username=recorder, password=), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true, securityMode=null)
Jibri 2023-02-22 09:30:08.811 INFO: [1] XmppApi.start#174: The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be accepted
Jibri 2023-02-22 09:30:09.017 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: checking for value via suppliers:
ConfigSourceSupplier: key: ‘http_api_port’, type: ‘kotlin.Int’, source: ‘command line args’
ConfigSourceSupplier: key: ‘jibri.api.http.external-api-port’, type: ‘kotlin.Int’, source: ‘config’
Jibri 2023-02-22 09:30:09.036 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘http_api_port’ from source ‘command line args’ as type kotlin.Int
Jibri 2023-02-22 09:30:09.043 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: failed to find value via ConfigSourceSupplier: key: ‘http_api_port’, type: ‘kotlin.Int’, source: ‘command line args’: org.jitsi.metaconfig.ConfigException$UnableToRetrieve$NotFound: not found
Jibri 2023-02-22 09:30:09.047 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Trying to retrieve key ‘jibri.api.http.external-api-port’ from source ‘config’ as type kotlin.Int
Jibri 2023-02-22 09:30:09.048 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: ConfigSourceSupplier: Found value 2222 for key ‘jibri.api.http.external-api-port’ from source ‘config’ as type kotlin.Int
Jibri 2023-02-22 09:30:09.074 FINE: [1] MainKt$setupMetaconfigLogger$1.debug#232: FallbackSupplier: value found via ConfigSourceSupplier: key: ‘jibri.api.http.external-api-port’, type: ‘kotlin.Int’, source: ‘config’
Jibri 2023-02-22 09:30:09.085 INFO: [1] MainKt.main#152: Using port 2222 for HTTP API
Jibri 2023-02-22 09:30:09.345 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient.initializeConnectAndJoin#279: Initializing a new MucClient for [ org.jitsi.xmpp.mucclient.MucClientConfiguration id=visio.backbone-corp.COM domain=auth.visio.backbone-corp.COM hostname=visio.backbone-corp.COM port=5222 username=jibri mucs=[jibribrewery@internal.auth.visio.backbone-corp.com] mucNickname=jibri-115612826 disableCertificateVerification=true]
Jibri 2023-02-22 09:30:09.459 WARNING: [31] MucClient.createXMPPTCPConnectionConfiguration#115: Disabling certificate verification!
Jibri 2023-02-22 09:30:09.690 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient.initializeConnectAndJoin#341: Dispatching a thread to connect and login.
Jibri 2023-02-22 09:30:10.466 FINE: [31] JibriStatsDClient.incrementCounter#38: Incrementing statsd counter: xmpp-connected:xmpp_server_host:visio.backbone-corp.COM
Jibri 2023-02-22 09:30:10.467 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient$2.connected#312: Connected.
Jibri 2023-02-22 09:30:10.479 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient.lambda$getConnectAndLoginCallable$9#637: Logging in.
Jibri 2023-02-22 09:30:11.121 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient$2.authenticated#318: Authenticated, b=false
Jibri 2023-02-22 09:30:11.167 FINE: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient$MucWrapper.resetLastPresenceSent#836: Resetting lastPresenceSent
Jibri 2023-02-22 09:30:11.332 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:11.336 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:11.359 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:11.359 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:11.363 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:11.364 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:11.380 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:11.380 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:11.384 INFO: [31] [hostname=visio.backbone-corp.COM id=visio.backbone-corp.COM] MucClient$MucWrapper.join#761: Joined MUC: jibribrewery@internal.auth.visio.backbone-corp.com
Jibri 2023-02-22 09:30:11.413 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:11.414 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:12.197 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:12.202 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:30:12.356 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element busy-status from namespace http://jitsi.org/protocol/jibri
Jibri 2023-02-22 09:30:12.360 FINE: [45] org.jitsi.xmpp.extensions.DefaultPacketExtensionProvider.parse: Could not add a provider for element health-status from namespace http://jitsi.org/protocol/health
Jibri 2023-02-22 09:31:05.219 FINE: [18] WebhookClient$updateStatus$1.invokeSuspend#109: Updating 0 subscribers of status

The two files I quoted are just to confirm that the nicknames are unique, that is by design and you don’t need to configure it explicitly. Your issue should be somewhere else, not in the nicknames.

p.s.: If you still want to customize the nicknames, for whatever reason (once again, it’s not needed in the default setup), the way to do it is by adding JIBRI_INSTANCE_ID in your .env file.

okay, when I look in the logs the nicknames look different I’ll keep looking to solve my problem. thanks