Быстрый старт
Чтобы быстро запустить Jitsi Meet на машине с Docker и Docker Compose, выполните следующие действия:
- Загрузите и извлеките последний выпуск . НЕ клонировать репозиторий git. Если вы заинтересованы в запуске тестовых изображений, смотрите ниже:
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4) - Разархивируйте пакет:
unzip <filename> - Создайте
.envфайл, скопировав и изменивenv.example:cp env.example .env - Установите надежные пароли в настройках раздела безопасности
.envфайл, запустив следующий bash-скрипт./gen-passwords.sh - Создать необходимые
CONFIGкаталоги- Для Linux:
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}- Для Windows:
echo web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibrimkdir "~/.jitsi-meet-cfg/$_" - Бегать
docker compose up -d - Получите доступ к веб-интерфейсу по адресу
https://localhost:8443(или другой порт, если вы редактировали.envфайл).
ВАЖНЫЙ : При развертывании Jitsi Meet для реального использования необходимо установить PUBLIC_URL env в реальный домен, в котором работает ваша установка.
Если вы тоже хотите использовать jigasi, сначала настройте свой env-файл с учетными данными SIP, а затем запустите Docker Compose следующим образом:
docker compose -f docker-compose.yml -f jigasi.yml upЕсли вы хотите включить обмен документами через Этерпад , настройте его и запустите Docker Compose следующим образом:
docker compose -f docker-compose.yml -f etherpad.yml upЕсли вы хотите включить виртуальную доску для совместной работы через Экскалидро , настройте его и запустите Docker Compose следующим образом:
docker compose -f docker-compose.yml -f whiteboard.yml upЕсли вы тоже хотите использовать jibri, сначала настройте хост, как описано в разделе конфигурации инфраструктуры вещания Jitsi, а затем запустите Docker Compose следующим образом:
docker compose -f docker-compose.yml -f jibri.yml up -dили также использовать джигаси:
docker compose -f docker-compose.yml -f jigasi.yml -f jibri.yml up -dЧтобы включить компонент транскрибатора, запустите Docker Compose следующим образом:
docker compose -f docker-compose.yml -f transcriber.yml up -dИли для них всех вместе:
docker compose -f docker-compose.yml -f transcriber.yml -f jigasi.yml -f jibri.yml up -dДля проекта анализа журналов вам понадобятся файлы log-analyser.yml и grafana.yml. Этот проект позволяет анализировать логи докера в графане. Если вы хотите запустить анализатор журналов, запустите файлы Docker следующим образом:
docker-compose -f docker-compose.yml -f log-analyser.yml -f grafana.yml up -dСледовать этот документ для получения подробной информации об анализе журналов.
Обновление
Если вы хотите обновить, просто запустите
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/latest | grep zip | cut -d\" -f4)еще раз (точно так же, как вы изначально загрузили Jitsi). Затем разархивируйте и перезапишите все, когда вас спросят:
unzip <filename>Тестирование разработки/нестабильных сборок
Загрузите последнюю версию кода:
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meetБегать docker compose up по-прежнему.
Каждый день загружается новая «нестабильная» сборка образа.
Создание собственных изображений
Загрузите последнюю версию кода:
git clone https://github.com/jitsi/docker-jitsi-meet && cd docker-jitsi-meetПредоставленное Makefile обеспечивает комплексный способ создания целого стека или отдельных изображений.
Чтобы построить все изображения:
makeЧтобы создать конкретное изображение (например, веб-изображение):
make build_webКак только ваша локальная сборка будет готова, обязательно добавьте JITSI_IMAGE_VERSION=latest к твоему .env файл.
Примечание по безопасности
Раньше в этой настройке использовались пароли по умолчанию для внутренних учетных записей, используемых во всех компонентах. Чтобы обеспечить безопасность настройки по умолчанию, они были удалены, и соответствующие контейнеры не запустятся без установки пароля.
Надежные пароли могут быть созданы следующим образом: ./gen-passwords.sh Это изменит ваш .env файл (резервная копия сохраняется в .env.bak) и установите надежные пароли для каждой из необходимых опций. Пароли генерируются с помощью openssl rand -hex 16.
НЕ используйте повторно какие-либо пароли.
Архитектура
Установку Jitsi Meet можно разбить на следующие компоненты:
- Веб-интерфейс
- XMPP-сервер
- Компонент фокуса конференции
- Видеомаршрутизатор (может быть несколько)
- SIP-шлюз для аудиозвонков
- Инфраструктура вещания для записи или потоковой передачи конференции.

На схеме показано типичное развертывание на хосте, на котором работает Docker. В этом проекте каждый из вышеперечисленных компонентов разделен на взаимосвязанные контейнеры. Для этого предусмотрено несколько образов контейнеров.
Внешние порты
На брандмауэре должны быть открыты следующие внешние порты:
80/tcpдля HTTP веб-интерфейса (на самом деле просто для перенаправления после раскомментированияENABLE_HTTP_REDIRECT=1в.env)443/tcpдля веб-интерфейса HTTPS10000/udpдля RTP-медиа через UDP
Также 20000-20050/udp для jigasi, если вы решите развернуть его для облегчения доступа по SIP.
Например, на сервере CentOS/Fedora это будет сделано так (без доступа по SIP):
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=10000/udp
sudo firewall-cmd --reloadВидеть соответствующий раздел в руководстве по установке Debian/Ubuntu .
Изображения
- база : стабильный базовый образ Debian с Наложение S6 для управления технологическими процессами и Репозитории Jitsi включено. Все остальные изображения основаны на этом.
- база-Java : То же, что и выше, плюс Java (OpenJDK).
- сеть : веб-интерфейс Jitsi Meet, обслуживаемый nginx.
- просодия : просодия , сервер XMPP.
- джикофо : Хикофо , компонент фокуса XMPP.
- jvb : Джитси Видеобридж , видеомаршрутизатор.
- Джигаси : Джигация , шлюз SIP (только аудио).
- Джибри : Джибри , инфраструктура вещания.
Рекомендации по проектированию
Jitsi Meet использует XMPP для сигнализации, поэтому необходим сервер XMPP. Настройка, предоставляемая этими контейнерами, не предоставляет доступ к XMPP-серверу внешнему миру. Вместо этого он остается полностью изолированным, и маршрутизация трафика XMPP происходит только в определяемой пользователем сети.
Сервер XMPP может быть доступен внешнему миру, но это выходит за рамки данного проекта.
Конфигурация
Конфигурация выполняется через переменные среды, содержащиеся в файле .env файл. Вы можете скопировать предоставленный env.example файл в качестве ссылки.
| Переменная | Описание | Пример |
|---|---|---|
CONFIG | Каталог, в котором будет храниться вся конфигурация | /opt/jitsi-meet-cfg |
TZ | Системный часовой пояс | Европа/Амстердам |
HTTP_PORT | Открытый порт для HTTP-трафика | 8000 |
HTTPS_PORT | Открытый порт для HTTPS-трафика | 8443 |
JVB_ADVERTISE_IPS | IP-адреса хоста Docker (через запятую), необходимые для сред локальной сети. | 192.168.1.1 |
PUBLIC_URL | Публичный URL-адрес веб-службы | https://meet.example.com |
Конфигурация TLS
Давайте зашифруем конфигурацию
Если вы хотите напрямую предоставить свой экземпляр Jitsi Meet внешнему трафику, но у вас нет надлежащего сертификата TLS, вам повезло, поскольку поддержка Let’s Encrypt встроена в систему. Вот необходимые параметры:
| Переменная | Описание | Пример |
|---|---|---|
ENABLE_LETSENCRYPT | Включить генерацию сертификата Let’s Encrypt | 1 |
LETSENCRYPT_DOMAIN | Домен, для которого создается сертификат | meet.example.com |
LETSENCRYPT_EMAIL | E-Mail для получения важных уведомлений об аккаунте (обязательно) | alice@atlanta.net |
Кроме того, вам необходимо будет установить HTTP_PORT до 80 и HTTPS_PORT на 443 и PUBLIC_URL на ваш домен. Вы также можете рассмотреть возможность перенаправления HTTP-трафика на HTTPS, установив ENABLE_HTTP_REDIRECT=1.
Предупреждение об ограничении скорости Let’s Encrypt : Let’s Encrypt имеет ограничение на количество раз, которое вы можете отправить запрос на новый сертификат для вашего доменного имени. На момент написания текущий лимит составляет пять новых (дубликатов) сертификатов для одного и того же доменного имени каждые семь дней. По этой причине рекомендуется отключить переменные среды Let’s Encrypt из .env если вы планируете удалить .jitsi-meet-cfg папка. В противном случае вы можете рассмотреть возможность перемещения .jitsi-meet-cfg папку в другое место, чтобы у вас было безопасное место для поиска уже выпущенного Let’s Encrypt сертификата. Или проведите первоначальное тестирование с отключенным Let’s Encrypt, а затем снова включите Let’s Encrypt после завершения тестирования.
Для получения дополнительной информации об ограничениях скорости Let’s Encrypt посетите: https://letsencrypt.org/docs/rate-limits/
Использование существующего сертификата и ключа TLS
Если у вас есть соответствующий сертификат TLS и вам не нужен сертификат Let’s Encrypt, вы можете настроить контейнер Jitsi Meet для его использования.
В отличие от сертификатов Let’s Encrypt, это не настраивается через .env файл, но сообщив Jitsi Meet’s web сервис для монтирования следующих двух томов:
- устанавливать
/path/to/your/cert.keyфайл в/config/keys/cert.keyточка монтирования - устанавливать
/path/to/your/cert.fullchainфайл в/config/keys/cert.crtточка монтирования.
Делаю это в docker-compose.yml файл должен выглядеть так:
services:
web:
...
volumes:
...
- /path/to/your/cert.fullchain:/config/keys/cert.crt
- /path/to/your/cert.key:/config/keys/cert.keyКонфигурация функций (config.js)
| Переменная | Описание | Пример |
|---|---|---|
TOOLBAR_BUTTONS | Настройте кнопки панели инструментов. Добавьте названия кнопок через запятую (без пробелов между запятыми) | |
HIDE_PREMEETING_BUTTONS | Скройте кнопки на экране предварительного присоединения. Добавьте название кнопки через запятую. | |
ENABLE_LOBBY | Контролируйте, должна ли функция лобби быть включена или нет. | 1 |
ENABLE_AV_MODERATION | Контролируйте, должна ли модерация A/V быть включена или нет. | 1 |
ENABLE_PREJOIN_PAGE | Показывать страницу предварительного присоединения перед входом в конференцию | 1 |
ENABLE_WELCOME_PAGE | Включить страницу приветствия | 1 |
ENABLE_CLOSE_PAGE | Включить закрытие страницы | 0 |
DISABLE_AUDIO_LEVELS | Отключить измерение уровней звука | 0 |
ENABLE_NOISY_MIC_DETECTION | Включить обнаружение шумного микрофона | 1 |
ENABLE_BREAKOUT_ROOMS | Включить подгруппы | 1 |
Конфигурация SIP-шлюза Jigasi (только аудио)
Если вы хотите включить SIP-шлюз, необходимы следующие параметры:
| Переменная | Описание | Пример |
|---|---|---|
JIGASI_SIP_URI | SIP URI для входящих/исходящих звонков | test@sip2sip.info |
JIGASI_SIP_PASSWORD | Пароль для указанной учетной записи SIP | <unset> |
JIGASI_SIP_SERVER | SIP-сервер (если сомневаетесь, используйте домен учетной записи SIP) | sip2sip.info |
JIGASI_SIP_PORT | порт SIP-сервера | 5060 |
JIGASI_SIP_TRANSPORT | SIP-транспорт | UDP |
Отображение информации о дозвоне
| Переменная | Описание | Пример |
|---|---|---|
DIALIN_NUMBERS_URL | URL-адрес JSON со всеми номерами дозвона | https://meet.example.com/dialin.json |
CONFCODE_URL | URL-адрес API для проверки/генерации кодов дозвона | https://jitsi-api.jitsi.net/conferenceMapper |
JSON с номерами дозвона должен выглядеть следующим образом:
{"message":"Dial-In numbers:","numbers":{"DE": ["+49-721-0000-0000"]},"numbersEnabled":true}Настройка записи/прямой трансляции с помощью Jibri
Если вы хотите включить Jibri, необходимы следующие параметры:
| Переменная | Описание | Пример |
|---|---|---|
ENABLE_RECORDING | Включить запись/прямую трансляцию | 1 |
Расширенная конфигурация Jibri:
| Переменная | Описание | Пример |
|---|---|---|
JIBRI_RECORDER_USER | Пользователь внутреннего регистратора для клиентских подключений Jibri | диктофон |
JIBRI_RECORDER_PASSWORD | Пароль внутреннего рекордера для клиентских подключений Jibri | <unset> |
JIBRI_RECORDING_DIR | Каталог записей внутри контейнера Jibri | /конфигурация/записи |
JIBRI_FINALIZE_RECORDING_SCRIPT_PATH | Финальный сценарий. Запустится после завершения записи | /config/finalize.sh |
JIBRI_XMPP_USER | Внутренний пользователь для подключений клиентов Jibri. | Джибри |
JIBRI_STRIP_DOMAIN_JID | Префиксный домен для полосы внутри Jibri (подробности см. в env.example) | слизь |
JIBRI_BREWERY_MUC | Название MUC для пула Jibri | пивоварня |
JIBRI_PENDING_TIMEOUT | Тайм-аут соединения MUC | 90 |
Конфигурация Jitsi Meet
Jitsi-Meet использует два файла конфигурации для изменения настроек по умолчанию в веб-интерфейсе: config.js и interface_config.js. Файлы расположены внутри CONFIG/web/ каталог, настроенный в вашем файле среды.
Эти файлы создаются заново при каждом перезапуске контейнера. Если вы хотите предоставить свои собственные настройки, создайте свои собственные файлы конфигурации: custom-config.js и custom-interface_config.js.
Достаточно указать только соответствующие настройки, скрипты докера дополнят ваши пользовательские файлы к файлам по умолчанию!
Аутентификация
Аутентификацией можно управлять с помощью переменных среды, указанных ниже. Если включен гостевой доступ, неаутентифицированным пользователям придется ждать, пока пользователь пройдет аутентификацию, прежде чем они смогут присоединиться к комнате. Если гостевой доступ не включен, каждому пользователю необходимо будет пройти аутентификацию, прежде чем он сможет присоединиться.
Если аутентификация включена, после входа в систему аутентифицированного пользователя он всегда входит в систему до истечения времени ожидания сеанса. Вы можете установить ENABLE_AUTO_LOGIN=0 чтобы отключить эту функцию автоматического входа в систему по умолчанию, или вы можете установить JICOFO_AUTH_LIFETIME чтобы ограничить время жизни сеанса.
| Переменная | Описание | Пример |
|---|---|---|
ENABLE_AUTH | Включить аутентификацию | 1 |
ENABLE_GUESTS | Включить гостевой доступ | 1 |
AUTH_TYPE | Выберите тип аутентификации (внутренняя, jwt или ldap) | внутренний |
ENABLE_AUTO_LOGIN | Включить автоматический вход | 1 |
JICOFO_AUTH_LIFETIME | Выберите значение тайм-аута сеанса для аутентифицированного пользователя. | 3 часа |
Внутренняя аутентификация
Режим аутентификации по умолчанию ( internal) использует учетные данные XMPP для аутентификации пользователей. Чтобы включить его, вам необходимо включить аутентификацию с помощью ENABLE_AUTH и установить AUTH_TYPE к internal, затем настройте параметры, которые вы можете увидеть ниже.
Внутренних пользователей необходимо создавать с помощью prosodyctl полезность в prosody контейнер. Для этого сначала запустите оболочку в соответствующем контейнере:
docker compose exec prosody /bin/bashПопав в контейнер, выполните следующую команду, чтобы создать пользователя:
Обратите внимание, что команда не выдает никаких результатов.
Чтобы удалить пользователя, выполните в контейнере следующую команду:
Чтобы вывести список всех пользователей, выполните в контейнере следующую команду:
find /config/data/meet%2ejitsi/accounts -type f -exec basename {} .dat \;Аутентификация с использованием LDAP
Вы можете использовать LDAP для аутентификации пользователей. Чтобы включить его, вам необходимо включить аутентификацию с помощью ENABLE_AUTH и установить AUTH_TYPE к ldap, затем настройте параметры, которые вы можете увидеть ниже.
| Переменная | Описание | Пример |
|---|---|---|
LDAP_URL | URL-адрес для соединения ldap | ldaps://ldap.domain.com/ |
LDAP_BASE | Базовый DN LDAP. Может быть пустым. | DC=пример,DC=домен,DC=com |
LDAP_BINDDN | DN пользователя LDAP. Не указывайте этот параметр для анонимной привязки. | CN=binduser,OU=пользователи,DC=пример,DC=домен,DC=com |
LDAP_BINDPW | Пароль пользователя LDAP. Не указывайте этот параметр для анонимной привязки. | Лдапусерпароль0рд |
LDAP_FILTER | LDAP-фильтр. | (sAMAccountName=%u) |
LDAP_AUTH_METHOD | Метод аутентификации LDAP. | связывать |
LDAP_VERSION | Версия протокола LDAP | 3 |
LDAP_USE_TLS | Включить LDAP TLS | 1 |
LDAP_TLS_CIPHERS | Установите список шифров TLS, чтобы разрешить | БЕЗОПАСНОСТЬ256 :SECURE128 |
LDAP_TLS_CHECK_PEER | Запрос и проверка сертификата сервера LDAP | 1 |
LDAP_TLS_CACERT_FILE | Путь к файлу сертификата CA. Используется, когда включена проверка сертификата сервера. | /etc/ssl/certs/ca-certificates.crt |
LDAP_TLS_CACERT_DIR | Путь к каталогу сертификатов CA. Используется, когда включена проверка сертификата сервера. | /etc/ssl/сертификаты |
LDAP_START_TLS | Включите START_TLS, требуется LDAPv3, URL-адрес должен быть ldap://, а не ldaps:// | 0 |
Аутентификация с использованием токенов JWT
Вы можете использовать токены JWT для аутентификации пользователей. Чтобы включить его, вам необходимо включить аутентификацию с помощью ENABLE_AUTH и установить AUTH_TYPE к jwt, затем настройте параметры, которые вы можете увидеть ниже.
| Переменная | Описание | Пример |
|---|---|---|
JWT_APP_ID | Идентификатор приложения | my_jitsi_app_id |
JWT_APP_SECRET | Секрет приложения известен только вашему токену | my_jitsi_app_secret |
JWT_ACCEPTED_ISSUERS | (Необязательно) Установите asap_accepted_issuers в виде списка, разделенного запятыми. | мой_веб_клиент,мое_приложение_клиент |
JWT_ACCEPTED_AUDIENCES | (Необязательно) Установите asap_accepted_audiences в виде списка, разделенного запятыми. | мой_сервер1,мой_сервер2 |
JWT_ASAP_KEYSERVER | (Необязательно) Установите asap_keyserver URL-адрес, по которому можно найти открытые ключи. | https://example.com/asap> |
JWT_ALLOW_EMPTY | (Необязательно) Разрешить анонимным пользователям без JWT при проверке JWT, если они предусмотрены. | 0 |
JWT_AUTH_TYPE | (Необязательно) Определяет, какой модуль используется для обработки входящих JWT. | жетон |
JWT_TOKEN_AUTH_MODULE | (Необязательно) Определяет, какой модуль используется для проверки JWT. | token_verification |
Это можно проверить с помощью jwt.io отладчик. Используйте следующий пример полезных данных:
{
"context": {
"user": {
"avatar": "https://robohash.org/john-doe",
"name": "John Doe",
"email": "jdoe@example.com"
}
},
"aud": "my_jitsi_app_id",
"iss": "my_jitsi_app_id",
"sub": "meet.jitsi",
"room": "*"
}Аутентификация с использованием матрицы
Для получения дополнительной информации см. документацию «Проверка пользователя матрицы аутентификации Prosody». здесь .
| Переменная | Описание | Пример |
|---|---|---|
MATRIX_UVS_URL | Базовый URL-адрес службы проверки пользователей матрицы (без завершающей косой черты) | https://uvs.example.com:3000 |
MATRIX_UVS_ISSUER | (необязательно) Эмитент передаваемого токена аутентификации. Должно соответствовать тому, что установлено как iss в JWT. | эмитент (по умолчанию) |
MATRIX_UVS_AUTH_TOKEN | (необязательно) токен аутентификации службы проверки пользователей, если аутентификация включена | смени меня |
MATRIX_UVS_SYNC_POWER_LEVELS | (необязательно) Сделайте модераторов комнаты Matrix владельцами комнаты Prosody. | 1 |
Аутентификация с использованием токена гибридной матрицы
Вы можете использовать Hybrid Matrix Token для аутентификации пользователей. Он поддерживает Matrix и JWT Token аутентификации при той же настройке. Чтобы включить его, вам необходимо включить аутентификацию с помощью ENABLE_AUTH и установить AUTH_TYPE к hybrid_matrix_token, затем настройте параметры, которые вы можете увидеть ниже.
Для получения дополнительной информации см. документацию «Hybrid Matrix Token». здесь .
| Переменная | Описание | Пример |
|---|---|---|
MATRIX_UVS_URL | Базовый URL-адрес службы проверки пользователей матрицы (без завершающей косой черты) | https://uvs.example.com:3000 |
MATRIX_UVS_ISSUER | (необязательно) Эмитент передаваемого токена аутентификации. Должно соответствовать тому, что установлено как iss в JWT. Это позволяет всем эмитентам ( *) по умолчанию. | мой_эмитент |
MATRIX_UVS_AUTH_TOKEN | (необязательно) токен аутентификации службы проверки пользователей, если аутентификация включена | my_matrix_secret |
MATRIX_UVS_SYNC_POWER_LEVELS | (необязательно) Сделайте модераторов комнаты Matrix владельцами комнаты Prosody. | 1 |
MATRIX_LOBBY_BYPASS | (необязательно) Разрешить участникам комнаты Matrix обходить проверку в вестибюле Jitsi. | 1 |
JWT_APP_ID | Идентификатор приложения | my_jitsi_app_id |
JWT_APP_SECRET | Секрет приложения известен только вашему токену | my_jitsi_app_secret |
JWT_ALLOW_EMPTY | (Необязательно) Разрешить анонимным пользователям без JWT при проверке JWT, если они предусмотрены. | 0 |
Внешняя аутентификация
| Переменная | Описание | Пример |
|---|---|---|
TOKEN_AUTH_URL | Выполните аутентификацию с помощью внешнего сервиса или просто выберите внешнее окно аутентификации, если оно уже есть. | https://auth.meet.example.com/{room}> |
Совместное редактирование документов с помощью Etherpad
Вы можете совместно редактировать документ через Этерпад . Чтобы включить его, установите параметры конфигурации ниже и запустите Docker Compose с дополнительным файлом конфигурации. etherpad.yml.
Вот необходимые опции:
| Переменная | Описание | Пример |
|---|---|---|
ETHERPAD_URL_BASE | Установить URL-адрес etherpad-lite | http://etherpad.meet.jitsi:9001 |
Виртуальная доска для совместной работы с использованием Excalidraw
Вы можете использовать виртуальную доску для совместной работы через Экскалидро . Чтобы включить набор WHITEBOARD_ENABLED и запустите Docker Compose с дополнительным файлом конфигурации. whiteboard.yml.
Вот необходимые опции:
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
WHITEBOARD_ENABLED | Включить надстройку доски | ЛОЖЬ |
Эти варианты также доступны
| Переменная | Описание | Пример |
|---|---|---|
WHITEBOARD_COLLAB_SERVER_PUBLIC_URL | Установить URL-адрес доски | http://whiteboard.meet.jitsi:3000 |
Конфигурация транскрипции
Если вы хотите включить функцию транскрипции, установите параметры конфигурации ниже и запустите Docker Compose с дополнительным файлом конфигурации transcriber.yml.
| Переменная | Описание | Пример |
|---|---|---|
ENABLE_TRANSCRIPTIONS | Включить транскрипцию Jigasi в конференции | 1 |
Кроме того, для настройки различных серверов и функций транскрипции используются следующие параметры:
| Переменная | Описание | По умолчанию |
|---|---|---|
GC_PROJECT_ID | project_id из учетных данных Google Cloud | |
GC_PRIVATE_KEY_ID | private_key_id из учетных данных Google Cloud | |
GC_PRIVATE_KEY | private_key из учетных данных Google Cloud | |
GC_CLIENT_EMAIL | client_email из учетных данных Google Cloud | |
GC_CLIENT_ID | client_id из учетных данных Google Cloud | |
GC_CLIENT_CERT_URL | client_x509_cert_url из учетных данных Google Cloud | |
JIGASI_TRANSCRIBER_ADVERTISE_URL | Джигаси опубликует в чате URL-адрес с файлом транскрипции. | истинный |
JIGASI_TRANSCRIBER_CUSTOM_SERVICE | Jigasi будет использовать этот класс для пользовательских транскрипций вместо облака Google. | |
JIGASI_TRANSCRIBER_CUSTOM_TRANSLATION_SERVICE | Jigasi будет использовать этот класс для пользовательских транзакций вместо облака Google. | |
JIGASI_TRANSCRIBER_ENABLE_SAVING | Jigasi сохранит результаты в файл транскрипции. | истинный |
JIGASI_TRANSCRIBER_FILTER_SILENCE | Jigasi будет фильтровать тихий звук и не пересылать его на серверы. | |
JIGASI_TRANSCRIBER_LIBRETRANSLATE_URL | URL-адрес сервисов libretranslate | |
JIGASI_TRANSCRIBER_OCI_COMPARTMENT | Отсек OCI для использования с сервисами Oracle Cloud Speech AI. | |
JIGASI_TRANSCRIBER_OCI_REGION | Название региона OCI для использования со службами Oracle Cloud Speech AI. | |
JIGASI_TRANSCRIBER_RECORD_AUDIO | Jigasi будет записывать звук, когда транскрибатор включен. | истинный |
JIGASI_TRANSCRIBER_REMOTE_CONFIG_URL | URL-адрес для управления специальной службой транскрибирования на основе сведений о конференции | |
JIGASI_TRANSCRIBER_SEND_TXT | Jigasi отправит расшифрованный текст в чат, когда расшифровщик включен. | истинный |
JIGASI_TRANSCRIBER_USER | Пользователь Jigasi XMPP | |
JIGASI_TRANSCRIBER_VOSK_URL | URL-адрес для использования с серверной частью vosk | |
JIGASI_TRANSCRIBER_WHISPER_URL | URL-адрес для использования с серверной частью шепота | |
JIGASI_TRANSCRIBER_WHISPER_PRIVATE_KEY_NAME | Идентификатор закрытого ключа для использования с шепотом | |
JIGASI_TRANSCRIBER_WHISPER_PRIVATE_KEY | Материал закрытого ключа для использования шепотом, без символов новой строки или разделителей START/END. |
Чтобы настроить учетные данные Google Cloud, прочтите https://cloud.google.com/text-to-speech/docs/quickstart-protocol > раздел «Прежде чем начать» пункты с 1 по 5.
Конфигурация ведения журнала Sentry
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
JVB_SENTRY_DSN | Имя источника данных Sentry (конечная точка для проекта Sentry) | https://public:private@host:port/1 |
JICOFO_SENTRY_DSN | Имя источника данных Sentry (конечная точка для проекта Sentry) | https://public:private@host:port/1 |
JIGASI_SENTRY_DSN | Имя источника данных Sentry (конечная точка для проекта Sentry) | https://public:private@host:port/1 |
SENTRY_ENVIRONMENT | Дополнительная информация об окружающей среде для фильтрации событий | производство |
SENTRY_RELEASE | Дополнительная информация о выпуске для фильтрации событий | 1.0.0 |
Конфигурация сервера TURN
Настройте внешние серверы TURN.
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
TURN_CREDENTIALS | Учетные данные для серверов TURN | |
TURN_HOST | Имена хостов серверов TURN в виде списка, разделенного запятыми (транспорт UDP или TCP) | |
TURN_PORT | Порт сервера TURN (транспорт UDP или TCP) | 443 |
TURN_TRANSPORT | Протоколы сервера TURN в виде списка, разделенного запятыми (UDP или TCP или оба) | TCP |
TURNS_HOST | Имена хостов серверов TURN в виде списка, разделенного запятыми (транспорт TLS) | |
TURNS_PORT | Порт сервера TURN (транспорт TLS) | 443 |
TURN_TLL | Максимальная продолжительность распределения TURN (сек) | 86400 |
Расширенная конфигурация
Эти параметры конфигурации уже установлены, и их обычно не нужно изменять.
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
XMPP_DOMAIN | Внутренний домен XMPP | встреча.джици |
XMPP_AUTH_DOMAIN | Внутренний домен XMPP для аутентифицированных сервисов | auth.meet.jitsi |
XMPP_SERVER | Имя внутреннего XMPP-сервера xmpp.meet.jitsi | xmpp.meet.jitsi |
XMPP_BOSH_URL_BASE | URL-адрес внутреннего XMPP-сервера для модуля BOSH | http://xmpp.meet.jitsi:5280 |
XMPP_MUC_DOMAIN | Домен XMPP для MUC | muc.meet.jitsi |
XMPP_INTERNAL_MUC_DOMAIN | Домен XMPP для внутреннего MUC | Анал-мой. |
XMPP_GUEST_DOMAIN | Домен XMPP для неаутентифицированных пользователей | гость.meet.jitsi |
XMPP_RECORDER_DOMAIN | Домен для рекордера Jibri | Recorder.meet.jitsi |
XMPP_MODULES | Пользовательские модули Prosody для XMPP_DOMAIN (через запятую) | информация, предупреждение |
XMPP_MUC_MODULES | Пользовательские модули Prosody для компонента MUC (через запятую) | информация, предупреждение |
XMPP_INTERNAL_MUC_MODULES | Пользовательские модули Prosody для внутреннего компонента MUC (через запятую) | информация, предупреждение |
GLOBAL_MODULES | Пользовательские просодические модули для загрузки в глобальной конфигурации (через запятую) | статистика, оповещение |
GLOBAL_CONFIG | Пользовательская строка конфигурации с экранированными символами новой строки | foo = бар;nkey = значение; |
RESTART_POLICY | Политика перезапуска контейнера | по умолчанию unless-stopped |
DISABLE_HTTPS | Обрабатывать соединения TLS вне этой настройки. | 0 |
ENABLE_HTTP_REDIRECT | Перенаправить HTTP-трафик на HTTPS | 0 |
LOG_LEVEL | Управляет тем, какие журналы выводятся из просодии и связанных модулей. | информация |
ENABLE_HSTS | Отправить strict-transport-security заголовок, чтобы заставить браузеры использовать безопасное и доверенное соединение. Рекомендуется для производственного использования. | 1 |
ENABLE_IPV6 | Предоставляет средства для отключения IPv6 в средах, которые его не поддерживают. | 1 |
ENABLE_COLIBRI_WEBSOCKET_UNSAFE_REGEX | Включено старое небезопасное регулярное выражение для URL-адресов JVB colibri-ws. ВНИМАНИЕ. Включайте с осторожностью: это регулярное выражение разрешает подключения к произвольным внутренним IP-адресам и не рекомендуется для использования в рабочей среде. Небезопасное регулярное выражение определяется как [a-zA-Z0-9-\._]+ | 0 |
COLIBRI_WEBSOCKET_JVB_LOOKUP_NAME | DNS-имя для поиска IP-адреса JVB, используется для значения по умолчанию: COLIBRI_WEBSOCKET_REGEX | jvb |
COLIBRI_WEBSOCKET_REGEX | Переопределяет регулярное выражение colibri, используемое для проксирования в JVB. Рекомендуется переопределить в рабочей среде значения, соответствующие возможным диапазонам IP-адресов JVB. | по умолчанию dig $COLIBRI_WEBSOCKET_JVB_LOOKUP_NAME пока не DISABLE_COLIBRI_WEBSOCKET_JVB_LOOKUP установлено значение true |
DISABLE_COLIBRI_WEBSOCKET_JVB_LOOKUP | Контролирует, запускать ли dig $COLIBRI_WEBSOCKET_JVB_LOOKUP_NAME при определении COLIBRI_WEBSOCKET_REGEX | 0 |
Расширенные параметры просодии
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
PROSODY_RESERVATION_ENABLED | Включить REST API резервирования Prosody | ЛОЖЬ |
PROSODY_RESERVATION_REST_BASE_URL | Базовый URL-адрес REST API резервирования Prosody | |
PROSODY_AUTH_TYPE | Выберите тип аутентификации для Prosody (внутренняя, jwt или ldap). | AUTH_TYPE |
PROSODY_ENABLE_METRICS | Включает модуль http_openmetrics, который предоставляет метрики Prometheus на /metrics | ЛОЖЬ |
PROSODY_METRICS_ALLOWED_CIDR | Блоку CIDR разрешен доступ к метрикам | 172.16.0.0/12 |
Расширенные параметры Jicofo
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
JICOFO_COMPONENT_SECRET | Пароль компонента XMPP для Jicofo | s3cr37 |
JICOFO_AUTH_USER | Пользователь XMPP для клиентских подключений Jicofo | фокус |
JICOFO_AUTH_PASSWORD | Пароль XMPP для клиентских подключений Jicofo | <unset> |
JICOFO_ENABLE_AUTH | Включить аутентификацию в Jicofo | ENABLE_AUTH |
JICOFO_AUTH_TYPE | Выберите тип аутентификации для Jicofo (внутренняя, jwt или ldap). | AUTH_TYPE |
JICOFO_AUTH_LIFETIME | Выберите значение тайм-аута сеанса для аутентифицированного пользователя. | 24 часа |
JICOFO_ENABLE_HEALTH_CHECKS | Включите проверки работоспособности внутри Jicofo, что позволит использовать REST API для проверки статуса Jicofo. | ЛОЖЬ |
Расширенные параметры JVB
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
JVB_AUTH_USER | Пользователь XMPP для клиентских подключений JVB MUC | jvb |
JVB_AUTH_PASSWORD | Пароль XMPP для клиентских подключений JVB MUC | <unset> |
JVB_STUN_SERVERS | Серверы STUN, используемые для обнаружения общедоступного IP-адреса сервера. | stun.l.google.com:19302, stun1.l.google.com:19302, stun2.l.google.com:19302 |
JVB_PORT | UDP-порт для мультимедиа, используемый Jitsi Videobridge | 10000 |
JVB_COLIBRI_PORT | Порт COLIBRI REST API JVB, доступный для локального хоста | 8080 |
JVB_BREWERY_MUC | Имя MUC для пула JVB | пивоварня jvbb |
COLIBRI_REST_ENABLED | Включите API REST COLIBRI. | истинный |
SHUTDOWN_REST_ENABLED | Включить REST API выключения | истинный |
Расширенные возможности Джигаси
| Переменная | Описание | Значение по умолчанию |
|---|---|---|
JIGASI_ENABLE_SDES_SRTP | Включить SDES-srtp | 0 |
JIGASI_SIP_KEEP_ALIVE_METHOD | Метод поддержки активности | ПАРАМЕТРЫ |
JIGASI_HEALTH_CHECK_SIP_URI | Расширение проверки работоспособности | |
JIGASI_HEALTH_CHECK_INTERVAL | Интервал проверки работоспособности | 300000 |
JIGASI_XMPP_USER | Пользователь XMPP для клиентских подключений Jigasi MUC | Джигаси |
JIGASI_XMPP_PASSWORD | Пароль XMPP для клиентских подключений Jigasi MUC | <unset> |
JIGASI_BREWERY_MUC | Название MUC для пула Jigasi | Джигасипивоварня |
JIGASI_PORT_MIN | Минимальный порт для носителей, используемых Jigasi | 20000 |
JIGASI_PORT_MAX | Максимальный порт для мультимедиа, используемый Jigasi | 20050 |
Работа за NAT или в среде локальной сети
При работе в среде локальной сети или в общедоступном Интернете через NAT JVB_ADVERTISE_IPS переменная env должна быть установлена. Эта переменная позволяет контролировать, какие IP-адреса и порты JVB будет рекламировать для медиатрафика WebRTC. Его необходимо установить независимо от использования обратного прокси-сервера, поскольку медиа (аудио/видео) будет получать именно IP-адрес, а не HTTP-трафик, поэтому обратный прокси-сервер не учитывается.
Если ваши пользователи заходят через Интернет (а не через локальную сеть), скорее всего, это будет ваш общедоступный IP-адрес. Если это настроено неправильно, вызовы будут прерываться, когда к собранию присоединятся более двух пользователей.
Публичный IP-адрес пытается обнаружить через Оглушение . STUN-серверы можно указать с помощью JVB_STUN_SERVERS вариант.
Разделить горизонт
Если вы работаете в среде с разделенным горизонтом (внутренние клиенты локальной сети подключаются к локальному IP-адресу, а другие клиенты подключаются к общедоступному IP-адресу), вы можете указать несколько объявленных IP-адресов, разделив их запятыми:
JVB_ADVERTISE_IPS=192.168.1.1,1.2.3.4Если ваш внешний порт отличается от внутреннего JVB_PORT вы можете указать объявленный порт вместе с объявленным IP-адресом:
JVB_ADVERTISE_IPS=192.168.1.1#12345,fe80::1#12345Автономная/автономная установка
Если ваша установка не имеет доступа к Интернету, вам необходимо отключить STUN на JVB, поскольку обнаружение его собственного IP-адреса не удастся, но в этом типе среды это не обязательно.
JVB_DISABLE_STUN=trueНастройте UDP-буферы
Если у вас возникли проблемы с UDP-трафиком, например проблемы с синхронизацией, пропуск кадров и т. п., или если вы ожидаете высокий трафик и большие конференции, возможно, вам стоит настроить размеры UDP-буфера. Вам нужно сделать это в хост-системе, на которой размещен контейнер jvb. Для этого вы можете получить это файл конфигурации sysctl и сохраните его в /etc/sysctl.d и загрузите его через: sysctl --system.
Доступ к журналам сервера
Поведение по умолчанию docker-jitsi-meet это войти в систему stdout.
Пока журналы отправляются на stdout, они не теряются: если не настроено удаление всех журналов, Docker сохраняет их доступными для будущего извлечения и обработки.
Если вам нужен доступ к журналам контейнера, у вас есть несколько вариантов. Вот основные из них:
- бегать
docker compose logs -t -f <service_name>из командной строки, где<service_name>является одним изweb,prosody,jvb,jicofo. Эта команда выведет журналы выбранной службы на стандартный вывод с отметками времени. - используйте стандарт драйвер регистрации Docker для перенаправления журналов на нужную цель (например,
syslogилиsplunk). - поиск докер-хаб для третьего лица плагин драйвера ведения журналов Docker
- или напишите свой собственный плагин драйвера если у вас есть очень конкретная потребность.
Например, если вы хотите иметь все журналы, относящиеся к <service_name> написано /var/log/jitsi/<service_name> как json вывод, вы можете использовать docker-файл-журнал-драйвер и настройте его, добавив следующий блок в свой docker-compose.yml файл на том же уровне, что и файл image блок выбранных <service_name>:
services:
<service_name>:
image: ...
...
logging:
driver: file-log-driver
options:
fpath: "/jitsi/<service_name>.log"Если вы хотите отображать только message часть входа в систему json формате, просто выполните следующую команду (например, если fpath был настроен на /jitsi/jvb.log), который использует jq чтобы извлечь соответствующую часть журналов:
sudo cat /var/log/jitsi/jvb.log | jq -r '.msg' | jq -r '.message'Инструкции по сборке
Создание образов позволяет редактировать файлы конфигурации каждого образа по отдельности, предоставляя больше возможностей настройки для вашего развертывания.
Образы докера можно создать, запустив команду make команда в основной папке репозитория. Если вам нужно перезаписать существующие изображения из удаленного источника, используйте FORCE_REBUILD=1 make.
Если вы используете нестабильную ветку, создайте образы с помощью FORCE_REBUILD=1 JITSI_RELEASE=unstable make.
Теперь вы можете бежать docker compose up по-прежнему.
Использование обратного прокси
При запуске обратного прокси-сервера с того же хоста связь между прокси-сервером и Jitsi Meet часто осуществляется по протоколу HTTP, а не HTTPS, поскольку обычно у нас нет действительных сертификатов для localhost.
Отключить HTTPS
HTTPS можно отключить в конфигурации Docker Compose (поскольку HTTPS, вероятно, не будет работать на локальном хосте):
DISABLE_HTTPS=1
ENABLE_HTTP_REDIRECT=0
ENABLE_LETSENCRYPT=0Не раскрывайте порты Jitsi Meet публично.
По умолчанию HTTP_PORT и HTTPS_PORT привязываются к любому IP-адресу и поэтому являются общедоступными, если их не блокирует брандмауэр. При использовании обратного прокси в этом нет необходимости. Это можно изменить, обновив конфигурацию портов веб-контейнера:
- '127.0.0.1:${HTTP_PORT}:80'
- '127.0.0.1:${HTTPS_PORT}:443'вместо
- '${HTTP_PORT}:80'
- '${HTTPS_PORT}:443'Настройка обратного прокси
По умолчанию в этой настройке используются соединения WebSocket для двух основных компонентов:
- Сигнализация (XMPP)
- Мостовой канал (колибри)
Из-за поэтапного характера WebSocket обратный прокси-сервер должен правильно завершать и пересылать соединения WebSocket. Такого лечения требуют 2 маршрута:
/xmpp-websocket/colibri-ws
Остальные HTTP-запросы должны обрабатываться веб-контейнером.
В следующих примерах конфигурации http://localhost:8000/ — это URL-адрес входа веб-службы ( 8000 соответствует HTTP_PORT).
nginx
С помощью nginx эти маршруты можно перенаправить, используя следующий фрагмент конфигурации:
Апач
С Апачем, mod_proxy, mod_proxy_http и mod_proxy_wstunnel необходимо включить.
Обратный прокси-сервер можно настроить с помощью следующего фрагмента конфигурации:
<IfModule mod_proxy.c>
<IfModule mod_proxy_wstunnel.c>
ProxyTimeout 900
ProxyPass /xmpp-websocket ws://localhost:8000/xmpp-websocket
ProxyPass /colibri-ws/ ws://localhost:8000/colibri-ws/
ProxyPass / http://localhost:8000/
ProxyPassReverse / http://localhost:8000/
</IfModule>
</IfModule>Отключение соединений WebSocket
Если использование WebSockets невозможно, эти переменные среды можно настроить на возврат к опросу HTTP и каналам данных WebRTC:
ENABLE_SCTP=1
ENABLE_COLIBRI_WEBSOCKET=0
ENABLE_XMPP_WEBSOCKET=0