Seite wählen

NETWAYS Blog

Jitsi Enable Breakout Rooms

New feature breakout rooms

Now that the new breakout rooms feature of Jitsi has finally been released, we can integrate it into our own Jitsi. If you would like to know more about the new breakout feature check out our new blogpost!
There are two ways to get the new feature. One way is to build a new Jitsi and use the latest version of Jitsi. However, not everyone wants to build a new Jitsi setup, they just want to enable the feature. The other option is you are already using a Jitsi and now you want to update and enable the new feature.
Today we will look at how to do the update and enable the new feature.

First check which Prosody version you have installed:

dpkg -l | grep prosody

It is important that you have a current Prosody version, preferably 0.11.10.
If your Prosody is still under version 11.7 you should update it.

Update Prosody

Add the repo to your sources.list:

echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list

Get the packages key:

wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -

Update repositories:

sudo apt update
sudo apt install prosody

If there was a conflict with your “cfg” while updating, you would have seen it during the install. You may have a backup file named prosody.cfg.lua.dpkg-old. If you had something special in there, you could move it back in place with:

sudo mv /etc/prosody/prosody.cfg.lua /etc/prosody/prosody.cfg.lua.new && sudo mv /etc/prosody/prosody.cfg.lua.dpkg-old /etc/prosody/prosody.cfg.lua

Make sure the last line in your prosody.cfg.lua is Include „conf.d/*.cfg.lua“

sudo vim /etc/prosody/prosody.cfg.lua
systemctl restart prosody.service jicofo.service

If you get Errors like this: OperationFailedException: Failed to join the room and Exception while trying to start the conference
You have to Edit your prosody config and change storage from “none” to “memory”:

vim /etc/prosody/conf.avail/meet.domain.com.cfg.lua

Replace: storage = „none“ with storage = „memory“

Enable breakout rooms

If you now have a current version we can start with the update, if you have certain configs that are important, you should save them before the update.
When you are ready you can start:

Update repositories:

apt update

Install:

apt upgrade

After that you can check if the latest jicofo version is installed:

dpkg -l | grep jicofo

You should now get these versions displayed:

ii jicofo 1.0-830-1 all Jitsi Meet COnference FOcus

Same for the Jitsi Versions:

dpkg -l | grep jitsi
ii Jitsi-meet                 2.0.6689-1     all WebRTC JavaScript video conferences
ii Jitsi-meet-prosody         1.0.5638-1     all Prosody configuration for Jitsi Meet
ii Jitsi-meet-turnserver      1.0.5638-1     all Configures coturn to be used with Jitsi Meet
ii Jitsi-meet-web             1.0.5638-1     all WebRTC JavaScript video conferences
ii Jitsi-meet-web-config      1.0.5638-1     all Configuration for web serving of Jitsi Meet
ii Jitsi-videobridge2         2.1-592-g1e2879e0-1     all WebRTC compatible Selective Forwarding Unit (SFU)

If all versions match the versions shown above, you can proceed and activate the feature:

vim /etc/prosody/conf.avail/jitmeet.example.com.cfg.lua

Now add „muc_breakout_rooms“; to the modules_enabled section under your main virtual host:

VirtualHost "jitmeet.example.com"
    modules_enabled = {
        "muc_breakout_rooms";
    }

Below the modules_enabled block, insert these two lines:

breakout_rooms_muc = "breakout.jitmeet.example.com"
main_muc = "muc.jitmeet.example.com"

Next add another component block, this one should be after the first component block and should be located above —- internal muc component

Component "breakout.jitmeet.example.com" "muc"
    restrict_room_creation = true
    storage = "memory"
    admins = { "focusUser@auth.jitmeet.example.com" }
    muc_room_locking = false
    muc_room_default_public_jids = true

Example file:

Component "conference.jitmeet.example.com" "muc"
    restrict_room_creation = true
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        "polls";
        --"token_verification";
}
admins = { "focus@auth.jitmeet.example.com" }
muc_room_locking = false
muc_room_default_public_jids = true

Component "breakout.jitmeet.example.com" "muc"
    restrict_room_creation = true
    storage = "memory"
    modules_enabled = {
        "muc_meeting_id";
        "muc_domain_mapper";
        --"token_verification";
        "muc_rate_limit";
}
admins = { "focus@auth.jitmeet.example.com" }
muc_room_locking = false
muc_room_default_public_jids = true

-- internal muc component

Restart the services once again and then you should be able to use the new feature directly

systemctl restart prosody.service jicofo.service

I hope this documentation helped you and you can now enjoy the new breakout room feature!

Joshua Hartmann
Joshua Hartmann
Systems Engineer

Joshua hat im Sommer 2023 seine Ausbildung zum Fachinformatiker für Systemintegration bei den NETWAYS Web Services erfolgreich abgeschlossen. Heute ist er ein wichtiger Teil des Teams, das sich mit großer Hingabe um die Kundenbetreuung und die kontinuierliche Weiterentwicklung der SaaS-Apps kümmert. Neben seinem musikalischen Talent am Klavier hat Joshua eine Leidenschaft für Wintersport und findet auch Freude im Gaming. Doch am allerliebsten verbringt er seine Zeit mit seiner besseren Hälfte, denn sie ist für ihn das größte Glück.

Frühlingsputz im Shop: Neue Features, neues Design

Vielleicht ist es manchen von Euch schon aufgefallen: Seit einigen Tagen erstrahlt unser Online Shop in neuem Glanz! Wir haben hier einiges an Arbeit hineingesteckt, um nicht nur Frühjahrsputz zu machen, sondern mal richtig zu renovieren. Bei uns ist es jetzt nicht nur besenrein, sondern jede Ecke unseres Shops ist blitzeblank und etwas ganz besonderes!

Insbesondere freuen wir uns über ein neues Feature, das sich schon viele Kunden gewünscht haben: Es gibt bei uns nun eine Merkliste, die Ihr befüllen und uns per Mail zukommen lassen könnt. Dies ist vor allem praktisch für Kunden, die sich gerne selbst ihren Einkauf zusammenstellen, für den Kauf an sich aber dennoch ein offizielles Angebot benötigen. Dieses erstellen wir Euch dann sehr gerne anhand Eurer Einkaufsliste! Ansonsten könnt Ihr die Produkte auch von der Merkliste direkt in den Warenkorb verschieben.

Des Weiteren wollten wir der Zeit natürlich nicht hinterherhängen und haben uns für ein frisches, modernes Design mit angenehmer Farbpalette entschieden. Auch haben wir an der Übersichtlichkeit gedreht – es ist leider gar nicht so einfach, eine Vielzahl an tollen Produkten auf einer Website darzustellen. Deswegen findet Ihr auch auf der Startseite gleich unsere beliebtesten Produkte!

Weiterhin werden wir Euch bzgl. Überwachungs- und Alarmierungshardware mit Rat und Tat zur Seite stehen. Egal, ob es um Beratung oder Großaufträge geht, eine Teststellung gewünscht wird oder es irgendwo hakt. Kontaktiert uns einfach, wir sind für Euch da!

Bei Fragen rund um die Hardware aus unserem Shop helfen wir gerne persönlich weiter – wir sind erreichbar per Mail oder telefonisch unter der 0911 92885-44. Wer uns gerne bei der Arbeit ein bisschen über die Schulter schauen oder den Shop und die angebotenen Produkte verfolgen möchte, kann uns auch auf Twitter folgen – über @NetwaysShop twittert das NETWAYS Shop Team!

Neue Features in Icinga 2.3

Die nächste Major-Version von Icinga 2 wird einige interessante Features unterstützen, die es noch einfacher machen, Ausnahmen für Services zu definieren. Bis die 2.3 als Release-Version verfügbar ist, wird es zwar noch eine Weile dauern, aber hier gibt es schonmal einen kleinen Vorgeschmack:

Konditionale Statements

Auch bekannter als if/else: In 2.3 ist es möglich, Attribute nur dann zu setzen, wenn bestimmte andere Bedingungen erfüllt sind. Hier ein Beispiel:

object Host "localhost" {
  check_command = "hostalive"
  address = "127.0.0.1"
  vars.http_vhosts["icinga.org"] = {
    http_address = "icinga.org"
    interval = 1m
  }
  vars.http_vhosts["netways.de"] = {
    http_address = "netways.de"
  }
}
apply Service "vhost " for (vhost => config in host.vars.http_vhosts) {
  host_name = "localhost"
  check_command = "http"
  if (config.interval) {
    check_interval = config.interval
  } else {
    check_interval = 5m
  }
  assign where host.vars.http_vhosts
}

Entwicklungs-Konsole

Um Filterregeln für „apply“ und auch andere Ausdrücke einfacher testen zu können, gibt es eine CLI-basierte Konsole, die beliebige Befehle auswerten kann und deren Ergebnis anzeigt:

$ icinga2 console
Icinga (version: v2.2.0-262-g7075607)
<1> => config = { http_address = "icinga.org", interval = 1m }
{"http_address":"icinga.org","interval":60.0}
<2> => if (config.interval) { check_interval = config.interval } else { check_interval = 5m }
60.0
<3> => check_interval
60.0

Prototypen

Alle eingebauten Datentypen (d.h. Strings, Zahlen, Arrays und Dictionaries) verfügen nun über Methoden. Mit Hilfe dieser Methoden können z.B. Dictionaries manipuliert werden:

<1> => vhosts = { "icinga.org" = { http_address = "icinga.org" }, "netways.de" = { http_address = "netways.de" } }
{"icinga.org":{"http_address":"icinga.org"},"netways.de":{"http_address":"netways.de"}}
<2> => vhosts.remove("icinga.org")
null
<3> => vhosts
{"netways.de":{"http_address":"netways.de"}}
<4> => vhosts.len()
1.0

Mit Dictionary#remove würden sich so z.B. bestimmte Dictionary-Items entfernen lassen, falls diese bei einem bestimmten Host bzw. Service nicht vorhanden sein sollen.