Jibri installed without errors, but not recording

Hi,

We’re running Jitsi and Jibri on 2 separate AWS EC2 instances. Jitsi is working fine, we open/close rooms and use JWT.

We want to enable recording now. So I followed a number of topics here and managed to install and configure Jibri.

Unfortunately when we try to record we instantly get the “Recording failed to start” message. I already followed the troubleshooting topic here in an attempt to fix, but the logs don’t indicate that there’s anything wrong.

Below are configs and logs from prosody and jibri. Our real domain is replaced by OUR.DOMAIN.EXT, and any credentials are changed.

I’m at a loss, and any help would be greatly appreciated.

prosody.log

Jul 27 11:37:51 startup	info	Hello and welcome to Prosody version 0.11.4
Jul 27 11:37:51 startup	info	Prosody is using the select backend for connection handling
Jul 27 11:37:51 portmanager	info	Activated service 's2s' on [*]:5269, [::]:5269
Jul 27 11:37:51 portmanager	info	Activated service 'c2s' on [*]:5222, [::]:5222
Jul 27 11:37:51 portmanager	info	Activated service 'legacy_ssl' on no ports
Jul 27 11:37:51 general	info	Starting conference duration timer for conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 conferenceduration.OUR.DOMAIN.EXT:conference_duration_component	info	No muc component found, will listen for it: conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 general	info	Starting speakerstats for conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 speakerstats.OUR.DOMAIN.EXT:speakerstats_component	info	No muc component found, will listen for it: conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 OUR.DOMAIN.EXT:auth_token	warn	WARNING - empty tokens allowed
Jul 27 11:37:51 OUR.DOMAIN.EXT:muc_lobby_rooms	info	Lobby component loaded lobby.OUR.DOMAIN.EXT
Jul 27 11:37:51 OUR.DOMAIN.EXT:muc_size	warn	WARNING - empty tokens allowed
Jul 27 11:37:51 portmanager	info	Activated service 'http' on [*]:5280, [::]:5280
Jul 27 11:37:51 portmanager	error	Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281
Jul 27 11:37:51 portmanager	error	Error binding encrypted port for https: No certificate present in SSL/TLS configuration for https port 5281
Jul 27 11:37:51 portmanager	info	Activated service 'https' on no ports
Jul 27 11:37:51 speakerstats.OUR.DOMAIN.EXT:speakerstats_component	info	Hook to muc events on conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 conferenceduration.OUR.DOMAIN.EXT:conference_duration_component	info	Hook to muc events on conference.OUR.DOMAIN.EXT
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:token_moderation	info	Loaded token moderation plugin
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host auth.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host internal.auth.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host conferenceduration.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host focus.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host lobby.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host speakerstats.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host localhost!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host conference.OUR.DOMAIN.EXT!
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:token_verification	warn	WARNING - empty tokens allowed
Jul 27 11:37:51 conference.OUR.DOMAIN.EXT:muc_domain_mapper	info	Loading mod_muc_domain_mapper for host recorder.OUR.DOMAIN.EXT!
Jul 27 11:37:53 c2s558001255820	info	Client connected
Jul 27 11:37:53 c2s558001255820	info	Stream encrypted (TLSv1.3 with TLS_AES_256_GCM_SHA384)
Jul 27 11:37:53 c2s558001255820	info	Authenticated as jvb@auth.OUR.DOMAIN.EXT

log.0.txt (jibri)

2021-07-27 11:23:05.454 INFO: [1] org.jitsi.jibri.Main.log() Jibri run with args [--config, /etc/jitsi/jibri/config.json]
2021-07-27 11:23:05.541 INFO: [1] org.jitsi.jibri.Main.log() Checking legacy config file /etc/jitsi/jibri/config.json
2021-07-27 11:23:05.541 INFO: [1] org.jitsi.jibri.Main.log() Legacy config file /etc/jitsi/jibri/config.json doesn't exist
2021-07-27 11:23:05.905 INFO: [1] org.jitsi.jibri.Main.log() Jibri starting up with id
2021-07-27 11:23:06.365 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() got jwtConfig: {}

2021-07-27 11:23:06.365 INFO: [1] org.jitsi.jibri.webhooks.v1.JwtInfo.log() Unable to create JwtInfo: com.typesafe.config.ConfigException$Missing: /etc/jitsi/jibri/jibri.conf: 101: No configuration setting found for key 'signing-key-path'
2021-07-27 11:23:06.571 INFO: [1] org.jitsi.jibri.Main.log() Using port 3333 for internal HTTP API
2021-07-27 11:23:06.586 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:23:06.831 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Jibri reports its status is now JibriStatus(busyStatus=IDLE, health=OverallHealth(healthStatus=HEALTHY, details={})), publishing presence to connections
2021-07-27 11:23:06.838 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() Connecting to xmpp environment on OUR.DOMAIN.EXT with config XmppEnvironmentConfig(name=OUR.DOMAIN.EXT, xmppServerHosts=[OUR.DOMAIN.EXT], xmppDomain=OUR.DOMAIN.EXT, baseUrl=null, controlLogin=XmppCredentials(domain=auth.OUR.DOMAIN.EXT, port=null, username=jibri, password=JIBRI_PASSWORD), controlMuc=XmppMuc(domain=internal.auth.OUR.DOMAIN.EXT, roomName=JibriBrewery, nickname=Video recorder), sipControlMuc=null, callLogin=XmppCredentials(domain=recorder.OUR.DOMAIN.EXT, port=null, username=recorder, password=RECORDER_PASSWORD), stripFromRoomDomain=conference., usageTimeoutMins=0, trustAllXmppCerts=true)
2021-07-27 11:23:06.839 INFO: [1] org.jitsi.jibri.api.xmpp.XmppApi.log() The trustAllXmppCerts config is enabled for this domain, all XMPP server provided certificates will be accepted
2021-07-27 11:23:06.861 INFO: [1] org.jitsi.jibri.Main.log() Using port 2222 for HTTP API
2021-07-27 11:23:06.868 WARNING: [25] org.jitsi.xmpp.mucclient.MucClient.log() Disabling certificate verification!
2021-07-27 11:23:07.087 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Connected.
2021-07-27 11:23:07.087 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Logging in.
2021-07-27 11:23:07.186 INFO: [25] org.jitsi.xmpp.mucclient.MucClient.log() Joined MUC: jibribrewery@internal.auth.OUR.DOMAIN.EXT
2021-07-27 11:24:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:25:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:26:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:27:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:28:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:29:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:30:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:31:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status
2021-07-27 11:32:06.566 FINE: [16] org.jitsi.jibri.webhooks.v1.WebhookClient.log() Updating 0 subscribers of status

OUR.DOMAIN.EXT.cfg.lua (Prosody config)

unlimited_jids = { "focus@auth.OUR.DOMAIN.EXT", "jvb@auth.OUR.DOMAIN.EXT" }
plugin_paths = { "/usr/share/jitsi-meet/prosody-plugins/" }

-- domain mapper options, must at least have domain base set to use the mapper
muc_mapper_domain_base = "OUR.DOMAIN.EXT";

admins = { "focus@auth.OUR.DOMAIN.EXT" };

external_service_secret = "OUR_SECRET";
external_services = {
     { type = "stun", host = "OUR.DOMAIN.EXT", port = 3478 },
     { type = "turn", host = "OUR.DOMAIN.EXT", port = 3478, transport = "udp", secret = true, ttl = 86400, algorithm = "turn" },
     { type = "turns", host = "OUR.DOMAIN.EXT", port = 5349, transport = "tcp", secret = true, ttl = 86400, algorithm = "turn" }
};

cross_domain_bosh = false;
consider_bosh_secure = true;
-- https_ports = { }; -- Remove this line to prevent listening on port 5284

-- https://ssl-config.mozilla.org/#server=haproxy&version=2.1&config=intermediate&openssl=1.1.0g&guideline=5.4
ssl = {
    protocol = "tlsv1_2+";
    ciphers = "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384"
}

VirtualHost "OUR.DOMAIN.EXT"
    -- enabled = false -- Remove this line to enable this host
    authentication = "token"
    -- Properties below are modified by jitsi-meet-tokens package config
    -- and authentication above is switched to "token"
    app_id="OUR_APP_ID"
    app_secret="OUR_APP_SECRET"
    allow_empty_token = true
    -- Assign this host a certificate for TLS, otherwise it would use the one
    -- set in the global section (if any).
    -- Note that old-style SSL on port 5223 only supports one certificate, and will always
    -- use the global one.
    ssl = {
        key = "/etc/prosody/certs/OUR.DOMAIN.EXT.key";
        certificate = "/etc/prosody/certs/OUR.DOMAIN.EXT.crt";
    }
    speakerstats_component = "speakerstats.OUR.DOMAIN.EXT"
    conference_duration_component = "conferenceduration.OUR.DOMAIN.EXT"
    -- we need bosh
    modules_enabled = {
        "bosh";
        "pubsub";
        "ping"; -- Enable mod_ping
        "speakerstats";
        "external_services";
        "conference_duration";
        "muc_lobby_rooms";
        "muc_size";
    }
    c2s_require_encryption = false
    lobby_muc = "lobby.OUR.DOMAIN.EXT"
    main_muc = "conference.OUR.DOMAIN.EXT"
    muc_mapper_domain_prefix = "conference"
    -- muc_lobby_whitelist = { "recorder.OUR.DOMAIN.EXT" } -- Here we can whitelist jibri to enter lobby enabled rooms

Component "conference.OUR.DOMAIN.EXT" "muc"
    restrict_room_creation = true
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "token_verification";
        "token_moderation";
    }
    admins = { "focus@auth.OUR.DOMAIN.EXT" }
    muc_room_locking = false
    muc_room_default_public_jids = true

-- internal muc component
Component "internal.auth.OUR.DOMAIN.EXT" "muc"
    storage = "memory"
    modules_enabled = {
        "ping";
    }
    admins = { "focus@auth.OUR.DOMAIN.EXT", "jvb@auth.OUR.DOMAIN.EXT" }
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "auth.OUR.DOMAIN.EXT"
    modules_enabled = { "limits_exception"; }
    ssl = {
        key = "/etc/prosody/certs/auth.OUR.DOMAIN.EXT.key";
        certificate = "/etc/prosody/certs/auth.OUR.DOMAIN.EXT.crt";
    }
    authentication = "internal_hashed"

-- Proxy to jicofo's user JID, so that it doesn't have to register as a component.
Component "focus.OUR.DOMAIN.EXT" "client_proxy"
    target_address = "focus@auth.OUR.DOMAIN.EXT"

Component "speakerstats.OUR.DOMAIN.EXT" "speakerstats_component"
    muc_component = "conference.OUR.DOMAIN.EXT"

Component "conferenceduration.OUR.DOMAIN.EXT" "conference_duration_component"
    muc_component = "conference.OUR.DOMAIN.EXT"

Component "lobby.OUR.DOMAIN.EXT" "muc"
    storage = "memory"
    restrict_room_creation = true
    muc_room_locking = false
    muc_room_default_public_jids = true

VirtualHost "recorder.OUR.DOMAIN.EXT"
    modules_enabled = {
        "ping";
    }
    authentication = "internal_plain"

jibri.conf

jibri {
  id = ""
  single-use-mode = false
  api {
    http {
      external-api-port = 2222
      internal-api-port = 3333
    }
    xmpp {
      environments = [
        {
            name = "OUR.DOMAIN.EXT"
            xmpp-server-hosts = [ "OUR.DOMAIN.EXT" ]
            xmpp-domain = "OUR.DOMAIN.EXT"

            control-muc {
                domain = "internal.auth.OUR.DOMAIN.EXT"
                room-name = "JibriBrewery"
                nickname = "Video recorder"
            }

            control-login {
                domain = "auth.OUR.DOMAIN.EXT"
                username = "jibri"
                password = "JIBRI_PASSWORD"
            }

            call-login {
                domain = "recorder.OUR.DOMAIN.EXT"
                username = "recorder"
                password = "RECORDER_PASSWORD"
            }

            strip-from-room-domain = "conference."

            usage-timeout = 0

            trust-all-xmpp-certs = true
        }
      ]
    }
  }
  recording {
    recordings-directory = "/recordings"
    finalize-script = "/scripts/finalize_recording.sh"
  }
  streaming {
    rtmp-allow-list = [
      ".*"
    ]
  }
  sip {
    outbound-prefix = "out_"
  }
  ffmpeg {
    resolution = "1920x1080"
    audio-source = "alsa"
    audio-device = "plug:bsnoop"
  }
  chrome {
    flags = [
      "--use-fake-ui-for-media-stream",
      "--start-maximized",
      "--kiosk",
      "--enabled",
      "--disable-infobars",
      "--autoplay-policy=no-user-gesture-required"
    ]
  }
  stats {
    enable-stats-d = true
  }
  webhook {
    subscribers = []
  }
  jwt-info {
    # signing-key-path = "/path/to/key.pem"

    # kid = "key-id"

    # issuer = "issuer"

    # audience = "audience"

    # ttl = 1 hour
  }
  call-status-checks {
    no-media-timeout = 30 seconds

    all-muted-timeout = 10 minutes

    default-call-empty-timeout = 30 seconds
  }
}

Please check in Jicofo logs whether jicofo is able to detect jibri or not. If not then restart jibri once and check jicofo logs again.

I restarted Jibri and Prosody logs show:

Jul 27 12:03:04 c2s558000ef6f20	info	Client connected
Jul 27 12:03:04 c2s558000ef6f20	info	Stream encrypted (TLSv1.2 with ECDHE-RSA-AES128-GCM-SHA256)
Jul 27 12:03:04 c2s558000ef6f20	info	Authenticated as jibri@auth.OUR.DOMAIN.EXT

Jicofo log shows:

Jicofo 2021-07-27 11:38:04.661 INFO: [238] [type=bridge brewery=jvbbrewery] BaseBrewery.start#172: Joined the room.
Jicofo 2021-07-27 11:38:04.661 INFO: [238] [xmpp_connection=client] XmppProviderImpl.fireRegistrationStateChanged#328: Set replyTimeout=PT15S
Jicofo 2021-07-27 11:38:04.661 INFO: [28] [type=bridge brewery=jvbbrewery] BaseBrewery.addInstance#338: Added brewery instance: jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef
Jicofo 2021-07-27 11:38:04.663 INFO: [28] BridgeSelector.addJvbAddress#118: Added new videobridge: Bridge[jid=jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef, relayId=null, region=null, stress=0.00]
Jicofo 2021-07-27 11:38:04.663 INFO: [28] JvbDoctor.addBridge#140: Scheduled health-check task for: jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef

There’s no entries in the jicofo log after restarting Jibri (at 12:03), the latest jicofo entries are 11:38.

Below is the snippet from jicofo logs when jicofo detects jibri

Jicofo 2021-07-27 10:13:12.034 INFO: [19] [type=jibri brewery=jibribrewery] BaseBrewery.addInstance#358: Added brewery instance: jibribrewery@internal.auth.mydomain.com/jibri-instance-1
Jicofo 2021-07-27 10:13:12.034 INFO: [14] [type=jibri brewery=jibribrewery] BaseBrewery.start#171: Joined the room.

restart jicofo once and check again and still if Jicofo won’t show anything then something is wrong.

Restarted jicofo:

Jicofo 2021-07-27 12:23:12.543 INFO: [1] Main.main#80: Stopping services.
Jicofo 2021-07-27 12:23:12.549 INFO: [1] org.eclipse.jetty.server.AbstractConnector.doStop: Stopped ServerConnector@1adb7478{HTTP/1.1, (http/1.1)}{0.0.0.0:8888}
Jicofo 2021-07-27 12:23:12.910 INFO: [1] Main.main#49: Starting Jicofo.
Jicofo 2021-07-27 12:23:13.414 INFO: [1] JitsiConfig.<clinit>#47: Initialized newConfig: merge of /etc/jitsi/jicofo/jicofo.conf: 1,system properties,reference.conf @ jar:file:/usr/share/jicofo/jicofo.jar!/reference.conf: 1
Jicofo 2021-07-27 12:23:13.424 INFO: [1] ReadOnlyConfigurationService.reloadConfiguration#51: loading config file at path /etc/jitsi/jicofo/sip-communicator.properties
Jicofo 2021-07-27 12:23:13.426 INFO: [1] JitsiConfig.<clinit>#68: Initialized legacyConfig: sip communicator props (no description provided)
Jicofo 2021-07-27 12:23:13.426 INFO: [1] JitsiConfig$Companion.reloadNewConfig#94: Reloading the Typesafe config source (previously reloaded 0 times).
Jicofo 2021-07-27 12:23:14.254 WARNING: [1] FocusManager.start#122: Jicofo ID is not set correctly set (value=0). Configure a valid value [1-65535] by setting org.jitsi.jicofo.SHORT_ID in sip-communicator.properties or jicofo.octo.id in jicofo.conf. Future versions will require this for Octo.
Jicofo 2021-07-27 12:23:14.292 INFO: [1] JicofoServices.createAuthenticationAuthority#203: Authentication service disabled.
Jicofo 2021-07-27 12:23:14.410 INFO: [1] XmppServices.<init>#50: No dedicated Service XMPP connection configured, re-using the client XMPP connection.
Jicofo 2021-07-27 12:23:14.418 INFO: [1] XmppServices.<init>#57: No Jigasi detector configured.
Jicofo 2021-07-27 12:23:14.470 INFO: [1] BridgeSelector.<init>#79: Using org.jitsi.jicofo.bridge.SingleBridgeSelectionStrategy
Jicofo 2021-07-27 12:23:14.498 INFO: [1] [type=bridge brewery=jvbbrewery] BaseBrewery.<init>#101: Initialized with JID=jvbbrewery@internal.auth.OUR.DOMAIN.EXT
Jicofo 2021-07-27 12:23:14.510 INFO: [1] JicofoServices.<init>#126: No Jibri detector configured.
Jicofo 2021-07-27 12:23:14.511 INFO: [1] JicofoServices.<init>#132: No SIP Jibri detector configured.
Jicofo 2021-07-27 12:23:14.536 INFO: [1] JicofoServices.<init>#148: Starting HTTP server with config: host=null, port=8888, tlsPort=8843, isTls=false, keyStorePath=null, sendServerVersion=true.
Jicofo 2021-07-27 12:23:14.803 INFO: [1] org.eclipse.jetty.util.log.Log.initialized: Logging initialized @2195ms to org.eclipse.jetty.util.log.Slf4jLog
Jicofo 2021-07-27 12:23:15.050 INFO: [1] org.eclipse.jetty.server.Server.doStart: jetty-9.4.40.v20210413; built: 2021-04-13T20:42:42.668Z; git: b881a572662e1943a14ae12e7e1207989f218b74; jvm 16.0.1+9-Ubuntu-120.04
Jicofo 2021-07-27 12:23:15.480 INFO: [16] [xmpp_connection=client] XmppProviderImpl.doConnect#203: Connected, JID= null
Jicofo 2021-07-27 12:23:15.738 INFO: [16] [type=bridge brewery=jvbbrewery] BaseBrewery.start#172: Joined the room.
Jicofo 2021-07-27 12:23:15.739 INFO: [16] [xmpp_connection=client] XmppProviderImpl.fireRegistrationStateChanged#328: Set replyTimeout=PT15S
Jicofo 2021-07-27 12:23:15.741 INFO: [28] [type=bridge brewery=jvbbrewery] BaseBrewery.addInstance#338: Added brewery instance: jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef
Jicofo 2021-07-27 12:23:15.759 INFO: [28] BridgeSelector.addJvbAddress#118: Added new videobridge: Bridge[jid=jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef, relayId=null, region=null, stress=0.00]
Jicofo 2021-07-27 12:23:15.770 INFO: [28] JvbDoctor.addBridge#140: Scheduled health-check task for: jvbbrewery@internal.auth.OUR.DOMAIN.EXT/21aa03af-3484-434f-8c9d-ed304bb7e0ef
Jicofo 2021-07-27 12:23:16.073 WARNING: [1] org.glassfish.jersey.server.wadl.WadlFeature.configure: JAXBContext implementation could not be found. WADL feature is disabled.
Jicofo 2021-07-27 12:23:16.307 WARNING: [1] org.glassfish.jersey.internal.inject.Providers.checkProviderRuntime: A provider org.jitsi.rest.Version registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime. Due to constraint configuration problems the provider org.jitsi.rest.Version will be ignored.
Jicofo 2021-07-27 12:23:16.797 INFO: [1] org.eclipse.jetty.server.handler.ContextHandler.doStart: Started o.e.j.s.ServletContextHandler@2f0bfe17{/,null,AVAILABLE}
Jicofo 2021-07-27 12:23:16.827 INFO: [1] org.eclipse.jetty.server.AbstractConnector.doStart: Started ServerConnector@1adb7478{HTTP/1.1, (http/1.1)}{0.0.0.0:8888}
Jicofo 2021-07-27 12:23:16.832 INFO: [1] org.eclipse.jetty.server.Server.doStart: Started @4246ms

It seems that jicofo is unable to detect jibri.

Please check whether jicofo.conf contains below config. If you are using sip-communicator file then check it there.

jibri {
    brewery-jid = "jibribrewery@internal.auth.mydomain.com"
    pending-timeout = "90"
}

my /etc/jitsi/jicofo/sip-communicator.properties contains the following:

org.jitsi.jicofo.BRIDGE_MUC=JvbBrewery@internal.auth.OUR.DOMAIN.EXT
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90
org.jitsi.jicofo.DISABLE_AUTO_OWNER=true

Add below lines in sip-communicator and restart jicofo.

org.jitsi.jicofo.jibri.BREWERY=JibriBrewery@internal.auth.mydomain.com
org.jitsi.jicofo.jibri.PENDING_TIMEOUT=90

change mydomain.com with valid domain

Ok, progress! I now get a female voice telling me the recording is started. But my camera stops and I see the following:

please check the console logs once.

Which console logs?

When I stop the recording the “Fellow Jitser” is gone, and I can see myself again.

ohk. So jibri joined the meeting as a user and then start recording. so we need to hide the jibri user first by adding the below config in config.js file.

liveStreamingEnabled: true,	  // <---- optional if you want to enable live streaming too
hiddenDomain: 'recorder.YOUR_DOMAIN'  //<--- hide jibri user

Once you added above config then jibri user won’t show in the meeting and you will see your screen.

The hiddenDomain does not seem to work for me, but the recording is working at least! (The grey screen went away as soon as there was >1 person in the room)

cc: @emrah @Freddie for more clear understanding.
Do we have to restart nginx if we made any changes to config.js?

No, you don’t. A browser refresh is sufficient to reflect config.js changes.

@Freddie @metadata @jployals can u kindly look into the logs of jicofo and jibri.
I am using 2 separate instances for jitsi and jibri with JWT enable. Jibri is not working.PLease help
jibri-logs.txt (2.7 KB)
jicofo-logs.txt (3.7 KB)

What you mean by “not working”?
Did you check according to the following topic?

I have checked the steps and my Recording fails immediately
Here is my jibri.conf file.
jibri.conf.txt (2.0 KB)
jibri-logs.txt (2.7 KB)
jicofo-logs.txt (3.7 KB)

Do you have /usr/local/eb/recordings folder in your Jibri instance?

ls -alh /usr/local/eb