webRTC_messenger
Описание
Языки
- PHP49,1%
- Blade29,6%
- JavaScript20,4%
- Dockerfile0,9%
WebRTC Мессенджер на Laravel
Мессенджер с текстовым чатом и голосовыми/видео звонками через WebRTC. Всё работает в Docker.
Стек
- Laravel 11 — бэкенд
- Laravel Reverb — WebSocket (сигналинг для звонков и доставка сообщений в реальном времени)
- WebRTC — звонки (бесплатно, без сторонних сервисов; используется бесплатный STUN Google)
- Docker — приложение, Nginx, MySQL, Redis, Reverb, queue, scheduler
Запуск (всё в Docker)
-
Клонируйте репозиторий и перейдите в каталог:
-
Создайте
из примера:.env(В Linux/macOS:
)cp .env.example .env -
Запустите контейнеры:
-
Установите зависимости Laravel (обязательно перед key:generate и migrate):
Затем сгенерируйте ключ приложения:
-
Выполните миграции:
-
Откройте в браузере: http://localhost:8004
Reverb (WebSocket) доступен на порту 19234 — для чата и звонков фронтенд подключается к нему сам (через конфиг в
:.env,REVERB_CLIENT_HOST).REVERB_CLIENT_PORT
Как пользоваться
- Зарегистрируйте двух пользователей (разные браузеры или режим инкогнито).
- Войдите под первым, нажмите «Новый диалог» и выберите второго пользователя.
- Пишите сообщения — они доставляются в реальном времени через Reverb.
- Нажмите «Позвонить» в шапке чата — у второго пользователя откроется звонок, после принятия (авто-ответ по приходу offer) начнётся видео/аудио по WebRTC.
Порты
| Сервис | Порт на хосте |
|---|---|
| Сайт | 8004 |
| Reverb | 19234 |
| MySQL | 34107 |
| Redis | 64123 |
Переменные окружения (.env)
— хост, с которого браузер подключается к Reverb (при запуске на сервере укажите домен, напримерREVERB_CLIENT_HOST, иначе сообщения/звонки не заработают).spravki.fgoupsk.ru— порт (19234).REVERB_CLIENT_PORT- Остальные параметры БД, Redis и Reverb — как в
..env.example
Если сообщения и звонки не работают
-
На сервере в
укажите домен, а не localhost:.env(порт 19234 оставьте, схему — как у сайта:
илиhttp)https -
Проверьте, что контейнеры Reverb и queue запущены:
Должны быть в состоянии Up:
,messenger-reverb. Если нет —messenger-queue.docker compose up -d -
Порт Reverb (19234) должен быть доступен снаружи — либо откройте его в файрволе, либо настройте прокси WebSocket в nginx (см.
).docker/nginx/reverb-proxy.conf.example -
Перезапустите контейнеры после смены
:.envЗатем обновите страницу в браузере (лучше с очисткой кэша или в режиме инкогнито).
Остановка
С сохранением данных БД (volume):
Готово: мессенджер на Laravel с чатом и WebRTC-звонками, полностью в Docker.