Удельта

Пошаговая инструкция · Самостоятельная установка

Как установить Jitsi Meet на сервер

Пошаговая инструкция для самостоятельной установки. Установим Jitsi Meet из официальных пакетов, настроим HTTPS и доступ по приглашениям, проверим видеосвязь и подготовим восстановление сервера.

Собственный сервер видеосвязи соединяет участников на ноутбуке и планшете

Что подготовить и как читать инструкцию #

Установим отдельный сервер Jitsi Meet для видеовстреч в браузере. Эта инструкция ведёт от чистой ОС до закрытой тестовой встречи: каждому участнику выдаётся ссылка с временным пропуском. Запись разговоров и телефонный шлюз требуют отдельных компонентов.

Нужны Ubuntu 26.04 LTS, постоянный публичный IPv4, домен meet.example.org и SSH с sudo. Заменяйте домен своим во всех командах. Выполните подготовку Ubuntu до настройки Docker и веб-сервера; Nginx и HTTPS настроит установщик Jitsi. Сервер должен быть свободен от других сайтов на 80/443: Jitsi настроит Nginx и TURN. Ресурсы выберите по руководству Jitsi.

Команды выполняйте в терминале сервера после подключения по SSH, если шаг не указывает другое место. sudo даёт команде права администратора. Действия в браузере выполняйте на своём компьютере. Домены, IP-адреса и значения ВАШ_ПАРОЛЬ из примеров заменяйте своими до выполнения команды.

Двигайтесь по одному шагу и проверяйте результат перед следующим. Блок с <<EOF или другим именем завершения копируйте целиком: он записывает содержимое одного файла. При работе в nano сохраняйте файл клавишами Ctrl+O, Enter и выходите Ctrl+X. Если прервали SSH-сеанс, снова перейдите в указанный каталог; переменные предыдущего сеанса потребуется задать заново.

Шаг 1. Добавьте необходимые пакеты #

Установим инструменты репозиториев и Nginx, затем включим Ubuntu universe, где находятся зависимости Jitsi. Сам Jitsi пока не устанавливается.

Добавьте необходимые пакеты
sudo apt update
sudo apt install -y software-properties-common curl ca-certificates gnupg nginx-full
sudo add-apt-repository -y universe
sudo apt update

apt завершился без ошибки; universe включён.

Шаг 2. Установите и выберите Java 17 #

Jitsi требует именно Java 17. После установки update-alternatives покажет варианты: введите номер пути Java 17, если вариантов несколько. Не выбирайте другую ветку только потому, что она новее.

Установите и выберите Java 17
sudo apt install -y openjdk-17-jre-headless
sudo update-alternatives --config java
java -version

java -version сообщает 17.

Шаг 3. Подготовьте имя сервера #

Создайте A-запись домена на публичный IPv4, дождитесь обновления DNS. AAAA нужна только при работающем IPv6. Обычный HTTP-прокси DNS-провайдера для видеотрафика не подходит. Команда задаёт имя самой машины. В sudo nano /etc/hosts добавьте отдельную строку с публичным IP и доменом, например 203.0.113.10 meet.example.org; существующие localhost-записи сохраните.

Подготовьте имя сервера
sudo hostnamectl set-hostname meet.example.org
Проверка адреса домена
getent ahostsv4 meet.example.org

getent ahostsv4 meet.example.org возвращает правильный адрес; домен доступен напрямую.

Шаг 4. Разрешите порты Jitsi #

TCP 80/443 нужны сайту и сертификату, UDP 10000 — звуку и видео, 3478/UDP и 5349/TCP — TURN для сетей с ограничениями. SSH 22 сохраняет доступ к серверу; если порт другой, измените правило. Продублируйте правила в панели провайдера. При NAT нужны соответствующие пробросы на сервер.

Разрешите порты Jitsi
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw allow 3478/udp
sudo ufw allow 5349/tcp
sudo ufw enable
sudo ufw status verbose

UFW active, правила видны; новое SSH-соединение открывается, текущее пока не закрывайте.

Шаг 5. Добавьте репозиторий Prosody #

Prosody обслуживает обмен сообщениями для встречи. Добавим официальный ключ и источник пакетов для Ubuntu 26.04, кодовое имя resolute. Ключ привязан только к этому источнику через signed-by.

Добавьте репозиторий Prosody
curl -fsSL https://prosody.im/files/prosody-debian-packages.key | sudo tee /usr/share/keyrings/prosody.asc >/dev/null
printf 'deb [signed-by=/usr/share/keyrings/prosody.asc] https://packages.prosody.im/debian resolute main\n' | sudo tee /etc/apt/sources.list.d/prosody.list

Ключ и файл prosody.list созданы без ошибки.

Шаг 6. Добавьте репозиторий Jitsi #

Второй ключ проверяет пакеты Jitsi, не пакеты Prosody. После добавления обновим список. Если apt сообщает об отсутствующем Release для resolute, остановитесь и проверьте поддержку репозитория; не подменяйте выпуск Ubuntu вслепую.

Добавьте репозиторий Jitsi
curl -fsSL https://download.jitsi.org/jitsi-key.gpg.key | gpg --dearmor | sudo tee /usr/share/keyrings/jitsi-keyring.gpg >/dev/null
printf 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/\n' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list
sudo apt update

apt update успешно проверил оба источника.

Шаг 7. Найдите выбранный выпуск Jitsi #

Инструкция относится ветке пакета 2.0.11248. Переменная сохранит точный номер доступного пакета для следующего шага. Команда test завершится ошибкой, если выпуск уже отсутствует: тогда нужен пересмотр релиза, а не установка с пустым номером. Не закрывайте этот SSH-сеанс между шагами.

Найдите выбранный выпуск Jitsi
JITSI_PACKAGE_VERSION="$(apt-cache madison jitsi-meet | awk '$3 ~ /^2\.0\.11248([.-]|$)/ {print $3; exit}')"
test -n "$JITSI_PACKAGE_VERSION"
Показать найденную версию
printf "%s
" "$JITSI_PACKAGE_VERSION"

Напечатан непустой номер 2.0.11248…; test не вернул ошибку.

Шаг 8. Установите Jitsi и ответьте установщику #

APT откроет вопросы настройки. Для hostname введите ваш домен вместо meet.example.org. Выберите Let’s Encrypt Certificate и укажите рабочую почту администратора. DNS и TCP 80 должны уже работать. Подождите завершения: установщик создаёт несколько взаимосвязанных служб.

Установите Jitsi и ответьте установщику
sudo apt install "jitsi-meet=$JITSI_PACKAGE_VERSION"

Установка завершена, сертификат выпущен для вашего домена; ошибок настройки пакетов нет.

Шаг 9. Создайте секрет приглашений #

Закроем сервер для посетителей без приглашения. Генератор выдаёт 64 hex-символа; сохраните строку в менеджере паролей. Она нужна плагину Jitsi и программе, которая выдаёт приглашения.

Создайте секрет приглашений
openssl rand -hex 32

Секрет сохранён; в примерах вместо ВАШ_СЕКРЕТ будет именно он.

Шаг 10. Установите поддержку приглашений #

Пакет jitsi-meet-tokens добавляет проверку подписанных пропусков JWT. В вопросах установщика укажите Application ID udlt-meet и сохранённый Application Secret. python3-jwt нужен для выдачи первого приглашения следующим шагом.

Установите поддержку приглашений
sudo apt install jitsi-meet-tokens python3-jwt

Пакеты установлены, оба параметра заданы.

Шаг 11. Проверьте настройки доступа Prosody #

Откройте sudo nano /etc/prosody/conf.avail/meet.example.org.cfg.lua, заменив имя файла вашим доменом. Пакет уже настроил основной VirtualHost: сверяйте только показанные параметры, не заменяйте весь файл. В существующем списке modules_enabled компонента conference.meet.example.org должна быть строка "token_verification"; остальные модули сохраните. allow_empty_token=false требует пропуск от каждого участника. Анонимный guest-домен здесь не нужен; XMPP authentication в jicofo.conf для этой схемы не включайте.

Проверьте настройки доступа Prosody
VirtualHost "meet.example.org"
    authentication = "token"
    app_id = "udlt-meet"
    app_secret = "ВАШ_СЕКРЕТ"
    allow_empty_token = false

-- В существующем modules_enabled компонента conference.meet.example.org:
-- "token_verification";
-- После редактирования:
-- sudo systemctl restart prosody jicofo jitsi-videobridge2

Основной домен использует token, app_id совпадает с udlt-meet, app_secret — с вашим секретом; проверка комнат включена.

Шаг 12. Примените настройки доступа #

Перезапустим три связанные службы после сохранения файла. Эта операция прерывает текущие встречи; пока сервер новый, пользователей ещё нет.

Примените настройки доступа
sudo systemctl restart prosody jicofo jitsi-videobridge2
sudo systemctl is-active prosody jicofo jitsi-videobridge2

Все три службы возвращаются в active; при ошибке проверьте синтаксис изменённого файла и журнал Prosody.

Шаг 13. Выдайте первое приглашение #

Копируйте весь блок Python, предварительно заменив домен внутри него своим. Программа скрыто спросит Application Secret и напечатает ссылку на комнату test-meeting сроком на час. Пропуск ограничен этой комнатой; room="*" для обычного приглашения не требуется. Передавайте ссылку только участникам, секрет им не отправляйте.

Выдайте первое приглашение
python3 - <<'TOKEN'
import getpass, time, jwt
secret = getpass.getpass('Application Secret: ')
now = int(time.time())
payload = {'aud': 'jitsi', 'iss': 'udlt-meet', 'sub': 'meet.example.org',
           'room': 'test-meeting', 'iat': now, 'nbf': now - 10, 'exp': now + 3600}
token = jwt.encode(payload, secret, algorithm='HS256')
print('https://meet.example.org/test-meeting?jwt=' + token)
TOKEN

Получена HTTPS-ссылка с ?jwt=; секрет не напечатан. Для другой комнаты или после истечения часа создайте новое приглашение.

Шаг 14. Проверьте службы и HTTPS #

Проверим компоненты, конфигурацию Nginx и ответ сайта. Открытие веб-страницы ещё не доказывает, что видеопоток проходит: это проверим отдельно.

Проверьте службы и HTTPS
sudo systemctl is-active nginx prosody jicofo jitsi-videobridge2
sudo nginx -t
curl -I https://meet.example.org

Все четыре службы active, nginx -t успешен, curl получает ответ без ошибки сертификата.

Шаг 15. Откройте встречу по приглашению #

На компьютере откройте полученную ссылку в браузере. Разрешите доступ к камере и микрофону, проверьте их в предварительном просмотре и войдите. Подключите второго участника по этой же ссылке.

Вы слышите друг друга и видите видео. При отсутствии устройств сначала проверьте разрешения браузера.

Шаг 16. Проверьте третьего участника и закрытый доступ #

Подключите третье устройство, желательно через мобильный интернет: встреча двоих может идти напрямую, а троих проверяет видеомост. Затем в отдельном приватном окне откройте адрес этой комнаты без ?jwt=.

Трое слышат и видят друг друга; посетитель без пропуска не входит. Если двое работают, а трое нет, проверьте UDP 10000 и NAT по официальному quickstart.

Шаг 17. Найдите причину ошибок встречи #

Эти команды показывают последние события видеомоста и контроллера, журнал Prosody и время сервера. Для отказа по токену важны домен, комната, секрет и срок; для пропадающего видео — сетевой маршрут. Исправляйте конкретную первую ошибку, не повторяйте всю установку.

Найдите причину ошибок встречи
sudo journalctl -u jicofo -u jitsi-videobridge2 --since '-15 minutes' --no-pager
sudo tail -n 50 /var/log/prosody/prosody.log
timedatectl status

После исправления повторите проблемное действие: оно работает, в журнале нет соответствующей новой ошибки.

Шаг 18. Подготовьте копию конфигурации #

Jitsi здесь не записывает разговоры. Сохраняем версии пакетов, настройки, сертификаты и состояние Prosody, чтобы восстановить собственный сервер. umask ограничивает доступ к новым файлам; копия содержит секрет подписи приглашений.

Подготовьте копию конфигурации
umask 077
mkdir -p "$HOME/jitsi-backup"
dpkg-query -W 'jitsi*' 'jicofo*' 'prosody*' > "$HOME/jitsi-backup/packages.txt"

Закрытый каталог создан, packages.txt содержит установленные версии.

Шаг 19. Остановите встречи перед копией #

Предупредите пользователей и выберите окно обслуживания. Остановим компоненты встречи, чтобы сохранить согласованное состояние Prosody. Сайт Nginx может оставаться доступным, но новые звонки временно не работают.

Остановите встречи перед копией
sudo systemctl stop prosody jicofo jitsi-videobridge2

Команда завершилась; активные встречи прерваны в согласованное время.

Шаг 20. Сохраните настройки и состояние #

Архив собирает конфигурацию Jitsi, Prosody и Nginx, сертификаты и данные Prosody. Перенесите архив и список пакетов в закрытое внешнее хранилище. Не публикуйте копию вместе с обычными файлами сайта.

Сохраните настройки и состояние
sudo tar -czpf "$HOME/jitsi-backup/state.tar.gz" /etc/jitsi /etc/prosody /etc/nginx /etc/letsencrypt /var/lib/prosody

state.tar.gz создан без ошибки и не пуст.

Шаг 21. Возобновите встречи и проверьте восстановление #

Вернём службы и повторим звонок трёх участников. Восстановление проверяйте на отдельном сервере с совместимыми версиями и отдельным тестовым доменом: перенесите конфигурацию, права и состояние, перевыпустите сертификат для его адреса. До обновления прочитайте изменения стабильного релиза и создайте свежую копию. При постоянном использовании автоматизируйте выдачу токенов на серверной стороне, сохранив секрет вне браузера.

Возобновите встречи и проверьте восстановление
sudo systemctl start prosody jicofo jitsi-videobridge2

Службы работают и тестовый звонок проходит; отдельная проверка восстановления также возвращает рабочую встречу.

Обсудить установку и настройку

Материал был полезен?

Сообщить об ошибке или задать вопрос редакции

Сообщение увидит редакция. Не указывайте пароли и личные данные. Текст удаляется через 180 дней.

О материале

ИнфраструктураРуководствоЗадача: установитьУровень: практикаJitsi Meet

Последнее обновление:

Обсуждение

Комментарии проходят подтверждение адреса и проверку редакцией.