F A B R I C A N D O S U A I D E I A
Jitsi Meet Gravar Diversas Reunioes Como Gravar Mais De Uma Reuniao No Jitsi Multiplos Jibri

Comando Usados no Video:

sudo hostnamectl set-hostname recorder.meujitsi.local

Edite o Hostname:

sudo nano /etc/hostname
recorder.meujitsi.local

Editar arquivo hosts:

sudo nano /etc/hosts

Adicione este conteudo (Não se esqueça de editar para seu dominio e IP)

127.0.0.1       localhost
#SEU_ENDERECO_IP  SEU_DOMINIO_JIBRI  NICK_DO_HOST
194.146.24.85   recorder.meujitsi.local  recorder
127.0.0.1       localhost         recorder.meujitsi.local

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Reinicie o Servidor

reboot

Verifique o Nome do Servidor:

ping "$(hostname)"

Instalando Pré Requisistos:

sudo apt update

sudo apt install linux-image-extra-virtual

Configurando Dispositivos de Audio:
Configuramos 12 capture/playback interfaces

echo "options snd-aloop enable=1,1,1,1,1,1,1,1,1,1,1,1 index=0,1,2,3,4,5,6,7,8,9,10,11" > /etc/modprobe.d/alsa-loopback.conf

Configure o módulo a ser carregado na inicialização:

echo "snd-aloop">>/etc/modules

Carregue o módulo no kernel em execução:

modprobe snd-aloop

Verifique se o módulo já está carregado:

lsmod | grep snd_aloop

Reinicie o Servidor:

reboot

Verifique os Loopbacks:

ls -alh /proc/asound

Instalando o Docker:

 sudo apt update -y

 sudo apt upgrade -y

Depois de atualizar o sistema, precisamos instalar alguns pacotes necessários antes de estarmos prontos para instalar o Docker:

sudo apt-get install curl apt-transport-https ca-certificates software-properties-common

Adicionando Repositório do Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

sudo apt update

apt-cache policy docker-ce

Instalando o Docker:

sudo apt install docker-ce

Verificando se o Docker esta rodando:

sudo systemctl status docker

Instalando Docker Compose:

apt install docker-compose

Instalando Jibri Docker:

docker pull jitsi/jibri

Criando Pastas e Arquivos de Configuração:

cd &&
mkdir jibri-docker &&
cd jibri-docker &&
touch .env &&
touch jibri.yml &&
mkdir config &&
cd config &&
touch .asoundrc1 &&
touch .asoundrc2 &&
touch .asoundrc3 &&
touch .asoundrc4 &&
touch .asoundrc5 &&
touch .asoundrc6 &&
cd ..

Editar Arquivo ENV:

sudo nano /root/jibri-docker/.env

Conteúdo que você deve colocar no arquivo:

# JIBRI CONFIG
# Internal XMPP domain for authenticated services
XMPP_AUTH_DOMAIN=auth.YOUR_JITSI_DOMAIN

# XMPP domain for the internal MUC used for jibri, jigasi and jvb pools
XMPP_INTERNAL_MUC_DOMAIN=internal.auth.YOUR_JITSI_DOMAIN

# XMPP domain for the jibri recorder
XMPP_RECORDER_DOMAIN=recorder.YOUR_JITSI_DOMAIN

# Internal XMPP server
XMPP_SERVER=YOUR_JITSI_DOMAIN

# Internal XMPP domain
XMPP_DOMAIN=YOUR_JITSI_DOMAIN

# XMPP user for Jibri client connections
JIBRI_XMPP_USER=jibri

# XMPP password for Jibri client connections
JIBRI_XMPP_PASSWORD=YOUR_JIBRI_USER_PASSWORD

# MUC name for the Jibri pool
JIBRI_BREWERY_MUC=jibribrewery

# XMPP recorder user for Jibri client connections
JIBRI_RECORDER_USER=recorder

# XMPP recorder password for Jibri client connections
JIBRI_RECORDER_PASSWORD=YOUR_RECORDER_USER_PASSWORD

# Directory for recordings inside Jibri container
JIBRI_RECORDING_DIR=/config/recordings

# The finalizing script. Will run after recording is complete
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH=/config/finalize.sh

 
# When jibri gets a request to start a service for a room, the room
# jid will look like: [email protected]_domain
# We'll build the url for the call by transforming that into:
# https://xmpp_domain/subdomain/roomName
# So if there are any prefixes in the jid (like jitsi meet, which
# has its participants join a muc at conference.xmpp_domain) then
# list that prefix here so it can be stripped out to generate
# the call url correctly

JIBRI_STRIP_DOMAIN_JID=conference

# Directory for logs inside Jibri container
JIBRI_LOGS_DIR=/config/logs

DISPLAY=:0=

Edite o arquivo JIBRI.YML:

sudo nano /root/jibri-docker/jibri.yml

Conteudo do arquivo (Neste exemplo estou usando somente 2 Jibris)

version: '3'

services:
    jibri1:
        image: jitsi/jibri
        restart: ${RESTART_POLICY}
        volumes:
            - ${CONFIG}/jibri1:/config:Z
            - /dev/shm:/dev/shm
            - /root/jibri-docker/config/.asoundrc1:/home/jibri/.asoundrc
            - /root/jibri-docker/recordings:/config/recordings
        cap_add:
            - SYS_ADMIN
            - NET_BIND_SERVICE
        devices:
            - /dev/snd:/dev/snd
        environment:
            - XMPP_AUTH_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_RECORDER_DOMAIN
            - XMPP_SERVER
            - XMPP_DOMAIN
            - JIBRI_XMPP_USER
            - JIBRI_XMPP_PASSWORD
            - JIBRI_BREWERY_MUC
            - JIBRI_RECORDER_USER
            - JIBRI_RECORDER_PASSWORD
            - JIBRI_RECORDING_DIR
            - JIBRI_FINALIZE_RECORDING_SCRIPT_PATH
            - JIBRI_STRIP_DOMAIN_JID
            - JIBRI_LOGS_DIR
            - DISPLAY=:0
            - TZ
    jibri2:
        image: jitsi/jibri
        restart: ${RESTART_POLICY}
        volumes:
            - ${CONFIG}/jibri2:/config:Z
            - /dev/shm:/dev/shm
            - /root/jibri-docker/config/.asoundrc2:/home/jibri/.asoundrc
            - /root/jibri-docker/recordings:/config/recordings
        cap_add:
            - SYS_ADMIN
            - NET_BIND_SERVICE
        devices:
            - /dev/snd:/dev/snd
        environment:
            - XMPP_AUTH_DOMAIN
            - XMPP_INTERNAL_MUC_DOMAIN
            - XMPP_RECORDER_DOMAIN
            - XMPP_SERVER
            - XMPP_DOMAIN
            - JIBRI_XMPP_USER
            - JIBRI_XMPP_PASSWORD
            - JIBRI_BREWERY_MUC
            - JIBRI_RECORDER_USER
            - JIBRI_RECORDER_PASSWORD
            - JIBRI_RECORDING_DIR
            - JIBRI_FINALIZE_RECORDING_SCRIPT_PATH
            - JIBRI_STRIP_DOMAIN_JID
            - JIBRI_LOGS_DIR
            - DISPLAY=:0
            - TZ

Editando Dispositivos de Audio (Cada arquivo de audio deve conter o numero do container ex:.asoundrcX)

sudo nano /root/jibri-docker/config/.asoundrc1

Conteudo do arquivo:

pcm.amix {
  type dmix
  ipc_key 219345
  slave.pcm "hw:Loopback,0,0"
}

pcm.asnoop {
  type dsnoop
  ipc_key 219346
  slave.pcm "hw:Loopback_1,1,0"
}
pcm.aduplex {
  type asym
  playback.pcm "amix"
  capture.pcm "asnoop"
}

pcm.bmix {
  type dmix
  ipc_key 219347
  slave.pcm "hw:Loopback_1,0,0"
}

pcm.bsnoop {
  type dsnoop
  ipc_key 219348
  slave.pcm "hw:Loopback,1,0"
}

pcm.bduplex {
  type asym
  playback.pcm "bmix"
  capture.pcm "bsnoop"
}

pcm.pjsua {
  type plug
  slave.pcm "bduplex"
}

pcm.!default {
  type plug
  slave.pcm "aduplex"
}

Segundo Dispositivo de Som:

sudo nano /root/jibri-docker/config/.asoundrc2

Conteudo do Arquivo:

pcm.amix {
  type dmix
  ipc_key 219345
  slave.pcm "hw:Loopback_2,0,0"
}
pcm.asnoop {
  type dsnoop
  ipc_key 219346
  slave.pcm "hw:Loopback_3,1,0"
}
pcm.aduplex {
  type asym
  playback.pcm "amix"
  capture.pcm "asnoop"
}
pcm.bmix {
  type dmix
  ipc_key 219347
  slave.pcm "hw:Loopback_3,0,0"
}
pcm.bsnoop {
  type dsnoop
  ipc_key 219348
  slave.pcm "hw:Loopback_2,1,0"
}
pcm.bduplex {
  type asym
  playback.pcm "bmix"
  capture.pcm "bsnoop"
}

pcm.pjsua {
  type plug
  slave.pcm "bduplex"
}

pcm.!default {
  type plug
  slave.pcm "aduplex"
}

Rodando o Container:

cd /root/jibri-docker

docker-compose -f jibri.yml up -d

Observação: se desejar que o contêiner reinicie ao reinicializar ou travar: encontre o ID do contêiner com docker ps -a e use com docker update –restart unless-stopped CONTAINER ID

Para listas os Containers:

docker ps

Desligando os Containers Dockers:

cd /root/jibri-docker

docker-compose -f jibri.yml down

Post's Relacionados

Leave a Comment

Preciso de ajuda?