С помощью этого руководства вы развернете сервис видеоконференций Jitsi на бесплатной виртуальной машине в облаке Cloud.ru Evolution. Вы создадите инфраструктуру, развернете сервис видеоконференций и опубликуете его на сервере Nginx, обеспечив безопасный доступ по HTTPS.
В результате вы получите работающее окружение Jitsi, полностью готовое к использованию.
Вы будете использовать следующие сервисы:
Виртуальная машина free tier — сервис, в рамках которого предоставляется бесплатная виртуальная машина с готовой конфигурацией.
Публичный IP-адрес — для доступа к приложению через интернет.
Docker — система контейнеризации.
Docker Compose — инструмент для запуска и управления Docker-контейнерами.
Jitsi — сервис видеоконференций с открытым исходным кодом.
Бесплатный сервис nip.io для получения публичного доменного имени и сертификата. Вы также можете использовать собственное зарегистрированное доменное имя и SSL-сертификат для организации доступа.
Nginx — веб-сервер для проксирования запросов и организации защищeнного HTTPS-доступа к приложению.
Let’s Encrypt — сервис для автоматического получения бесплатного SSL-сертификата.
Шаги:
Перед началом работы
-
Если вы уже зарегистрированы, войдите под своей учетной записью.
Сгенерируйте ключевую пару и загрузите публичный ключ в Cloud.ru Evolution.
1. Разверните ресурсы в облаке
На этом шаге вы создадите группу безопасности и виртуальную машину.
Создайте бесплатную виртуальную машину со следующими параметрами:
Название: meet-service.
Образ: публичный образ Ubuntu 22.04.
Подключить публичный IP: оставьте опцию включенной.
Метод аутентификации: публичный ключ.
Публичный ключ: укажите ключ, созданный ранее.
Имя хоста: meet-service.
На странице Инфраструктура → Виртуальные машины убедитесь, что отображается виртуальная машина meet-service со статусом «Запущена».
Создайте группу безопасности с названием meet-service-sg и добавьте в нее правила:
Трафик
Протокол
Порт
Тип источника
Источник
Входящий
TCP
443
IP-адрес
0.0.0.0/0
Входящий
TCP
80
IP-адрес
0.0.0.0/0
Входящий
TCP
4443
IP-адрес
0.0.0.0/0
Входящий
UDP
10000
IP-адрес
0.0.0.0/0
Входящий
UDP
3478
IP-адрес
0.0.0.0/0
Исходящий
Любой
Оставьте пустым
IP-адрес
0.0.0.0/0
На странице Сети → Группы безопасности убедитесь, что отображается группа безопасности meet-service-sg со статусом «Создана».
-
Убедитесь, что в личном кабинете на странице сервиса «Виртуальные машины», в разделе Сетевые параметры отображается группа безопасности meet-service-sg.
2. Настройте окружение на виртуальной машине
На этом шаге вы установите необходимые пакеты и настроите систему на виртуальной машине.
Подключитесь к виртуальной машине meet-service по SSH.
Обновите систему и установите необходимые зависимости:
sudo apt update && sudo apt upgrade -y &&\sudo apt install -y curl apt-transport-https\ca-certificates\software-properties-common\gnupg2\lsb-release\unzipУстановите Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpgecho "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullsudo apt updatesudo apt install docker-ce docker-ce-cli containerd.io -yДайте текущему пользователю права на запуск Docker:
sudo usermod -aG docker $USERnewgrp dockerУстановите Docker Compose:
sudo apt-get install docker-compose-plugin -yПроверьте, что Docker и Docker Compose установлены корректно:
docker --versiondocker compose versionУстановите и запустите Nginx:
sudo apt install nginx -ysudo systemctl enable nginxsudo systemctl start nginxУстановите Let’s Encrypt и плагин для Nginx:
sudo apt install certbot python3-certbot-nginx -y
3. Настройте Nginx и HTTPS
На этом шаге вы настроите службу Nginx и обеспечите доступ по HTTPS.
Подключитесь к виртуальной машине meet-service по SSH.
Настройте межсетевой экран:
sudo ufw allow OpenSSHsudo ufw allow 'Nginx Full'sudo ufw allow 10000/udp comment 'JVB media traffic'sudo ufw allow 4443/tcp comment 'JVB TCP fallback'sudo ufw enableСоздайте конфигурационный файл Nginx:
sudo nano /etc/nginx/sites-available/meet.confВставьте конфигурацию, заменив <ip_address> на публичный IP-адрес виртуальной машины meet-service.
server {listen 80;server_name meet.<ip_address>.nip.io www.meet.<ip_address>.nip.io;# Основной прокси к Jitsi Weblocation / {proxy_pass http://localhost:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}# WebSocket прокси для XMPPlocation /xmpp-websocket {proxy_pass http://127.0.0.1:5280/xmpp-websocket;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;tcp_nodelay on;}# BOSH прокси для XMPPlocation /http-bind {proxy_pass http://localhost:5280/http-bind;proxy_set_header X-Forwarded-For $remote_addr;proxy_set_header Host $http_host;}}Активируйте конфигурацию и перезапустите Nginx:
sudo ln -sf /etc/nginx/sites-available/meet.conf /etc/nginx/sites-enabled/meet.confsudo rm -f /etc/nginx/sites-enabled/defaultsudo nginx -tsudo systemctl reload nginxПроверьте, что Nginx работает:
sudo systemctl status nginxСервис Nginx должен быть в статусе «active (running)».
Перейдите по адресу http://meet.<ip_address>.nip.io.
Откроется страница с текстом «502 Bad Gateway».
Выпустите SSL-сертификат:
sudo certbot --nginx -d meet.<ip_address>.nip.io --redirect --agree-tos -m <email>Где:
<ip_address> — публичный IP-адрес виртуальной машины meet-service.
<email> — email для регистрации сертификата.
После выпуска сертификата перейдите по адресу https://meet.<ip_address>.nip.io.
Откроется страница с текстом «502 Bad Gateway». В свойствах сайта браузер отметит соединение как безопасное.
4. Разверните приложение
Разверните серверное приложение Jitsi с помощью Docker Compose.
Подключитесь к виртуальной машине meet-service по SSH.
Скачайте стабильную версию Jitsi:
wget $(wget -q -O - https://api.github.com/repos/jitsi/docker-jitsi-meet/releases/234931998 | grep zip | cut -d\" -f4)Распакуйте архив Jitsi:
unzip stable-10431Перейдите в директорию приложения:
cd jitsi-docker-jitsi-meet-*Создайте файл .env:
cp env.example .envСгенерируйте пароли:
./gen-passwords.shСоздайте директории для конфигурации:
mkdir -p ~/.jitsi-meet-cfg/{web,transcripts,prosody/config,prosody/prosody-plugins-custom,jicofo,jvb,jigasi,jibri}Откройте файл .env на редактирование:
nano .envЗамените или вставьте следующие значения, оставив остальные по умолчанию:
CONFIG=~/.jitsi-meet-cfgHTTP_PORT=8000HTTPS_PORT=8443TZ=Europe/MoscowPUBLIC_URL=https://meet.<ip_address>.nip.ioJVB_ADVERTISE_IPS=<ip_address>DISABLE_HTTPS=1ENABLE_HTTP_REDIRECT=0ENABLE_LETSENCRYPT=0JVB_PORT=10000Где <ip_address> — публичный IP-адрес виртуальной машины meet-service.
Откройте файл docker-compose.yml на редактирование:
nano docker-compose.ymlДобавьте следующий код на строку 200 в конфигурацию сервиса prosody:
ports:- "127.0.0.1:5280:5280"Запустите сервис:
docker compose up -dПроверьте, что сервис запущен:
docker compose psПерейдите по адресу https://meet.<ip_address>.nip.io.
Отобразится страница сервера видеоконференций Jitsi.
5. Отключите SSH-доступ
Когда вы развернули и настроили сервис, закройте доступ по SSH для повышения безопасности.
В личном кабинете на верхней панели слева нажмите
и выберите Инфраструктура → Виртуальные машины.
В списке виртуальных машин выберите meet-service.
Перейдите на вкладку Сетевые параметры.
В блоке сетевого интерфейса нажмите
и выберите Изменить группы безопасности.
Удалите группу SSH-access_ru и сохраните изменения.
Убедитесь, что доступа нет — попробуйте подключиться к виртуальной машине по SSH. После отключения доступа по SSH, администрирование сервиса будет доступно через серийную консоль виртуальной машины.
Результат
Вы развернули сервис видеоконференций Jitsi на бесплатной виртуальной машине в облаке Cloud.ru с публикацией по HTTPS. Полученные навыки помогут вам создавать сервисы с использованием облачной инфраструктуры.
- Перед началом работы
- 1. Разверните ресурсы в облаке
- 2. Настройте окружение на виртуальной машине
- 3. Настройте Nginx и HTTPS
- 4. Разверните приложение
- 5. Отключите SSH-доступ
- Результат