Bedrud Документация

Введение

Бэкенд Bedrud - это платформа для встреч в виде единого бинарного файла, написанная на Go 1.24+. Все зависимости - медиасервер, веб-фронтенд, TURN-сервер - встроены в один исполняемый файл.

Ключевые технологии

  • Основной фреймворк: Fiber v2 (маршрутизатор без аллокаций, API в стиле Express).
  • Слой базы данных: GORM с поддержкой SQLite (стандарт) и PostgreSQL (продакшен).
  • Медиадвижок: LiveKit (встроен как дочерний бинарный файл).
  • Система авторизации: Многоуровневая аутентификация с поддержкой JWT, OAuth2 (Google/GitHub/Twitter) и беспарольных FIDO2 Passkeys.
  • Встроенные статические ассеты: Использует пакет embed из Go 1.16+ для упаковки React-фронтенда (пре-рендеренные клиентские ассеты SSR).
  • Развёртывание: Интегрированный автоустановщик для Debian/Ubuntu с оркестрацией systemd и поддержкой ACME (Let’s Encrypt).

Почему такая архитектура?

Платформы WebRTC обычно запускают отдельные сервисы для сигнализации, TURN, веб-обслуживания и управления базой данных. Bedrud объединяет всё это в один бинарный файл путём:

  1. Извлечения бинарного файла медиасервера во время выполнения.
  2. Проксирования медиатрафика через основной HTTP(S)-порт.
  3. Автоматизации конфигурации на уровне ОС (SSL, systemd) через сам бинарный файл.

Высокоуровневая архитектура

Бэкенд следует стандартной многоуровневой архитектуре:

  1. Слой сервера (internal/server): Настраивает приложение Fiber, маршруты и middleware.
  2. Слой обработчиков (internal/handlers): Управляет HTTP-запросами и ответами.
  3. Слой репозитория (internal/repository): Обрабатывает запросы к базе данных с использованием GORM.
  4. Слой моделей (internal/models): Определяет таблицы базы данных и структуры Go.
  5. Слой сервисов/логики: Интегрирован в обработчики и репозитории для простоты, со специализированными пакетами вроде internal/auth и internal/livekit.

Главная точка входа

Приложение запускается из server/cmd/bedrud/main.go. Есть три основных режима:

  • run: Запускает полный сервер встреч.
  • livekit: Запускает только встроенный медиасервер.
  • install: Автоматически настраивает сервер на системах Debian/Ubuntu.

Разделы документации