Введение
Данная инструкция описывает пошаговый процесс создания и настройки виртуальной машины (ВМ) в Proxmox VE для запуска высокопроизводительного сервера видеосвязи на базе Nextcloud Talk. В инструкции учтено, что Nextcloud уже работает на отдельной ВМ, а новая ВМ будет установлена на Debian 12.
Шаг 1. Подготовка Proxmox VE
- Убедитесь, что Proxmox VE установлен и обновлен до последней версии.
- Проверьте, что сервер имеет достаточные ресурсы:
- CPU с поддержкой виртуализации (VT-x/AMD-V)
- Не менее 16 ГБ оперативной памяти (рекомендуется 32 ГБ и выше для нагрузки видеосвязи)
- Быстрый SSD для хранения данных
- Стабильное сетевое подключение с низкой задержкой
Шаг 2. Создание виртуальной машины
- В веб-интерфейсе Proxmox нажмите кнопку Create VM.
- Введите имя виртуальной машины, например,
nextcloud-video-server. - На вкладке OS выберите ISO-образ Debian 12.
- На вкладке System оставьте настройки по умолчанию, но включите аппаратную виртуализацию (если доступно).
- На вкладке Hard Disk:
- Тип диска: VirtIO Block
- Размер: минимум 100 ГБ (зависит от объема данных и логов видеосвязи)
- На вкладке CPU:
- Количество ядер: минимум 4 (рекомендуется 8 и выше для высокой нагрузки)
- Тип CPU: host (для лучшей производительности)
- На вкладке Memory:
- Оперативная память: минимум 8 ГБ (рекомендуется 16 ГБ и выше)
- На вкладке Network:
- Модель: VirtIO (для высокой производительности)
Шаг 3. Установка Debian 12
- Запустите ВМ и подключитесь к консоли через веб-интерфейс Proxmox.
- Установите Debian 12 с минимальным набором пакетов.
- Выполните базовое обновление системы:
sudo apt update && sudo apt upgrade -y - Установите необходимые пакеты для работы сервера видеосвязи:
sudo apt install -y curl gnupg2 sudo
Шаг 4. Установка и настройка сервера видеосвязи для Nextcloud Talk
Nextcloud Talk использует серверную часть на базе Janus WebRTC Gateway или Jitsi для видеосвязи. В данном примере рассмотрим установку Jitsi Meet как отдельного сервера видеосвязи, интегрируемого с Nextcloud.
Установка Jitsi Meet на Debian 12
- Добавьте репозиторий Jitsi:
curl https://download.jitsi.org/jitsi-key.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/jitsi-keyring.gpg echo 'deb [signed-by=/usr/share/keyrings/jitsi-keyring.gpg] https://download.jitsi.org stable/' | sudo tee /etc/apt/sources.list.d/jitsi-stable.list sudo apt update - Установите Jitsi Meet:
sudo apt install -y jitsi-meet - Во время установки укажите доменное имя сервера видеосвязи (например,
video.example.com). - Настройте SSL сертификаты (рекомендуется использовать Let’s Encrypt):
sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh - Проверьте, что Jitsi Meet работает, открыв https://video.example.com в браузере.
Шаг 5. Настройка DNS-записей для сервера видеосвязи
Перед установкой SSL-сертификата и запуском сервера убедитесь, что для домена сервера видеосвязи (например, video.example.com) созданы необходимые DNS-записи:
- Добавьте запись типа A, указывающую на IPv4-адрес вашего сервера.
- При наличии IPv6-адреса добавьте запись типа AAAA.
- Подождите некоторое время для распространения DNS-записей (обычно до 24 часов).
После создания и распространения DNS-записей можно продолжать установку и настройку сервера видеосвязи.
Дополнение: Получение сертификатов Let’s Encrypt до запуска проксирующего веб-сервера
Если при попытке получить сертификат появляется ошибка:
Error creating new order. Le_OrderFinalize not found. {"type":"urn:ietf:params:acme:error:rejectedIdentifier","status":400,"detail":"DNS identifier is disallowed [video.tolerate.ru]"}
Это означает, что ваш домен или поддомен запрещён для выдачи сертификатов выбранным центром сертификации (CA). Такая ситуация может возникать для некоторых зон или поддоменов, особенно в зоне .ru, из-за ограничений CA или политик безопасности.
Что делать в этом случае:
- Проверьте правильность доменного имени. Убедитесь, что домен корректно зарегистрирован и DNS-записи настроены правильно.
- Проверьте, не блокирует ли CA выдачу сертификатов для вашей зоны. Некоторые CA могут ограничивать выдачу сертификатов для определённых доменов или зон.
- Попробуйте использовать другой центр сертификации. Например, переключитесь с ZeroSSL на Let’s Encrypt или наоборот:
sudo bash /root/.acme.sh/acme.sh --set-default-ca --server letsencrypt - Проверьте, не блокирует ли ваш домен или IP-адрес ограничения со стороны регуляторов или провайдеров. В России некоторые домены могут попадать под ограничения.
- Используйте DNS-валидацию (DNS-01 challenge). Вместо HTTP-валидации попробуйте получить сертификат через добавление TXT-записей в DNS. Это часто помогает обойти ограничения HTTP-валидации.
- Обратитесь в поддержку CA или регистратора домена. Возможно, потребуется уточнить причины блокировки.
Дополнительные ресурсы и ссылки:
- Обсуждение ошибки на форуме Let’s Encrypt
- Документация ZeroSSL по EAB
- Инструкция по DNS-валидации в acme.sh
Если хотите, могу помочь дополнить эту инструкцию примерами команд для переключения CA и настройки DNS-валидации.
Если вы используете ZeroSSL как CA по умолчанию в acme.sh, для регистрации аккаунта необходимо указать email и получить EAB (External Account Binding) креденшелы.
Как зарегистрировать email и получить EAB для ZeroSSL
- Зарегистрируйтесь на сайте ZeroSSL: https://app.zerossl.com/signup
- После регистрации войдите в личный кабинет и перейдите в раздел «API Keys» (https://app.zerossl.com/developer).
- Создайте новый API ключ (Access Key и Secret Key), которые понадобятся для EAB.
- В терминале экспортируйте переменные окружения с этими ключами:
export ZERO_SSL_ACCESS_KEY="ваш_access_key" export ZERO_SSL_SECRET_KEY="ваш_secret_key" - Зарегистрируйте аккаунт acme.sh с указанием email и EAB данных:
sudo bash /root/.acme.sh/acme.sh --register-account -m your-email@example.com --server zerossl --eab-kid "$ZERO_SSL_ACCESS_KEY" --eab-hmac-key "$ZERO_SSL_SECRET_KEY" - После успешной регистрации можно запрашивать сертификаты:
sudo bash /root/.acme.sh/## Шаг 6. Конфигурация проксирующего веб-сервера Apache2 для Jitsi Meet
Для настройки Apache2 в качестве обратного прокси для Jitsi Meet, установленного в локальной сети, выполните следующие шаги:
1. Установите необходимые модули Apache:
```bash
sudo a2enmod proxy proxy_http proxy_wstunnel headers
sudo systemctl restart apache2
- Создайте или отредактируйте конфигурационный файл виртуального хоста, например
/etc/apache2/sites-available/video.tolerate.ru.conf:
<VirtualHost *:80>
ServerName video.tolerate.ru
# Редирект с HTTP на HTTPS
Redirect permanent / https://video.tolerate.ru/
</VirtualHost>
<VirtualHost *:443>
ServerName video.tolerate.ru
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/video.tolerate.ru/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/video.tolerate.ru/privkey.pem
ProxyPreserveHost On
# Проксирование HTTP-запросов к Jitsi Meet
ProxyPass / http://192.168.1.100:8000/
ProxyPassReverse / http://192.168.1.100:8000/
# Проксирование WebSocket
ProxyPass /xmpp-websocket ws://192.168.1.100:5280/xmpp-websocket
ProxyPassReverse /xmpp-websocket ws://192.168.1.100:5280/xmpp-websocket
# Заголовки безопасности
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
ErrorLog ${APACHE_LOG_DIR}/video_error.log
CustomLog ${APACHE_LOG_DIR}/video_access.log combined
</VirtualHost>
- Замените IP-адрес
192.168.1.100и порты на соответствующие вашему локальному серверу Jitsi Meet. - Активируйте сайт и перезапустите Apache:
sudo a2ensite video.tolerate.ru.conf
sudo systemctl reload apache2
- Убедитесь, что порты 80 и 443 открыты и проброшены на роутере.
- Проверьте доступность сервера по HTTPS: https://video.tolerate.ru
Эта конфигурация обеспечит корректную работу проксирования запросов и WebSocket для Jitsi Meet через Apache2 с SSL-сертификатом.
Если нужно, могу помочь дополнить инструкцию или добавить примеры для других веб-серверов.
Похоже, ты успешно сгенерировал два SSL-сертификата для Prosody — один для video.tolerate.ru, другой для auth.video.tolerate.ru. Вот краткое резюме:
🔐 Сертификаты Prosody
- video.tolerate.ru
- Конфигурация:
/var/lib/prosody/video.tolerate.ru.cnf - Сертификат:
/var/lib/prosody/video.tolerate.ru.crt
- Конфигурация:
- auth.video.tolerate.ru
- Ключ:
/var/lib/prosody/auth.video.tolerate.ru.key - Конфигурация:
/var/lib/prosody/auth.video.tolerate.ru.cnf - Сертификат:
/var/lib/prosody/auth.video.tolerate.ru.crt
- Ключ:
📋 Введённые данные
- Страна: RU
- Локальность: The Internet
- Организация: Your Organisation
- Подразделение: XMPP Department
- Common Name:
auth.video.tolerate.ru - Email:
xmpp@auth.video.tolerate.ru
Если ты настраиваешь виртуальные хосты в Prosody, не забудь указать пути к этим сертификатам в конфиге /etc/prosody/conf.avail/video.tolerate.ru.cfg.lua, например:
VirtualHost "video.tolerate.ru"
ssl = {
key = "/var/lib/prosody/video.tolerate.ru.key";
certificate = "/var/lib/prosody/video.tolerate.ru.crt";
}
VirtualHost "auth.video.tolerate.ru"
ssl = {
key = "/var/lib/prosody/auth.video.tolerate.ru.key";
certificate = "/var/lib/prosody/auth.video.tolerate.ru.crt";
}