Install jibri Active: Failed

I have been trying to install the jibri to record calls using the following process: https://github.com/jitsi/jibri, when checking the $ sudo service jibri status, it generates the following error:

jibri.service - Jibri Process
Loaded: loaded (/etc/systemd/system/jibri.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Fri 2020-11-06 04:21:32 UTC; 1min 54s ago
Process: 3333 ExecStart=/opt/jitsi/jibri/launch.sh (code=exited, status=1/FAILURE)
Main PID: 3333 (code=exited, status=1/FAILURE)

Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: jibri.service: Service hold-off time over, scheduling restart.
Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: jibri.service: Scheduled restart job, restart counter is at 5.
Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: Stopped Jibri Process.
Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: jibri.service: Start request repeated too quickly.
Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: jibri.service: Failed with result ‘exit-code’.
Nov 06 04:21:32 ip-172-31-42-168 systemd[1]: Failed to start Jibri Process.

I don’t know what else to do, I’m using an AWS t3a.2xlarge instance on Ubuntu 18.04.

run launch.sh and it show me this message:

Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.jitsi.jibri.config.JibriConfig(although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('recording_directory') at [Source: (File); line: 1, column: 1] at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342) at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1031) at com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:371) at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:323) at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1366) at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:171) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161) at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2909) at org.jitsi.jibri.config.JibriConfigKt.loadConfigFromFile(JibriConfig.kt:180) at org.jitsi.jibri.MainKt.setupLegacyConfig(Main.kt:207) at org.jitsi.jibri.MainKt.handleCommandLineArgs(Main.kt:193) at org.jitsi.jibri.MainKt.main(Main.kt:52)

Did you populate jibri.conf with the appropriate values?

my jibri.conf file is empty

Hi @Camilo_Pimentel
Here is a sample Jibri Configuration

jibri {
    id = ""
    single-use-mode = false

    recording {
        recordings-directory = "/srv/recordings"
        finalize-script = "/usr/local/bin/finalize_recording.sh"
    }

    chrome {
        flags = [
            "--use-fake-ui-for-media-stream",
            "--start-maximized",
            "--kiosk",
            "--enabled",
            "--disable-infobars",
            "--autoplay-policy=no-user-gesture-required"
        ]
    }

    api {
        http {
            internal-api-port = 8001
            external-api-port = 8002
        }

        xmpp {
            environments = [{
                name = "eb-environment"
                xmpp-server-hosts = ["_DOMAIN_"]
                xmpp-domain = "_DOMAIN_"

                control-muc {
                    domain = "internal.auth._DOMAIN_"
                    room-name = "JibriBrewery"
                    nickname = "jibri-nickname"
                }

                control-login {
                    domain = "auth._DOMAIN_"
                    username = "jibri"
                    password = "_PASSWORD_"
                }

                call-login {
                    domain = "recorder._DOMAIN_"
                    username = "recorder"
                    password = "_PASSWORD_"
                }

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

    stats {
        enable-stats-d = true
    }

    call-status-checks {
        no-media-timeout = 30 seconds
        all-muted-timeout = 10 minutes
        default-call-empty-timeout = 30 seconds
    }
}
``
1 Like

ok, I will make the change to the jibri.conf, these changes that you suggest is to try to change the DOMAIN for my domain, example: mydomain.com

in the ports, should one open? I have configured certain ports that advise when installing jitsi in an aws instance.

The ports here are fine, no need to change them.

Yes, you need to change every instance of “DOMAIN” to your own specific subdomain for Jitsi (e.g. meet.example.com). You ALSO need to make sure you’ve created those two users (room-name [in this case “JibriBrewery” and username [in this case “jibri”]) with their corresponding passwords in prosody. You should have created this earlier while configuring Jibri, so just make sure you have the right names and usernames.

1 Like

I have skipped the step of creating these two users, that must be causing the problem, I am going to create them.

When trying to create an account I get the following message:

**************************
A problem occured while reading the config file /etc/prosody/prosody.cfg.lua
Error: /etc/prosody/prosody.cfg.lua:214: attempt to call global 'Commponent' (a nil value)

More help on configuring Prosody can be found at http://prosody.im/doc/configure
Good luck!
**************************

apparently I will have to install everything again

No. Just remove “m

/etc/prosody/prosody.cfg.lua, line 214, Commponent

1 Like

ok, this is my new error running the launch.sh:

Exception in thread "main" com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of `org.jitsi.jibri.config.JibriConfig` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('recording_directory')
 at [Source: (File); line: 1, column: 1]
    at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63)
    at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1342)
    at com.fasterxml.jackson.databind.DeserializationContext.handleMissingInstantiator(DeserializationContext.java:1031)
    at com.fasterxml.jackson.databind.deser.ValueInstantiator._createFromStringFallbacks(ValueInstantiator.java:371)
    at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromString(StdValueInstantiator.java:323)
    at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromString(BeanDeserializerBase.java:1366)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:171)
    at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:161)
    at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
    at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2909)
    at org.jitsi.jibri.config.JibriConfigKt.loadConfigFromFile(JibriConfig.kt:180)
    at org.jitsi.jibri.MainKt.setupLegacyConfig(Main.kt:207)
    at org.jitsi.jibri.MainKt.handleCommandLineArgs(Main.kt:193)
    at org.jitsi.jibri.MainKt.main(Main.kt:52)

in general my mistake was to take as a starting point this guide (https://nerdonthestreet.com/wiki?find=Set+Up+Jibri+for+Jitsi+Recording%3Aslash%3AStreaming) and mix it with (https: // github .com / jitsi / jibri), where I should have guided my parameters from the beginning.

To be honest, I’ve found that when you run into unending errors with every new step, it’s probably just easier to start over. If you choose that route, I strongly recommend this thread - How-to to setup integrated Jitsi and Jibri for dummies, my comprehensive tutorial for the beginner. It’s frankly the most detailed and easiest to follow of the guides I’ve seen. Save yourself the headache and consider it.

1 Like

I agree, I will start from scratch and this time I will write down each step in a personalized guide.

Which version of Jibri are you using? This is complaining about parsing your config.json into a class, but for a while now that config has considered all fields optional (since config.json is now deprecated), so it shouldn’t be complaining.

I couldn’t tell you exactly, I followed a process this year in June.

Ok, I would update to latest stable.

What version do you recommend, and is it compatible with Ubuntu 20.04 vs 18.04?

in this guide provided by AWS advises the following: https://aws.amazon.com/es/blogs/opensource/getting-started-with-jitsi-an-open-source-web-conferencing-solution/

Latest stable is jibri_8.0-61-g99288dc-1_all.deb. I don’t think we officially support anything other than 18.04.

1 Like

Thank you, perform the installation on 04/18, and I will follow the process previously indicated in this conversation, I will be telling you my result in a couple of hours, thank you!