How does Jibri connected to jitsi from external/separate server

Thanks a lot for this jitsi community, a great solution for whom want to have video conference with secured way.

How does this jibri started to connect once the stream/recording is started. Say I have jitsi/jibri on the same server and here the streaming looks like connected via the hidden domains auth.jitsi.example.com and recorder.jitsi.example.com. But if I have jibri on separate server these domains do not resolve in actual, yet how it is possible to connect the jibri instance and do the recordings/streaming.

VirtualHost "recorder.jitsi.example.com"
modules_enabled = {
"ping";
}
authentication = "internal_plain"

I might be asking silly question, but this simple concept I’m not able to understand.

If jitsi.example.com is resolvable, it’s OK.
TCP/5222 should be accessable from the Jibri server.

I’m very sorry. Yet, bit confused.

Say, Server A Jitsi hosted with public IP : 101.xx.xx.xx and Server B JIbri is hosted whose public IP: 102.xx.xx.xx and in jibri server port tcp/5222 is opened.

During the conference call when we hit the stream/record from server A, how does jitsi figure out the server B is configured to achieve the same.

Not Jibri… TCP/5222 is opened on the Jitsi side.

102.x.x.x announces its presence via logging into auth and recorder as defined ion jibri in /jibri/config.json with user data defined in Prosodyctl on Jitsi meet server. As long as 102.x.x.x can resolve the Jitsi server and connect via port 5222, it will work. Each jibri instance needs to be defined by its own nickname, and unique jibriX and recorderX with passwords to match on Jitsi Prosody and the jibri/config.json. I was confused by all of this when I set up my own instances.
Norbert

1 Like

I’m trying to achieve the same, however, when I check if there is any listener for 5222 in Jitsi server, there is actually none.
When I check Jibri logs with cat /var/log/jitsi/jibri/log.0.txt

2020-11-10 21:37:28.017 WARNING: [27] org.jitsi.xmpp.mucclient.MucClient.log() [MucClient id=my.jitsi.server.com hostname=my.jitsi.server.com] error connecting

org.jivesoftware.smack.SmackException$ConnectionException: The following addresses failed: 'my.jitsi.server.com:5222' failed because: my.jitsi.server.com/XXX.200 exception: java.net.ConnectException: Connection refused (Connection refused)

Here is the Jitsi server listeners netstat -ltnp | grep -w 'LISTEN'

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      653/sshd            
tcp6       0      0 :::22                   :::*                    LISTEN      653/sshd            
tcp6       0      0 :::8001                 :::*                    LISTEN      2507/java           
tcp6       0      0 :::8002                 :::*                    LISTEN      2507/java 

Are you setting in online server or local system. my.jitsi.server.com it doesn’t resolve anything, so I assume you trying in local, in that case you have to define the domain in hosts file with local IP.

Hello Mathan,
my.jitsi.server.com is just a placeholder for the actual domain name.
I have two servers: XXX.200 and XXX.201
Both of them have DNS settings done, and can ping each other, and can resolve the hostnames.

have you been able to solve it?

Yes, i got the concept. What problem are you facing?

i have jitsi working in one server and jibri on other and i cant record always i get error

What error are you getting?

error at start recording

Share your jibri.conf and your jibri log

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 = [
{
name = “jibri”
xmpp-server-hosts = [“192.168.0.28”]
xmpp-domain = “parlem.mancohortasud.es”

            control-muc {
                domain = "internal.parlem.mancohortasud.es"
                room-name = "JibriBrewery"
                nickname = "jibri-nickname"
            }                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         control-login {                                                                                                                                                                                                                                  domain = "auth.parlem.mancohortasud.es"
                username = "jibri"
                password = "jibripass"
            }

            call-login {
                domain = "recorder.parlem.mancohortasud.es"
                username = "recorder"
                password = "recorderpass"
            }

            strip-from-room-domain = "conference."
            usage-timeout = 0
            trust-all-xmpp-certs = true

        } ]
}

}
recording {
recordings-directory = “/srv/recordings”
# TODO: make this an optional param and remove the default
finalize-script = “/etc/jitsi/jibri/1.sh”
}
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”,
“–ignore-certificate-errors”
] } 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 } }

what logs do you want??

Make sure those 2 match - use the domain name.

This should be:

control-muc {
                domain = "internal.auth.parlem.mancohortasud.es"

Jibri log - log.0.txt

thanks now is working

What are your server specs (CPU, RAM)?