Jibri not recording / No Error logs

I’m have deployed jitsi with Docker now I want to integrate jibri and enable recording feature

now jibri recording is not working and no errors printed on logs : this is what printed on the web console

logs and docker-compose: jitsi - Google Drive

Thanks in advance

Welcome to the forum.

Share your jibri.conf.

Thank you for replying here is the config file:
jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = “”
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of ‘true’
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
{
// A user-friendly name for this environment
name = “env name”

        // A list of XMPP server hosts to which we'll connect
        xmpp-server-hosts = [ "meet.jitsi" ]

        // The base XMPP domain
        xmpp-domain = "meet.jitsi"

        // The MUC we'll join to announce our presence for
        // recording and streaming services
        control-muc {
            domain = "internal-muc.meet.jitsi"
            room-name = "room-name"
            nickname = "nickname"
        }

        // The login information for the control MUC
        control-login {
            domain = "recorder.techleadintl.com"
            username = "jibri"
            password = "78d364d2973aed40128547a699257602"
        }

        // How long Jibri sessions will be allowed to last before
        // they are stopped.  A value of 0 allows them to go on
        // indefinitely
        usage-timeout = 1 hour

        // Whether or not we'll automatically trust any cert on
        // this XMPP domain
        trust-all-xmpp-certs = true
    }
]
}

}
recording {
recordings-directory = “/tmp/recordings”
# TODO: make this an optional param and remove the default
finalize-script = “/path/to/finalize”
}
streaming {
// A list of regex patterns for allowed RTMP URLs. The RTMP URL used
// when starting a stream must match at least one of the patterns in
// this list.
rtmp-allow-list = [
// By default, all services are allowed
“.*”
]
}
chrome {
// The flags which will be passed to chromium when launching
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 {
// A list of subscribers interested in receiving webhook events
subscribers =
}
jwt-info {
// The path to a .pem file which will be used to sign JWT tokens used in webhook
// requests. If not set, no JWT will be added to webhook requests.
# signing-key-path = “/path/to/key.pem”

// The kid to use as part of the JWT
# kid = "key-id"

// The issuer of the JWT
# issuer = "issuer"

// The audience of the JWT
# audience = "audience"

// The TTL of each generated JWT.  Can't be less than 10 minutes.
# ttl = 1 hour

}
call-status-checks {
// If all clients have their audio and video muted and if Jibri does not
// detect any data stream (audio or video) comming in, it will stop
// recording after NO_MEDIA_TIMEOUT expires.
no-media-timeout = 30 seconds

// If all clients have their audio and video muted, Jibri consideres this
// as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
all-muted-timeout = 10 minutes

// When detecting if a call is empty, Jibri takes into consideration for how
// long the call has been empty already. If it has been empty for more than
// DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
default-call-empty-timeout = 30 seconds

}
}

Okay, there are quite a number of errors in your jibri.conf. You’re missing lots of information in the xmpp section and the ones that you do have are wrong. Go through this tutorial, it will help you resolve your problems - TUTORIAL: Jibri Overview, Troubleshooting Tips & Tricks - Solve your Jibri Problems, Quickly!

Pay particular attention to the Jibri.conf section.

thanks Freddie :fire:

after checking the tutorial you shared I added following config:

control-login {
domain = “recorder.meet.jitsi”
username = “jibri”
password = “78d364d2973aed40128547a699257602”
}

call-login {
                    domain = "recorder.meet.jitsi"
                    username = "recorder"
                    password = "78d364d2973aed40128547a699257602"
            }

but still recording feature is not working, Am I missing something?

Hey, you seems to indicate different username ‘jibri’ becomes ‘recorder’

it should be same? okay let me try that thanks @othomation

shouldn’t that suppose to print errors?, I mean when user credentials are wrong, but nothing on logs yet, anyway I’m going to try this

sadly still no errors on logs and recording is not working

Your jibri.conf is still wrong. I gave you a reference, but it seems like you just glossed over it. You can’t rush through these things; any misconfiguration and it just won’t work.

@Freddie thanks for replying, no actually I had no jibri config , I used same reference (before you refer that to me) to create the current jibri.config file, to be frank I do not know which part is wrong

and it is harder to find the error since no errors on the logs

thanks @Prashanth I’m going to try this

Btw logs not being populated, is not related to jibri.conf.

@Prashanth thanks for sharing the config these are my jibri container environment variables

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=a5168e972b33
JIBRI_XMPP_PASSWORD=d7f20f3f8205fe8e081368b25402dc8a
XMPP_SERVER=xmpp.meet.jitsi
JIBRI_XMPP_USER=jibri
JIBRI_LOGS_DIR=/config/logs
XMPP_DOMAIN=meet.jitsi
XMPP_RECORDER_DOMAIN=recorder.meet.jitsi
JIBRI_BREWERY_MUC=jibribrewery
DISPLAY=:0
JIBRI_RECORDING_DIR=/config/recordings
JIBRI_STRIP_DOMAIN_JID=muc
XMPP_INTERNAL_MUC_DOMAIN=internal-muc.meet.jitsi
TZ=UTC
JIBRI_RECORDER_USER=recorder
XMPP_AUTH_DOMAIN=auth.meet.jitsi
JIBRI_RECORDER_PASSWORD=78d364d2973aed40128547a699257602
S6_BEHAVIOUR_IF_STAGE2_FAILS=2
HOME=/root

my question is domains like ‘xmpp.meet.jitsi’ are resolved in the local docker network but they are not going to resolve through the internet as they are not FQDN, are you suggesting to create new DNS records for each and update domains? [something like “auth.workingsubdomain.com” instead of “auth.meet.jitsi”](solution is hosted on AWS)

I have already tried with these existing domain names, but did not worked for me

  1. Your xmpp server seems to be incorrect. Make it same as xmpp domain.
  2. No need of creating new dns.

Not familiar with jitsi docker. You have to wait for someone who is.

You have shared jibri.conf before. So now is your jibri.conf file, similar to what I shared?

thanks @Prashanth I will update xmpp accordingly, yes I updated jibri values

jibri {
// A unique identifier for this Jibri
// TODO: eventually this will be required with no default
id = “jibri-wwBrhayIiO”
// Whether or not Jibri should return to idle state after handling
// (successfully or unsuccessfully) a request. A value of ‘true’
// here means that a Jibri will NOT return back to the IDLE state
// and will need to be restarted in order to be used again.
single-use-mode = false
api {
http {
external-api-port = 2222
internal-api-port = 3333
}
xmpp {
// See example_xmpp_envs.conf for an example of what is expected here
environments = [
{
// A user-friendly name for this environment
name = “xmpp environment”

        // A list of XMPP server hosts to which we'll connect
        xmpp-server-hosts = [ "meet.jitsi" ]

        // The base XMPP domain
        xmpp-domain = "meet.jitsi"

        // The MUC we'll join to announce our presence for
        // recording and streaming services
        control-muc {
            domain = "internal.auth.meet.jitsi"
            room-name = "JibriBrewery"
            nickname = "jibri"
        }

        // The login information for the control MUC
        control-login {
            domain = "auth.meet.jitsi"
            username = "jibri"
            password = "d7f20f3f8205fe8e081368b25402dc8a"
        }

        // An (optional) MUC configuration where we'll
        // join to announce SIP gateway services
        // sip-control-muc {
           // domain = domain
           // room-name = room-name
           // nickname = nickname
        // }

        // The login information the selenium web client will use recorder.meet.jitsi
        call-login {
            domain = "meet.jitsi"
            username = "recorder"
            password = "78d364d2973aed40128547a699257602"
        }

        // The value we'll strip from the room JID domain to derive
        // the call URL
        strip-from-room-domain = "conference."

        // How long Jibri sessions will be allowed to last before
        // they are stopped.  A value of 0 allows them to go on
        // indefinitely
        usage-timeout = "1 hour"

        // Whether or not we'll automatically trust any cert on
        // this XMPP domain
        trust-all-xmpp-certs = true
    }
]
}

}
recording {
recordings-directory = “/config/recordings”
# TODO: make this an optional param and remove the default
finalize-script = “”
}
streaming {
// A list of regex patterns for allowed RTMP URLs. The RTMP URL used
// when starting a stream must match at least one of the patterns in
// this list.
rtmp-allow-list = [
// By default, all services are allowed
“.*”
]
}
chrome {
// The flags which will be passed to chromium when launching
flags = [
“–use-fake-ui-for-media-stream”,
“–ignore-certificate-errors”,
“–start-maximized”,
“–kiosk”,
“–enabled”,
“–disable-infobars”,
“–autoplay-policy=no-user-gesture-required”
]
}
stats {
enable-stats-d = true
}
webhook {
// A list of subscribers interested in receiving webhook events
subscribers =
}
jwt-info {
// The path to a .pem file which will be used to sign JWT tokens used in webhook
// requests. If not set, no JWT will be added to webhook requests.
# signing-key-path = “/path/to/key.pem”

// The kid to use as part of the JWT
# kid = "key-id"

// The issuer of the JWT
# issuer = "issuer"

// The audience of the JWT
# audience = "audience"

// The TTL of each generated JWT.  Can't be less than 10 minutes.
# ttl = 1 hour

}
call-status-checks {
// If all clients have their audio and video muted and if Jibri does not
// detect any data stream (audio or video) comming in, it will stop
// recording after NO_MEDIA_TIMEOUT expires.
no-media-timeout = 30 seconds

// If all clients have their audio and video muted, Jibri consideres this
// as an empty call and stops the recording after ALL_MUTED_TIMEOUT expires.
all-muted-timeout = 10 minutes

// When detecting if a call is empty, Jibri takes into consideration for how
// long the call has been empty already. If it has been empty for more than
// DEFAULT_CALL_EMPTY_TIMEOUT, it will consider it empty and stop the recording.
default-call-empty-timeout = 30 seconds

}
}