Флаг: English English

Jitsi Meet (Docker) за Nginx Reverse Proxy

Опубликовано 05.11.2025

Как установить Jitsi Meet (Docker) за Nginx Reverse Proxy

В предыдущей статье мы развернули базовый сервер Jitsi Meet с помощью Docker.
Это отличный способ быстро запустить видеоконференции, но в продакшне сервер Jitsi часто должен работать на том же хосте, где уже запущены другие веб-приложения.
Чтобы всё жило мирно, нужно спрятать Jitsi за Nginx reverse proxy.
Nginx возьмёт на себя SSL, порты 80/443 и будет проксировать запросы к контейнерам Jitsi, работающим на внутренних портах.


Архитектура

Целевая схема выглядит так:

  1. Пользовательhttps://meet.your-domain.comNginx (порт 443)
  2. Nginxhttp://192.168.1.131:8400Jitsi Web Container (веб-интерфейс и WebSocket)
  3. Пользователь → (порт 10000/UDP) → Jitsi JVB Container (видео/аудио поток)

Важно: Nginx проксирует только веб-трафик.
Медиа (видео и звук по WebRTC) идёт напрямую на Jitsi Videobridge по порту 10000/UDP.


Шаг 1. Настройка Jitsi Meet (.env)

Перед настройкой прокси нужно сообщить Jitsi, что теперь HTTPS и сертификаты обрабатываются внешним Nginx.

Откройте .env и установите:

DISABLE_HTTPS=1
HTTP_PORT=8400
HTTPS_PORT=8443
ENABLE_LETSENCRYPT=0
PUBLIC_URL=https://meet.your-domain.com/

Теперь перезапустите Jitsi:

cd /path/to/docker-jitsi-meet
docker compose down
docker compose up -d

Проверьте, что контейнер web слушает порт 8400:

docker ps | grep web

Шаг 2. Настройка Nginx Reverse Proxy

Создайте конфигурацию:

sudo nano /etc/nginx/sites-available/meet.your-domain.com.conf

Добавьте:

upstream jitsi {
    server 192.168.1.131:8400;
}

server {
    listen 80;
    server_name meet.your-domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name meet.your-domain.com;

    ssl_certificate /etc/letsencrypt/live/meet.your-domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/meet.your-domain.com/privkey.pem;
    include /etc/letsencrypt/options-ssl-nginx.conf;
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;

    client_max_body_size 0;
    proxy_buffers 8 32k;
    proxy_buffer_size 64k;

    location / {
        proxy_pass http://jitsi;
        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;
        proxy_http_version 1.1;
        proxy_read_timeout 300s;
    }

    location /xmpp-websocket {
        proxy_pass http://jitsi;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400s;
    }

    location ~ ^/colibri-ws/ {
        proxy_pass http://jitsi;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 86400s;
    }

    location /http-bind {
        proxy_pass http://jitsi;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_read_timeout 60s;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|woff2?|ttf|svg|eot)$ {
        proxy_pass http://jitsi;
        proxy_cache off;
        expires 1y;
        add_header Cache-Control "public, immutable";
    }
}

Активируйте конфиг:

sudo ln -s /etc/nginx/sites-available/meet.your-domain.com.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Шаг 3. Настройка Firewall

Медиа-трафик Jitsi проходит по UDP, поэтому порт 10000 должен быть доступен напрямую.

Пример проброса портов

External: 10000/UDP → Internal: 192.168.1.131:10000/UDP

Для UFW

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 10000/udp
sudo ufw reload

Если этот порт не открыт — участники конференции не смогут подключиться к видео и звуку.


Шаг 4. Проверка авторизации (если включена)

Если в .env включено:

ENABLE_AUTH=1
AUTH_TYPE=internal

Создайте пользователей:

docker compose exec prosody prosodyctl register user1 meet.jitsi StrongPassword

Авторизация будет работать без изменений, так как Nginx просто проксирует XMPP-трафик.


Итог

Теперь ваш Jitsi Meet работает за Nginx reverse proxy:

  1. Jitsi (.env) знает, что HTTPS отключен и слушает порт 8400.
  2. Nginx (.conf) обслуживает 443, проксирует /, /xmpp-websocket, /colibri-ws и /http-bind.
  3. Firewall пробрасывает 10000/UDP напрямую на JVB.

Можно размещать Jitsi рядом с другими сайтами и сервисами, а Nginx становится единым шлюзом в интернет.

Отзывы по теме

Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!

christ_media · N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram

Опытный покупатель

24.09.2025 · ⭐ 5/5

Была задача наладить работу n8n, redis и базы данных. Заказывал раньше у другого исполнителя, постоянно все ломалось. Заказал у Михаила, на следующий же день все стало работать быстро, как часы!

Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя сервера). Так что мой совет в итоге - обращайтесь к профессионалам, это выйдет дешевле =) Спасибо Михаилу за профессионализм.

ladohinpy · N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram

25.08.2025 · ⭐ 5/5

Быстрое решение проблемы, всем рекомендую Михаила в качестве исполнителя! Пробовал собрать аналогичную конфигурацию самостоятельно и через советы нейросетей, в результате куча потраченных сил и средств (из-за простоя сервера). Так что мой совет в итоге - обращайтесь к профессионалам, это выйдет дешевле =) Спасибо Михаилу за профессионализм.

Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.

NadoBy

NadoBy · N8n установка на ваш vps сервер. Настройка n8n, docker, ai, telegram

Освоившийся покупатель

12.08.2025 · ⭐ 5/5

Михаил выполнил настройку очередного VPS. Быстро, профессионально обходя определенные ограничение хостинг провайдеров.

Спасибо Михаилу за отзывчивость. Созвонились, объяснил как сделать самому. Обращаюсь уже второй раз, все супер и оперативно.

kireevk

kireevk · Консультация по nginx proxy manager и portainer

Освоившийся покупатель

25.02.2025 · ⭐ 5/5

Спасибо Михаилу за отзывчивость. Созвонились, объяснил как сделать самому. Обращаюсь уже второй раз, все супер и оперативно.

Нужна помощь?

Свяжись со мной и я помогу решить проблему

Похожие посты