Быстрое решение проблемы с видео в Firefox для BigBlueButton

Дата: 2026-01-08
Проблема: Видео не отображается в Firefox на хостинг-сервере

Быстрое решение

Автоматическое исправление (рекомендуется)

Используйте скрипт для автоматического применения исправлений:

cd /home/cdto/DENKART
./scripts/fix-bbb-firefox-video.sh [BBB-CONT22-1] [school.cdto.life]

Параметры:
- Первый параметр: имя контейнера (по умолчанию: BBB-CONT22-1)
- Второй параметр: домен (по умолчанию: school.cdto.life)

Ручное исправление

Если скрипт не подходит, выполните следующие шаги:

1. Обновить конфигурацию WebRTC SFU

lxc exec BBB-CONT22-1 -- bash -c "cat > /etc/bigbluebutton/nginx/webrtc-sfu.nginx << 'EOF'
location /bbb-webrtc-sfu {
    proxy_pass http://127.0.0.1:3008;
    proxy_http_version 1.1;

    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 заголовки (критично для Firefox)
    proxy_set_header Upgrade \$http_upgrade;
    proxy_set_header Connection \"upgrade\";

    proxy_buffering off;
    proxy_cache off;

    proxy_connect_timeout 7d;
    proxy_send_timeout 7d;
    proxy_read_timeout 7d;

    proxy_set_header X-Forwarded-Host \$host;
    proxy_set_header X-Forwarded-Port \$server_port;

    # CORS заголовки для Firefox
    add_header Access-Control-Allow-Origin \"*\" always;
    add_header Access-Control-Allow-Methods \"GET, POST, OPTIONS\" always;
    add_header Access-Control-Allow-Headers \"Content-Type, Authorization, X-Requested-With\" always;
}
EOF"

2. Добавить CORS и CSP заголовки в основную конфигурацию

Добавьте в блок server конфигурации /etc/bigbluebutton/nginx/bigbluebutton:

# CORS заголовки для Firefox WebRTC
add_header Access-Control-Allow-Origin "*" always;
add_header Access-Control-Allow-Methods "GET, POST, OPTIONS" always;
add_header Access-Control-Allow-Headers "Content-Type, Authorization, X-Requested-With" always;

# Content Security Policy для WebRTC
add_header Content-Security-Policy "default-src 'self' 'unsafe-inline' 'unsafe-eval' data: blob: https: wss: ws:; media-src 'self' blob: https:; connect-src 'self' https: wss: ws:;" always;

3. Убедиться, что location /bbb-webrtc-sfu существует

Проверьте наличие блока location /bbb-webrtc-sfu в основной конфигурации. Если его нет, добавьте его (см. полную документацию).

4. Перезапустить сервисы

lxc exec BBB-CONT22-1 -- nginx -t
lxc exec BBB-CONT22-1 -- systemctl reload nginx
lxc exec BBB-CONT22-1 -- systemctl restart bbb-webrtc-sfu

Проверка

  1. Откройте Firefox на хостинг-сервере
  2. Откройте консоль разработчика (F12)
  3. Перейдите на вкладку "Network"
  4. Откройте BigBlueButton
  5. Проверьте:
  6. Запросы к /bbb-webrtc-sfu возвращают статус 101
  7. Нет ошибок CORS
  8. WebSocket соединения устанавливаются

Диагностика

Проверка логов

# Логи bbb-webrtc-sfu
lxc exec BBB-CONT22-1 -- journalctl -u bbb-webrtc-sfu -f

# Логи Nginx
lxc exec BBB-CONT22-1 -- tail -f /var/log/nginx/error.log

Проверка WebRTC в Firefox

  1. В адресной строке Firefox введите: about:webrtc
  2. Проверьте активные WebRTC соединения
  3. Убедитесь, что используются правильные ICE candidates

Проверка портов

# Проверить проброс портов
lxc config show BBB-CONT22-1 | grep -A 10 devices

# Проверить открытые порты
lxc exec BBB-CONT22-1 -- netstat -tuln | grep -E "16384|3008|8090"

Дополнительные проверки

  • [ ] Разрешения камеры/микрофона в Firefox
  • [ ] Отключены блокирующие расширения
  • [ ] SSL сертификат валиден
  • [ ] Порты WebRTC (16384-32768) открыты
  • [ ] Версия Firefox актуальна

Полная документация

Для подробной информации см.:
- /home/cdto/DENKART/docs/operations/bbb-firefox-video-issue.md


Статус: Готово к применению