С помощью этого руководства вы развернете сервис видеоконференций 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-доступ
- Результат