Bedrud использует YAML-файлы конфигурации как для основного сервера, так и для встроенного медиасервера LiveKit.
См. также: Быстрый старт | Установка | Руководство по развёртыванию | Руководство по Docker
Минимальная конфигурация для production
Конфигурация по умолчанию подходит для разработки. Для production измените следующие значения в /etc/bedrud/config.yaml:
auth:
jwtSecret: "change-to-random-string-32-chars"
sessionSecret: "change-to-another-random-string"Перезапустите после изменений:
sudo systemctl restart bedrud livekitПолная справка ниже.
Конфигурация сервера
Расположение: server/config.yaml (разработка) или /etc/bedrud/config.yaml (production)
Полная справка
server:
port: 8090 # HTTP порт
host: "localhost" # Адрес привязки
database:
type: "sqlite" # Тип базы данных: sqlite или postgres
path: "data.db" # Путь к файлу базы данных SQLite
logger:
level: "debug" # Уровень логирования: debug, info, warn, error
outputPath: "" # Путь к файлу логов (пусто = stdout)
livekit:
host: "http://localhost:8090/livekit" # Внешний URL LiveKit
internalHost: "http://127.0.0.1:7880" # Внутренний URL LiveKit
apiKey: "devkey" # API-ключ LiveKit
apiSecret: "devsecret" # API-секрет LiveKit
auth:
jwtSecret: "your-jwt-secret" # Секрет для подписи JWT-токенов
tokenDuration: 24 # Срок действия токена в часах
sessionSecret: "your-session-secret" # Секрет для cookie сессий
frontendURL: "http://localhost:8090" # URL фронтенда (для редиректов OAuth)
# Провайдеры OAuth (опционально)
google:
clientId: ""
clientSecret: ""
github:
clientId: ""
clientSecret: ""
twitter:
clientKey: ""
clientSecret: ""
cors:
allowedOrigins: "http://localhost:8090,http://localhost:3000" # Через запятую
allowedHeaders: "Origin, Content-Type, Accept, Authorization"
allowedMethods: "GET, POST, PUT, DELETE, OPTIONS"
allowCredentials: trueОсновные настройки
База данных
По умолчанию Bedrud использует SQLite с файлом по указанному пути path. Для production с высокой параллельностью переключитесь на PostgreSQL, указав строку подключения. При использовании PostgreSQL поле path содержит строку подключения, а не путь к файлу:
database:
type: "postgres"
path: "postgres://user:password@localhost:5432/bedrud?sslmode=disable"Аутентификация
jwtSecret используется для подписи access- и refresh-токенов. Измените его со значения по умолчанию в production.
Провайдеры OAuth опциональны. Если вы их не настроите, кнопки входа через соцсети не появятся в интерфейсе. Для каждого провайдера необходимо зарегистрировать OAuth-приложение в соответствующем сервисе и указать client ID и секрет.
CORS
Строка allowedOrigins (через запятую) должна содержать URL, по которому обслуживается фронтенд. В разработке это http://localhost:3000. В production укажите ваш домен (например, https://meet.example.com).
Конфигурация LiveKit
Расположение: server/config/livekit.yaml (разработка) или /etc/bedrud/livekit.yaml (production)
port: 7880 # HTTP/WebSocket порт LiveKit
rtc:
port_range_start: 50000 # Начало диапазона UDP-портов
port_range_end: 60000 # Конец диапазона UDP-портов
use_external_ip: true # Использовать внешний IP для RTC
turn:
enabled: true
domain: "localhost"
tls_port: 5349
udp_port: 3478
keys:
devkey: "devsecret" # Должно совпадать с конфигурацией сервера
logging:
level: info
room:
auto_create: true # Автосоздание комнат при подключении участников
empty_timeout: 60 # Секунды до удаления пустой комнаты
departure_timeout: 60 # Секунды хранения комнаты после ухода всех участников
max_participants: 20 # Максимум участников в комнате (0 = без ограничений)
enable_remote_unmute: true # Разрешить серверное снятие мута у участниковЗначения keys в livekit.yaml должны совпадать с livekit.apiKey и livekit.apiSecret в файле config.yaml сервера.
Диапазон портов RTC
LiveKit использует UDP-порты для медиапотоков. Диапазон по умолчанию 50000-60000 подходит для большинства конфигураций. Если сервер находится за файрволом, убедитесь, что эти порты открыты.
См. WebRTC-подключение для архитектуры и устранения неполадок.
Сервер TURN
Встроенный сервер TURN ретранслирует медиа для клиентов за строгими NAT или корпоративными файрволами. Он включён по умолчанию на портах 3478 (UDP) и 5349 (TLS).
TURN - это ретрансляция последнего рубежа - большинство клиентов (~80%) подключаются напрямую через UDP и никогда его не используют. Когда TURN активируется, сервер несёт всю нагрузку ретранслируемого медиатрафика.
Требование TLS: TURN/TLS (порт 5349) требует действительный TLS-сертификат. Для production установите turn.tls_port: 443 и укажите cert_file/key_file для вашего сертификата, либо разместите Layer 4 балансировщик нагрузки спереди с external_tls: true.
См. Руководство по серверу TURN для архитектуры, деталей конфигурации, расчёта пропускной способности и устранения неполадок.
Настройки комнат
Секция room: управляет поведением комнат конференций:
auto_create- Автоматически создавать комнаты при подключении участников (по умолчанию:true)empty_timeout- Секунды до удаления комнаты, в которую никто не подключился (по умолчанию:60)departure_timeout- Секунды хранения комнаты активной после ухода всех участников (по умолчанию:60)max_participants- Максимум участников в комнате. Установите0для снятия ограничений (по умолчанию:20)enable_remote_unmute- Разрешить серверное управление мутом участников (по умолчанию:true)
Настройка для различных сценариев:
- Командные совещания:
max_participants: 10-20 - Большие вебинары:
max_participants: 100(или0без ограничений) - Серверы с ограниченными ресурсами: Уменьшите
max_participantsдля снижения нагрузки на CPU/память
Переменные окружения
Значения конфигурации можно переопределить через переменные окружения. Именование следует соглашению префиксов по секциям:
Для развёртывания в Docker см. Руководство по Docker.
export SERVER_PORT=8090
export DB_PATH=/var/lib/bedrud/bedrud.db
export JWT_SECRET=production-secret
export LIVEKIT_HOST=http://localhost:8090/livekit
export LIVEKIT_API_KEY=prodkey
export LIVEKIT_API_SECRET=prodsecretПолная справка по переменным окружения
| Переменная | Путь в YAML | Описание |
|---|---|---|
SERVER_PORT | server.port | HTTP-порт прослушивания |
SERVER_ENABLE_TLS | server.enableTLS | Включить HTTPS (true/false) |
SERVER_CERT_FILE | server.certFile | Путь к TLS-сертификату |
SERVER_KEY_FILE | server.keyFile | Путь к закрытому ключу TLS |
SERVER_DOMAIN | server.domain | Имя домена |
SERVER_EMAIL | server.email | Email для Let’s Encrypt |
SERVER_USE_ACME | server.useACME | Включить автоматический Let’s Encrypt (true/false) |
SERVER_TRUSTED_PROXIES | server.trustedProxies | IP доверенных прокси через запятую |
SERVER_PROXY_HEADER | server.proxyHeader | Заголовок для определения IP клиента (например, X-Forwarded-For) |
DB_HOST | database.host | Хост базы данных (PostgreSQL) |
DB_PORT | database.port | Порт базы данных |
DB_USER | database.user | Пользователь базы данных |
DB_PASSWORD | database.password | Пароль базы данных |
DB_NAME | database.dbname | Имя базы данных |
DB_TYPE | database.type | sqlite или postgres |
DB_PATH | database.path | Путь к файлу SQLite или строка подключения PostgreSQL |
LIVEKIT_HOST | livekit.host | Внешний URL LiveKit |
LIVEKIT_INTERNAL_HOST | livekit.internalHost | Внутренний URL LiveKit |
LIVEKIT_API_KEY | livekit.apiKey | API-ключ LiveKit |
LIVEKIT_API_SECRET | livekit.apiSecret | API-секрет LiveKit |
JWT_SECRET | auth.jwtSecret | Секрет для подписи JWT-токенов |
AUTH_FRONTEND_URL | auth.frontendURL | URL фронтенда для редиректов OAuth |
CORS_ALLOWED_ORIGINS | cors.allowedOrigins | Разрешённые источники через запятую |
CORS_ALLOWED_HEADERS | cors.allowedHeaders | Разрешённые заголовки запросов |
CORS_ALLOWED_METHODS | cors.allowedMethods | Разрешённые HTTP-методы |
CORS_ALLOW_CREDENTIALS | cors.allowCredentials | Разрешить учётные данные (true/false) |
CORS_EXPOSE_HEADERS | cors.exposeHeaders | Заголовки, доступные браузеру |
CORS_MAX_AGE | cors.maxAge | Время кэширования preflight-запросов в секундах |
Чек-лист для production
- Измените
jwtSecretиsessionSecretна надёжные случайные значения - Установите
logger.levelвinfoилиwarn - Настройте TLS (через установщик или обратный прокси)
- Установите
cors.allowedOriginsна ваш production-домен - Настройте провайдеры OAuth при необходимости
- Откройте диапазон портов RTC LiveKit в файрволе
- Настройте ротацию логов для
/var/log/bedrud/
Полная инструкция по настройке production см. в Руководстве по развёртыванию.