Инструменты пользователя

Инструменты сайта


service:jitsi

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

service:jitsi [22.03.2024 13:37] – [Автоконфиг] viacheslavservice:jitsi [30.07.2024 19:21] (текущий) – внешнее изменение 127.0.0.1
Строка 1: Строка 1:
 +====== Jitsi ======
 +Бесплатная система видеоконференцсвязи.
  
 +https://jitsi.org/\\
 +https://github.com/jitsi/jitsi-meet\\
 +Тестовый сервер: https://meet.jit.si/
 +
 +<code bash>
 +# Ubuntu/Debian:
 +# First install the Jitsi repository key onto your system:
 +wget -qO - https://download.jitsi.org/jitsi-key.gpg.key | sudo apt-key add -
 +# Create a sources.list.d file with the repository:
 +sudo sh -c "echo 'deb https://download.jitsi.org stable/' > /etc/apt/sources.list.d/jitsi-stable.list"
 +# Update your package list:
 +sudo apt-get -y update
 +# Install the full suite:
 +sudo apt-get -y install jitsi-meet
 +# or only the packages you need like for example:
 +sudo apt-get -y install jitsi-videobridge
 +sudo apt-get -y install jicofo
 +sudo apt-get -y install jigasi
 +</code>
 +https://jitsi.org/downloads/ubuntu-debian-installations-instructions/
 +
 +<WRAP round tip 60%>
 +Read the [[https://jitsi.org/qi|quick-install guide]] and its advanced section for further configuration (Firewall, Port Forwarding or for Running jitsi-videobridge behind NAT)!
 +</WRAP>
 +
 +Ограничение на создание комнат: https://jitsi.github.io/handbook/docs/devops-guide/secure-domain/
 +
 +===== Автоконфиг =====
 +Размер watermark.svg - 140x70 px.
 +<file bash /root/watermark.sha256>
 +035f1f16d756e70908a274080aaa81afc43835dc93fd8fdf75e33ca48790f71e  /usr/share/jitsi-meet/images/watermark.svg
 +</file>
 +
 +<file bash /root/jitsi-autoconfig.sh>
 +if ! sha256sum -c /root/watermark.sha256; then
 +
 +# copy files
 +cp /root/jitsi-watermark-company.svg /usr/share/jitsi-meet/images/watermark.svg
 +cp /root/jitsi-favicon-company.ico /usr/share/jitsi-meet/images/favicon.ico
 +
 +# interface settings (new file)
 +sed -i "
 +/defaultRemoteDisplayName:/c defaultRemoteDisplayName: 'Participant',
 +/disableE2EE:/c disableE2EE: true,
 +" /usr/share/jitsi-meet-web-config/config.js
 +
 +# interface settings (old file)
 +sed -i "
 +/APP_NAME:/c APP_NAME: 'VICS Horns and Hooves',
 +/JITSI_WATERMARK_LINK:/c JITSI_WATERMARK_LINK: 'https://www.hornsandhooves.ru/',
 +/LIVE_STREAMING_HELP_LINK:/c LIVE_STREAMING_HELP_LINK: 'https://support.google.com/youtube/answer/2474026',
 +/DISPLAY_WELCOME_FOOTER:/c DISPLAY_WELCOME_FOOTER: false,
 +/GENERATE_ROOMNAMES_ON_WELCOME_PAGE:/c GENERATE_ROOMNAMES_ON_WELCOME_PAGE: false,
 +/DEFAULT_REMOTE_DISPLAY_NAME:/c DEFAULT_REMOTE_DISPLAY_NAME: 'Participant',
 +" /usr/share/jitsi-meet/interface_config.js
 +
 +# English default titles
 +sed -i '
 +s/"headerTitle":"Jitsi Meet"/"headerTitle":"VIC system of Horns and Hooves"/
 +s/"headerSubtitle":"Secure and high quality meetings"/"headerSubtitle":" "/
 +' /usr/share/jitsi-meet/libs/app.bundle.min.js
 +
 +# language settings
 +sed -E -i '
 +s/(.*: ")Сервер видеоконференцсвязи.*(".*)/\1ВКС АО «Рога и Копыта»\2/
 +/"appDescription":/c "appDescription": " ",
 +/"headerSubtitle":/c "headerSubtitle": " ",
 +s/из Jitsi Meet/из {{appName}}/g
 +s/ссылку Jitsi/ссылку {{appName}}/g
 +' /usr/share/jitsi-meet/lang/main-ru.json
 +
 +sed -i '
 +s/Secure, fully featured, and completely free video conferencing/VIC system of Horns and Hooves/g
 +/"headerTitle":/c "headerTitle": "VIC system of Horns and Hooves",
 +/"appDescription":/c "appDescription": " ",
 +/"headerSubtitle":/c "headerSubtitle": " ",
 +s/from Jitsi Meet/c from {{appName}}/g
 +s/Jitsi link/{{appName}} link/g
 +' /usr/share/jitsi-meet/lang/main.json
 +
 +fi
 +</file>
 +
 +<code bash>
 +echo >> /etc/crontab
 +echo "jitsi autorestore settings after update" >> /etc/crontab
 +echo "*/15 * * * * root /root/jitsi-autoconfig.sh" >> /etc/crontab
 +</code>
 +
 +<code bash>
 +# Включить возможность локальной записи - браузер сохраняет аудиофайл в свою папку загрузки
 +nano /etc/jitsi/meet/domain.ru-config.js # раскомментировать раздел localRecording
 +nano /usr/share/jitsi-meet/interface_config.js # включить кнопку localrecording в интерфейсе
 +# формат лучше оставить flac, ogg получается кривой.
 +</code>
 +===== Список комнат =====
 +<code bash>
 +egrep -o "(Created|Disposed).*count[^,]*" /var/log/jitsi/jicofo.log
 +</code>
 +
 +===== Пользователи =====
 +Создать
 +<code bash>
 +prosodyctl register <username> jitsi-meet.example.com <password>
 +systemctl restart prosody
 +systemctl restart jicofo
 +systemctl restart jitsi-videobridge2
 +</code>
 +https://jitsi.github.io/handbook/docs/devops-guide/secure-domain\\
 +https://prosody.im/doc/creating_accounts
 +
 +Список существующих
 +<code bash>
 +ls /var/lib/prosody/XXXX/accounts
 +</code>
 +“XXXX” is your domain. “.” are represented by “%2e”
 +
 +To remove users I would recommend not to just delete their account files. Better use //unregister// command:
 +<code bash>
 +prosodyctl unregister USERNAME XXXX
 +</code>
 +https://community.jitsi.org/t/list-of-active-users/47375
 +===== Default timeout for authenticated users =====
 +> In jicofo there is an auto login option which you can disable and no caching will be taken into account, and will ask for user/pass every time
 +
 +''nano /etc/jitsi/jicofo/jicofo.conf''
 +<code javascript>
 +jicofo {
 +  authentication: {
 +    ...
 +    enable-auto-login = false
 +  }
 +}
 +</code>
 +
 +:!: Устаревший метод\\
 +''nano /etc/jitsi/jicofo/sip-communicator.properties''
 +<code>
 +org.jitsi.jicofo.auth.DISABLE_AUTOLOGIN=true
 +</code>
 +https://community.jitsi.org/t/default-timeout-for-authenticated-users/17664
 +
 +===== Lobby =====
 +:!: Ниже информация для устаревших систем. В новой установке лобби включено сразу.
 +
 +Для использования новых фич, в частности, Lobby, надо обновить компонент Prosody
 +<code bash>
 +echo deb http://packages.prosody.im/debian $(lsb_release -sc) main | sudo tee -a /etc/apt/sources.list
 +wget https://prosody.im/files/prosody-debian-packages.key -O- | sudo apt-key add -
 +apt update && apt upgrade -y && apt autoremove
 +
 +nano /etc/prosody/conf.avail/meet.domain.com.cfg.lua
 +# Replace: storage = "none" with storage = "memory"
 +
 +service prosody restart && service jicofo restart
 +</code>
 +https://community.jitsi.org/t/how-to-how-do-i-update-prosody/72205
 +
 +Потом отредактировать конфиг /etc/prosody/conf.d/meet.example.com.cfg.lua
 +<code lua>
 +VirtualHost "meet.example.com"
 +...
 +        modules_enabled = {
 +            ...
 +            "conference_duration";
 +            "muc_lobby_rooms";
 +        }
 +        c2s_require_encryption = false
 +        lobby_muc = "lobby.meet.example.com"
 +        main_muc = "conference.meet.example.com"
 +        -- muc_lobby_whitelist = { "recorder.meet.example.com" } -- Here we can whitelist jibri to enter lobby enabled rooms
 +...
 +Component "lobby.meet.example.com" "muc"
 +    storage = "memory"
 +    restrict_room_creation = true
 +    muc_room_locking = false
 +    muc_room_default_public_jids = true
 +...
 +</code>
 +Раньше конфиг лобби добавлялся в VirtualHost guest.meet.example.com, но теперь конфигурация перенесена в основной домен. Из гостевого хоста конфигурацию лобби необходимо убрать, иначе опция лобби появится, но запросы от участников модератору приходить не будут!\\
 +https://community.jitsi.org/t/how-to-how-do-i-use-the-new-lobby-feature/73100\\
 +https://community.jitsi.org/t/fix-lobby-not-working-after-upgrade-to-latest-version-2-0-5390/90541
 +
 +===== Whiteboard =====
 +Интерактивная доска с общим доступом и возможностью совместной работы.
 +
 +Node в стандартных репозиториях старый, поэтому нужно добавить сторонний.
 +<code bash>
 +# Obtain the Node.js source
 +curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
 +# Install the 16.x version of Node.js (This process also automatically installs NPM)
 +sudo apt install -y nodejs
 +
 +# Если появляется ошибка типа
 +# /var/cache/apt/archives/nodejs_16.15.0-deb-1nodesource1_amd64.deb trying to overwrite '/usr/share/systemtap/tapset/node.stp',
 +# which is also in package libnode72:amd64 12.22.9~dfsg-1ubuntu3, выполнить
 +sudo dpkg --remove --force-remove-reinstreq libnode-dev
 +sudo dpkg --remove --force-remove-reinstreq libnode72:amd64
 +# Затем опять можно ставить node
 +sudo apt install -y nodejs
 +</code>
 +https://www.linode.com/docs/guides/install-nodejs-on-ubuntu-22-04/#installing-a-specific-version\\
 +https://github.com/nodesource/distributions/issues/1157#issuecomment-1131212089
 +
 +Установка excalidraw-backend
 +<code bash>
 +# Создать юзера для работы сервиса с домашним каталогом /opt/excalidraw-backend
 +sudo useradd -r -d /opt/excalidraw-backend excali
 +mkdir /opt/excalidraw-backend
 +chown -R excali: /opt/excalidraw-backend
 +# Зайти под этим юзером, клонировать репозиторий, скачать зависимости
 +su - excal
 +cd /opt
 +git clone https://github.com/jitsi/excalidraw-backend.git
 +cd ~
 +npm install
 +</code>
 +
 +С настройками по умолчанию работать не будет, т. к. порты 80 и 9090 уже заняты nginx/jvb. Поэтому:
 +<code bash>
 +echo "PORT=3002" >.env.production
 +</code>
 +В файле ''src/index.ts'' поменять порт 9090 на 9091 или ещё какой-нибудь.
 +<code javascript>
 +// listens on host:9090/metrics
 +prometheus.metrics(io, {
 +    port: 9091,
 +    collectDefaultMetrics: true
 +});
 +</code>
 +
 +Протестировать запуск
 +<code bash>
 +DEBUG=* npm start
 +Ctrl+C
 +Ctrl+D # Дальше нужно выйти из юзера excali и продолжать под рутом.
 +</code>
 +
 +Настроить Jitsi: в ''/etc/jitsi/meet/jitsi.example.com-config.js''
 +  - Включить кнопку whiteboard в разделе toolbarButtons
 +  - Отредактировать секцию и включить функционал <code javascript>
 + whiteboard: {
 +          enabled: true,
 +          collabServerBaseUrl: 'https://jitsi.example.com'
 +     },
 +</code>
 +
 +Настроить nginx, вставив туда
 +<code bash>
 +    # excalidraw-backend websockets
 +    location = /socket.io/ {
 +        proxy_pass http://127.0.0.1:3002/socket.io/?$args;
 +        proxy_http_version 1.1;
 +        proxy_set_header Upgrade $http_upgrade;
 +        proxy_set_header Connection "upgrade";
 +        proxy_set_header Host $http_host;
 +        tcp_nodelay on;
 +    }
 +</code>
 +
 +Написать юнит для автозапуска
 +<file bash /etc/systemd/system/excalidraw.service>
 +[Unit]
 +Description=Excalidraw-backend
 +Requires=network.target
 +After=network.target
 +
 +[Service]
 +User=excali
 +WorkingDirectory=/opt/excalidraw-backend
 +Type=simple
 +ExecStart=/usr/bin/npm start
 +Restart=on-failure
 +RestartSec=250s
 +TimeoutStartSec=20s
 +TimeoutStopSec=1min
 +
 +[Install]
 +WantedBy=multi-user.target
 +</file>
 +
 +<code bash>
 +# Запустить демон и проверить
 +systemctl daemon-reload
 +systemctl enable excalidraw.service
 +systemctl start excalidraw.service
 +systemctl status excalidraw.service
 +
 +# Перезапустить jitsi
 +systemctl restart prosody
 +systemctl restart jicofo
 +systemctl restart jitsi-videobridge2
 +</code>
 +
 +https://community.jitsi.org/t/installing-excalidraw-backend-for-whiteboard-feature-on-self-hosted-jitsi-mee/118883\\
 +https://community.jitsi.org/t/whiteboard-is-available-but-not-functioning/126490/22
 +===== Docker =====
 +Инструкция: https://jitsi.github.io/handbook/docs/devops-guide/devops-guide-docker\\
 +Скачать последнюю версию: https://github.com/jitsi/docker-jitsi-meet/releases/latest
 +<code bash>
 +mkdir jitsi
 +wget https://github.com/jitsi/docker-jitsi-meet/archive/stable-5390-3.tar.gz
 +tar xzf stable-5390-3.tar.gz --strip=1 -C jitsi/
 +cd jitsi
 +cp env.example .env
 +sh ./gen-passwords.sh
 +mkdir -p ./.jitsi-meet-cfg/{web/letsencrypt,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}
 +docker-compose up -d
 +
 +WARNING: The RESTART_POLICY variable is not set. Defaulting to a blank string.
 +WARNING: The HTTP_PORT variable is not set. Defaulting to a blank string.
 +WARNING: The HTTPS_PORT variable is not set. Defaulting to a blank string.
 +WARNING: The CONFIG variable is not set. Defaulting to a blank string.
 +WARNING: The XMPP_DOMAIN variable is not set. Defaulting to a blank string.
 +WARNING: The XMPP_SERVER variable is not set. Defaulting to a blank string.
 +WARNING: The JVB_PORT variable is not set. Defaulting to a blank string.
 +WARNING: The JVB_TCP_PORT variable is not set. Defaulting to a blank string.
 +ERROR: The Compose file 'docker-compose.yml' is invalid because:
 +services.jvb.ports contains an invalid type, it should be a number, or an object
 +services.jvb.ports contains an invalid type, it should be a number, or an object
 +services.web.ports contains an invalid type, it should be a number, or an object
 +services.web.ports contains an invalid type, it should be a number, or an object
 +</code>
 +
 +===== Jibri =====
 +Компонент для записи.\\
 +https://github.com/jitsi/jibri
 +
 +<code bash>
 +# edit config
 +vi /etc/jitsi/jibri/config.json
 +# restart jibri
 +systemctl restart jibri
 +# view log
 +tail -f /var/log/jitsi/jibri/log.0.txt
 +</code>
 +
 +<WRAP round info 80%>
 +Для Jibri (компонента записи) нужно дать достаточное кол-во процессорных ядер, например, 4. Иначе, ffmpeg через короткое время вылетает.
 +</WRAP>
 +
 +Обновление уже установленной системы
 +<code bash>
 +# Update the system
 +apt update && apt upgrade -y && apt dist-upgrade -y && apt autoremove -y
 +# Update Chrome driver
 +CHROME_DRIVER_VERSION=`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`
 +wget -N http://chromedriver.storage.googleapis.com/$CHROME_DRIVER_VERSION/chromedriver_linux64.zip -P ~/
 +unzip ~/chromedriver_linux64.zip -d ~/
 +rm ~/chromedriver_linux64.zip
 +mv -f ~/chromedriver /usr/local/bin/chromedriver
 +chown root:root /usr/local/bin/chromedriver
 +chmod 0755 /usr/local/bin/chromedriver
 +</code>
 +==== Создание samba-сервера для доступа к записям ====
 +<code bash>
 +adduser --home /home/recordings --no-create-home --shell /usr/sbin/nologin --ingroup jibri recordings
 +smbpasswd -a recordings
 +</code>
 +
 +/etc/samba/smb.conf
 +<code>
 +[global]
 +workgroup = WORKGROUP
 +server string = Videoconf recording server
 +ntlm auth = true
 +
 +[recordings]
 +path = /recordings
 +comment = Recordings
 +browsable = yes
 +read only = no
 +force create mode = 0660
 +force directory mode = 2770
 +force user = jibri
 +valid users = recordings @jibri
 +</code>
 +
 +==== Несколько экземпляров Jibri ====
 +Т. к. один экземпляр может писать только одну конференцию, то может понадобиться больше экземпляров.
 +
 +Сначала нужно завести на сервере jitsi учётки jibri и recorder:
 +<code bash>
 +prosodyctl register jibri auth.jitsi.mydomain.org JibriPassword
 +prosodyctl register recorder recorder.jitsi.mydomain.org RecPassword
 +</code>
 +Заводить их для каждого сервера не нужно. У сервера Jibri должен быть уникальный nickname в ''/etc/jitsi/jibri/config.json'', а пользователи могут быть одинаковыми.
 +
 +==== Чтобы запись работала на запароленной конференции ====
 +Создать **на сервере Jitsi** файл ''vi /usr/share/jitsi-meet/prosody-plugins/mod_jibri_wo_passwd.lua'' c содержимым (менять ничего, кроме домена, не нужно)
 +<code lua>
 +local MUC_NS = "http://jabber.org/protocol/muc";
 +local jid = require "util.jid";
 +module:hook("muc-occupant-pre-join", function (event)
 +    local room, stanza = event.room, event.stanza;
 +
 +    local user, domain, res = jid.split(event.stanza.attr.from);
 +    log("info", "--------------> user %s domain %s res %s pass %s", tostring(user),tostring(domain),tostring(res),tostring(room:get_password())); 
 +
 +    if ( user=='recorder' and domain=='recorder.jitsi.domain.ru' ) then
 +      local join = stanza:get_child("x", MUC_NS);
 +      join:tag("password", { xmlns = MUC_NS }):text(room:get_password());
 +    end;
 +end);
 +</code>
 +
 +В файле ''vi /etc/prosody/conf.avail/jitsi.domain.ru.cfg.lua'' **на сервере Jitsi** добавить модуль (здесь: jibri_wo_passwd)
 +<code lua>
 +Component "conference.jitsi.domain.ru" "muc"
 +    restrict_room_creation = true
 +    storage = "memory"
 +    modules_enabled = {
 +        "muc_meeting_id";
 +        "muc_domain_mapper";
 +        "polls";
 +        --"token_verification";
 +        "muc_rate_limit";
 +        "jibri_wo_passwd";
 +    }
 +    admins = { "focus@auth.jitsi.domain.ru" }
 +    muc_room_locking = false
 +    muc_room_default_public_jids = true
 +
 +</code>
 +
 +
 +https://community.jitsi.org/t/jibri-authenticating-if-a-room-has-a-password-added-by-moderator/18775/61
 +
 +Склонировать (если это VM) настроенный сервер jibri, на нём
 +<code bash>
 +# поменять hostname и IP
 +hostnamectl set-hostname srv-jibri2
 +nano /etc/hosts
 +nano /etc/netplan/00-installer-config.yaml
 +netplan apply
 +
 +# отредактировать config.json и вставить туда соответствующие имена учёток
 +nano /etc/jitsi/jibri/config.json
 +</code>
 +https://community.jitsi.org/t/how-to-setup-multiple-jibri-servers-need-help-around-config/33604
 +
 +==== Синхронизация на Windows-сервер по SMB ====
 +<code bash>
 +#!/bin/sh
 +
 +username="vasya"
 +domain="domain.ru"
 +password="12345678"
 +smbsrv="srv-fs"
 +smbpath="//$smbsrv/ВКС"
 +smbfolder="/media/smbshare"
 +recfolder="/recordings"
 +smbcredfile="/root/smbcred"
 +syncfile="/root/sync.sh"
 +wipefile="/root/wipe-recordings.sh"
 +
 +# required components
 +apt install cifs-utils -y
 +# mount folder
 +mkdir $smbfolder
 +
 +# SMB credentials file
 +echo "username=$username" > $smbcredfile
 +echo "domain=$domain" >> $smbcredfile
 +echo "password=$password" >> $smbcredfile
 +chmod 600 $smbcredfile
 +
 +# mount command
 +# mount -t cifs -o credentials=$smbcredfile "$smbpath" $smbfolder
 +
 +# mount on boot
 +echo >> /etc/fstab
 +echo "# SMB share at $smbsrv" >> /etc/fstab
 +echo "$smbpath  $smbfolder  cifs  credentials=$smbcredfile,file_mode=0755,dir_mode=0755  0  0" >> /etc/fstab
 +
 +# sync
 +echo "#!/bin/sh" > $syncfile
 +echo "if grep -qs '//$smbsrv' /proc/mounts; then" >> $syncfile
 +echo "  rsync --archive --include=*.mp4 --exclude=*  $recfolder/*/ $smbfolder/" >> $syncfile
 +echo "fi" >> $syncfile
 +chmod +x $syncfile
 +# launch every 5 min
 +echo >> /etc/crontab
 +echo "# Sync $recfolder folder" >> /etc/crontab
 +echo "*/5 * * * * root $syncfile" >> /etc/crontab
 +
 +# del files older than 3 days
 +echo "#!/bin/sh" > $wipefile
 +echo "find $recfolder -name '*' -mtime +3 -exec rm -f {} \;" >> $wipefile
 +echo "rmdir $recfolder/*" >> $wipefile
 +chmod +x $wipefile
 +# launch once per day at 7 AM
 +echo >> /etc/crontab
 +echo "# Wipe old recordings" >> /etc/crontab
 +echo "0 7 * * * root $wipefile" >> /etc/crontab
 +</code>
 +
 +==== Стриминг ====
 +Если не на Youtube, то
 +
 +Just use the full RTMP destination URL as a stream key.
 +
 +https://community.jitsi.org/t/how-do-i-change-youtube-live-stream-to-another-rtmp-server-url/24817/67
 +
 +https://sourceforge.net/projects/monaserver/ - RTMP-сервер для Windows. Он просто запускается, а потом на него можно натравить VLC, который будет показывать картинку.\\
 +{{:service:pasted:20220408-115442.png}}
 +
 +==== Качество видеозахвата и конференции в целом ====
 +Разрешение видео в конференции: ''nano /etc/jitsi/meet/<jitsi-url>-config.js''\\
 +For example: set ''resolution: 1080'' (and uncomment if necessary); uncomment the entire constraints section and set ''ideal: 1080'', ''max: 1080''
 +
 +https://jitsi-club.gitlab.io/jitsi-self-hosting/en/01-deployment-howto/03-tuning/#recommended_limit_video_resolution
 +
 +Разрешение **захвата/трансляции** можно понизить, например, до 720p. На серверах Jibri:
 +<code bash>
 +nano /etc/jitsi/jibri/xorg-video-dummy.conf
 +# Section "Screen"
 +    Modes "1280x720"
 +    #Modes "1920x1080"
 +# В старых версиях - параметр Virtual:
 +#Virtual 1920 1080
 +Virtual 1280 720
 +
 +nano /etc/jitsi/jibri/jibri.conf
 +
 +jibri {
 +  ffmpeg {
 +    resolution = "1280x720"
 +  }
 +}
 +
 +systemctl stop jibri-xorg
 +sleep 3
 +systemctl start jibri
 +</code>
 +https://community.jitsi.org/t/jitsi-not-joined-yet-cannot-read-properties-of-undefined-reading-isjoined/110642/30\\
 +https://community.jitsi.org/t/jibri-resolution-now-defaults-to-1080p/95478
 +
 +По конференции в целом - настройки на сервере Jitsi.\\
 +https://community.jitsi.org/t/video-quality-and-new-install/101297/11\\
 +https://community.jitsi.org/t/improving-video-quality/92700/13\\
 +https://community.jitsi.org/t/decreasing-video-resolution-does-not-decrease-kbits-traffic-on-jitsi-server/17263/12\\
 +https://community.jitsi.org/t/reducing-resource-usage-to-improve-performance-both-client-side-and-server-side/39891\\
 +
 +
 +
 +
 +===== Решение проблем =====
 +==== После начала записи ffmpeg съедает все ресурсы и вылетает ====
 +Добавить процессорных ядер на виртуалке.\\
 +https://github.com/jitsi/jibri/issues/269
 +
 +==== Видеофайл не открывается ====
 +Нужно на сервере Jibri установить java 8, а не 11.
 +
 +<code bash>
 +sudo apt-get install openjdk-8-jdk openjdk-8-jre
 +sudo update-alternatives --config java
 +# выбрать 8-ю версию
 +</code>
 +https://community.jitsi.org/t/fixed-cannot-open-file-recording/21348/3
 +
 +==== Запись или стрим выключаются сами собой через какое-то время ====
 +Происходит, когда тупо заводят ролик и выключают все камеры и микрофоны. Решение - не делать так, либо переопределить в ''/etc/jitsi/jibri/jibri.conf''
 +<code bash>
 +jibri {
 +  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
 +  }
 +}
 +</code>
 +https://community.jitsi.org/t/jibri-recording-empty-conference/84283/5
 +
 +==== Ошибка при обновлении сертификата Let's Encrypt ====
 +<code>
 +nginx: [emerg] "server_names_hash_bucket_size" directive is duplicate in /etc/nginx/sites-enabled/jitsi.domain.ru.conf:1
 +Cleaning up challenges
 +Attempting to renew cert (jitsi.domain.ru) from /etc/letsencrypt/renewal/jitsi.domain.ru.conf produced an unexpected error: nginx restart failed:
 +
 +. Skipping.
 +All renewal attempts failed. The following certs could not be renewed:
 +  /etc/letsencrypt/live/jitsi.domain.ru/fullchain.pem (failure)
 +</code>
 +Решение:
 +<code bash>
 +# Закомментировать параметр в конфиге сайта
 +sed -i '
 +s/server_names_hash_bucket_size/# server_names_hash_bucket_size 128;/g
 +' /etc/nginx/sites-enabled/jitsi.domain.ru.conf
 +# Прописать в общем конфиге nginx
 +sed -i '
 +s/server_names_hash_bucket_size/server_names_hash_bucket_size 128;/g
 +' /etc/nginx/nginx.conf
 +# Запустить обновление сертификата
 +certbot-auto renew
 +</code>
 +https://community.jitsi.org/t/lets-encrypt-wont-renew-tls-certificates-with-jitsi-nginx-config/61172
 +
 +==== Jitsi не обновляется ====
 +<code>
 +# apt update && apt upgrade -y && apt autoremove -y
 +Hit:1 http://ru.archive.ubuntu.com/ubuntu focal InRelease
 +Get:2 http://ru.archive.ubuntu.com/ubuntu focal-updates InRelease [114 kB]
 +Get:3 http://ru.archive.ubuntu.com/ubuntu focal-backports InRelease [108 kB]
 +Get:4 http://ru.archive.ubuntu.com/ubuntu focal-security InRelease [114 kB]
 +Get:5 http://packages.prosody.im/debian focal InRelease [7275 B]
 +Get:6 http://packages.prosody.im/debian focal/main amd64 Packages [1830 B]
 +Hit:7 https://download.jitsi.org stable/ InRelease
 +Fetched 345 kB in 1s (337 kB/s)
 +Reading package lists... Done
 +Building dependency tree
 +Reading state information... Done
 +7 packages can be upgraded. Run 'apt list --upgradable' to see them.
 +Reading package lists... Done
 +Building dependency tree
 +Reading state information... Done
 +Calculating upgrade... Done
 +The following packages have been kept back:
 +  jicofo jitsi-meet jitsi-meet-prosody jitsi-meet-web jitsi-meet-web-config jitsi-videobridge2 prosody
 +0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
 +Reading package lists... Done
 +Building dependency tree
 +Reading state information... Done
 +0 upgraded, 0 newly installed, 0 to remove and 7 not upgraded.
 +</code>
 +Проблема в том, что Prosody имеет версию ниже требуемой (0.11.7).
 +<code>
 +# prosodyctl about
 +Prosody 0.11.4
 +...
 +</code>
 + Решение - установить последнюю версию prosody 0.11 ([[https://community.jitsi.org/t/prosody-was-unable-to-find-lua-unbound/113212|0.12 несовместима]] на конец 2022 г):
 +<code bash>
 +apt install prosody-0.11
 +</code>
 +Дальше можно обновляться как обычно.
 +
 +Если перед версией 0.11 сначала была по ошибке установлена версия 0.12, то запуск службы будет заблокирован:
 +<code bash>
 +systemctl start prosody
 +Failed to start prosody.service: Unit prosody.service is masked.
 +
 +# Решение
 +systemctl unmask prosody
 +systemctl start prosody
 +</code>

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki