Введение

Данная инструкция описывает пошаговый процесс создания и настройки виртуальной машины (ВМ) в Proxmox VE для запуска высокопроизводительного сервера видеосвязи на базе Nextcloud Talk. В инструкции учтено, что Nextcloud уже работает на отдельной ВМ, а новая ВМ будет установлена на Debian 12.


Шаг 1. Подготовка Proxmox VE

  1. Убедитесь, что Proxmox VE установлен и обновлен до последней версии.
  2. Проверьте, что сервер имеет достаточные ресурсы:
    • CPU с поддержкой виртуализации (VT-x/AMD-V)
    • Не менее 16 ГБ оперативной памяти (рекомендуется 32 ГБ и выше для нагрузки видеосвязи)
    • Быстрый SSD для хранения данных
    • Стабильное сетевое подключение с низкой задержкой

Шаг 2. Создание виртуальной машины

  1. В веб-интерфейсе Proxmox нажмите кнопку Create VM.
  2. Введите имя виртуальной машины, например, nextcloud-video-server.
  3. На вкладке OS выберите ISO-образ Debian 12.
  4. На вкладке System оставьте настройки по умолчанию, но включите аппаратную виртуализацию (если доступно).
  5. На вкладке Hard Disk:
    • Тип диска: VirtIO Block
    • Размер: минимум 100 ГБ (зависит от объема данных и логов видеосвязи)
  6. На вкладке CPU:
    • Количество ядер: минимум 4 (рекомендуется 8 и выше для высокой нагрузки)
    • Тип CPU: host (для лучшей производительности)
  7. На вкладке Memory:
    • Оперативная память: минимум 8 ГБ (рекомендуется 16 ГБ и выше)
  8. На вкладке Network:
    • Модель: VirtIO (для высокой производительности)

Шаг 3. Установка Debian 12

  1. Запустите ВМ и подключитесь к консоли через веб-интерфейс Proxmox.
  2. Установите Debian 12 с минимальным набором пакетов.
  3. Выполните базовое обновление системы:sudo apt update && sudo apt upgrade -y
  4. Установите необходимые пакеты для работы сервера видеосвязи:sudo apt install -y curl gnupg2 sudo

Шаг 4. Установка и настройка сервера видеосвязи для Nextcloud Talk

Nextcloud Talk использует серверную часть на базе Janus WebRTC Gateway или Jitsi для видеосвязи. В данном примере рассмотрим установку Jitsi Meet как отдельного сервера видеосвязи, интегрируемого с Nextcloud.

Установка Jitsi Meet на Debian 12

  1. Добавьте репозиторий 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
  2. Установите Jitsi Meet:sudo apt install -y jitsi-meet
  3. Во время установки укажите доменное имя сервера видеосвязи (например, video.example.com).
  4. Настройте SSL сертификаты (рекомендуется использовать Let’s Encrypt):sudo /usr/share/jitsi-meet/scripts/install-letsencrypt-cert.sh
  5. Проверьте, что Jitsi Meet работает, открыв https://video.example.com в браузере.

Шаг 5. Настройка DNS-записей для сервера видеосвязи

Перед установкой SSL-сертификата и запуском сервера убедитесь, что для домена сервера видеосвязи (например, video.example.com) созданы необходимые DNS-записи:

  1. Добавьте запись типа A, указывающую на IPv4-адрес вашего сервера.
  2. При наличии IPv6-адреса добавьте запись типа AAAA.
  3. Подождите некоторое время для распространения 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 или политик безопасности.

Что делать в этом случае:

  1. Проверьте правильность доменного имени. Убедитесь, что домен корректно зарегистрирован и DNS-записи настроены правильно.
  2. Проверьте, не блокирует ли CA выдачу сертификатов для вашей зоны. Некоторые CA могут ограничивать выдачу сертификатов для определённых доменов или зон.
  3. Попробуйте использовать другой центр сертификации. Например, переключитесь с ZeroSSL на Let’s Encrypt или наоборот:sudo bash /root/.acme.sh/acme.sh --set-default-ca --server letsencrypt
  4. Проверьте, не блокирует ли ваш домен или IP-адрес ограничения со стороны регуляторов или провайдеров. В России некоторые домены могут попадать под ограничения.
  5. Используйте DNS-валидацию (DNS-01 challenge). Вместо HTTP-валидации попробуйте получить сертификат через добавление TXT-записей в DNS. Это часто помогает обойти ограничения HTTP-валидации.
  6. Обратитесь в поддержку CA или регистратора домена. Возможно, потребуется уточнить причины блокировки.

Дополнительные ресурсы и ссылки:

Если хотите, могу помочь дополнить эту инструкцию примерами команд для переключения CA и настройки DNS-валидации.

Если вы используете ZeroSSL как CA по умолчанию в acme.sh, для регистрации аккаунта необходимо указать email и получить EAB (External Account Binding) креденшелы.

Как зарегистрировать email и получить EAB для ZeroSSL

  1. Зарегистрируйтесь на сайте ZeroSSL: https://app.zerossl.com/signup
  2. После регистрации войдите в личный кабинет и перейдите в раздел «API Keys» (https://app.zerossl.com/developer).
  3. Создайте новый API ключ (Access Key и Secret Key), которые понадобятся для EAB.
  4. В терминале экспортируйте переменные окружения с этими ключами:export ZERO_SSL_ACCESS_KEY="ваш_access_key" export ZERO_SSL_SECRET_KEY="ваш_secret_key"
  5. Зарегистрируйте аккаунт 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"
  6. После успешной регистрации можно запрашивать сертификаты: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
  1. Создайте или отредактируйте конфигурационный файл виртуального хоста, например /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>
  1. Замените IP-адрес 192.168.1.100 и порты на соответствующие вашему локальному серверу Jitsi Meet.
  2. Активируйте сайт и перезапустите Apache:
sudo a2ensite video.tolerate.ru.conf
sudo systemctl reload apache2
  1. Убедитесь, что порты 80 и 443 открыты и проброшены на роутере.
  2. Проверьте доступность сервера по 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";
    }

От alex

Обучаемый.