webRTC_messenger

1

Описание

Языки

  • PHP49,1%
  • Blade29,6%
  • JavaScript20,4%
  • Dockerfile0,9%
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
2 месяца назад
README.md

WebRTC Мессенджер на Laravel

Мессенджер с текстовым чатом и голосовыми/видео звонками через WebRTC. Всё работает в Docker.

Стек

  • Laravel 11 — бэкенд
  • Laravel Reverb — WebSocket (сигналинг для звонков и доставка сообщений в реальном времени)
  • WebRTC — звонки (бесплатно, без сторонних сервисов; используется бесплатный STUN Google)
  • Docker — приложение, Nginx, MySQL, Redis, Reverb, queue, scheduler

Запуск (всё в Docker)

  1. Клонируйте репозиторий и перейдите в каталог:

  2. Создайте

    .env
    из примера:

    (В Linux/macOS:

    cp .env.example .env
    )

  3. Запустите контейнеры:

  4. Установите зависимости Laravel (обязательно перед key:generate и migrate):

    Затем сгенерируйте ключ приложения:

  5. Выполните миграции:

  6. Откройте в браузере: http://localhost:8004

    Reverb (WebSocket) доступен на порту 19234 — для чата и звонков фронтенд подключается к нему сам (через конфиг в

    .env
    :
    REVERB_CLIENT_HOST
    ,
    REVERB_CLIENT_PORT
    ).

Как пользоваться

  1. Зарегистрируйте двух пользователей (разные браузеры или режим инкогнито).
  2. Войдите под первым, нажмите «Новый диалог» и выберите второго пользователя.
  3. Пишите сообщения — они доставляются в реальном времени через Reverb.
  4. Нажмите «Позвонить» в шапке чата — у второго пользователя откроется звонок, после принятия (авто-ответ по приходу offer) начнётся видео/аудио по WebRTC.

Порты

СервисПорт на хосте
Сайт8004
Reverb19234
MySQL34107
Redis64123

Переменные окружения (.env)

  • REVERB_CLIENT_HOST
    — хост, с которого браузер подключается к Reverb (при запуске на сервере укажите домен, например
    spravki.fgoupsk.ru
    , иначе сообщения/звонки не заработают).
  • REVERB_CLIENT_PORT
    — порт (19234).
  • Остальные параметры БД, Redis и Reverb — как в
    .env.example
    .

Если сообщения и звонки не работают

  1. На сервере в

    .env
    укажите домен, а не localhost:

    (порт 19234 оставьте, схему — как у сайта:

    http
    или
    https
    )

  2. Проверьте, что контейнеры Reverb и queue запущены:

    Должны быть в состоянии Up:

    messenger-reverb
    ,
    messenger-queue
    . Если нет —
    docker compose up -d
    .

  3. Порт Reverb (19234) должен быть доступен снаружи — либо откройте его в файрволе, либо настройте прокси WebSocket в nginx (см.

    docker/nginx/reverb-proxy.conf.example
    ).

  4. Перезапустите контейнеры после смены

    .env
    :

    Затем обновите страницу в браузере (лучше с очисткой кэша или в режиме инкогнито).

Остановка

С сохранением данных БД (volume):

Готово: мессенджер на Laravel с чатом и WebRTC-звонками, полностью в Docker.