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

Полная справка по интерфейсу командной строки bedrud.

Общий формат

# Стиль подкоманд
bedrud <command> [flags]
 
# Стиль флагов
bedrud --livekit --config <path>
bedrud --run --config <path>

Команды

run / server

Запуск сервера конференций Bedrud с API, встроенным веб-фронтендом и встроенным LiveKit (если настроен).

bedrud run    [--config <path>]
bedrud server [--config <path>]
ФлагЗначение по умолчаниюОписание
--configПеременная окружения $CONFIG_PATH"config.yaml"Путь к YAML-файлу конфигурации Bedrud

Поведение:

  • Загружает конфигурацию из указанного пути или по умолчанию
  • Запускает встроенный LiveKit, если настроен внутренний режим
  • Инициализирует базу данных SQLite/PostgreSQL и выполняет миграции
  • Создаёт Fiber HTTP-сервер со всеми маршрутами API
  • Обслуживает встроенный React-фронтенд
  • Поддерживает ACME (Let’s Encrypt), самоподписанный TLS, ручной TLS или обычный HTTP
  • Корректное завершение при SIGTERM/SIGINT

Реализация: server/internal/server/server.go


--livekit

Запуск только встроенного медиасервера LiveKit. Извлекает бинарный файл из Go embed во временную директорию.

bedrud --livekit --config <path>
ФлагПо умолчаниюОписание
--config(обязательный)Путь к YAML-файлу конфигурации LiveKit

Используется: init-сервисом livekit, созданным командой bedrud install

Реализация: server/internal/livekit/server.go


--run

Псевдоним для bedrud run с аналогичным поведением флага --config. Используется init-сервисом bedrud.

bedrud --run --config <path>

install

Установка Bedrud на систему Debian/Linux. Создаёт init-сервисы (systemd, OpenRC или SysV init — автоопределение), файлы конфигурации, директории и TLS-сертификаты.

bedrud install [flags]
ФлагЗначение по умолчаниюОписание
--tlsfalseВключить HTTPS (аналог --self-signed)
--self-signedfalseСгенерировать самоподписанный TLS-сертификат
--no-tlsfalseПолностью отключить TLS (обычный HTTP). Переопределяет --tls и --self-signed
--ipавтоопределениеПереопределить автоматически определённый IP-адрес сервера
--domain""Имя домена для Let’s Encrypt или самоподписанного сертификата
--email""Email для регистрации Let’s Encrypt
--port"443" (TLS) / "8090" (HTTP)Переопределить порт прослушивания
--cert""Путь к существующему файлу сертификата PEM
--key""Путь к существующему файлу закрытого ключа PEM
--lk-port"7880"Переопределить порт API/WebSocket LiveKit
--lk-tcp-port"7881"Переопределить порт RTC TCP LiveKit
--lk-udp-port"7882"Переопределить порт RTC UDP LiveKit
--freshfalseУдалить существующую установку перед установкой
--behind-proxyfalseСервер находится за CDN/обратным прокси (Cloudflare, nginx)
--external-livekit""URL полностью внешнего сервера LiveKit (на другой машине)
--livekit-domain""Отдельный домен для локального сервера LiveKit (в обход CDN)

Что он делает:

  1. Останавливает и удаляет предыдущую установку, если указан --fresh
  2. Запрашивает IP, домен, email, режим TLS (в неинтерактивном режиме, если флаги не указаны)
  3. Создаёт директории: /etc/bedrud, /var/lib/bedrud, /var/lib/bedrud/certs, /var/log/bedrud
  4. Копирует бинарный файл в /usr/local/bin/bedrud
  5. Генерирует конфигурацию сервера Bedrud в /etc/bedrud/config.yaml
  6. Генерирует конфигурацию медиасервера LiveKit в /etc/bedrud/livekit.yaml
  7. Генерирует самоподписанные сертификаты в /etc/bedrud/cert.pem + /etc/bedrud/key.pem (если TLS включён и нет пользовательских сертификатов)
  8. Создаёт init-сервис LiveKit (если не используется внешний LiveKit)
  9. Создаёт init-сервис Bedrud
  10. Выполняет systemctl daemon-reload (если systemd), включает и запускает сервисы через обнаруженную систему инициализации
  11. Выводит URL доступа

Параметры TLS:

  • --domain + --email → ACME (Let’s Encrypt)
  • --self-signed или --tls → самоподписанный сертификат
  • --cert + --key → пользовательские сертификаты
  • --no-tls → только обычный HTTP

Топология LiveKit:

  • По умолчанию (встроенный): LiveKit работает локально, проксируется через Bedrud по адресу /livekit
  • --livekit-domain: LiveKit работает локально, но клиенты подключаются напрямую через собственный домен
  • --external-livekit: Локальный LiveKit не запускается; подключение к удалённому серверу

Реализация: server/internal/install/linux.go

Связанная документация: Руководство по установкеРуководство по развёртываниюЛогика развёртывания backend


uninstall

Удалить Bedrud из системы.

bedrud uninstall

Удаляет:

  • Останавливает и отключает сервисы во всех системах инициализации: bedrud, livekit
  • Удаляет сервис-файлы для systemd, OpenRC и SysV init
  • Удаляет бинарные файлы: /usr/local/bin/bedrud, /tmp/bedrud, /tmp/bedrud-livekit-server
  • Удаляет директории: /etc/bedrud, /var/lib/bedrud, /var/log/bedrud
  • Удаляет системного пользователя: bedrud

Реализация: server/internal/install/ (linux.go, init.go, sysv.go, openrc.go)

Связанная документация: Руководство по установке - Удаление


user

Управление пользователями в базе данных Bedrud.

bedrud user [--config <path>] <subcommand> [flags]
Глобальный флагПо умолчаниюОписание
--config/etc/bedrud/config.yamlПуть к файлу конфигурации Bedrud (для поиска базы данных)

create

Создать нового пользователя с локальной аутентификацией (пароль хешируется bcrypt).

bedrud user [--config <path>] create --email <email> --password <password> --name <name> [--admin]

Обязательные флаги:

  • --email: Email пользователя
  • --password: Пароль пользователя, хешируется bcrypt перед сохранением
  • --name: Отображаемое имя пользователя

Опциональные флаги:

  • --admin: Создать пользователя как superadmin

Уровень доступа: По умолчанию user. Используйте --admin для создания superadmin одной командой.

delete

Удалить пользователя по email.

bedrud user [--config <path>] delete --email <email>

promote

Устанавливает роль пользователя, заменяя массив доступов. По умолчанию: superadmin.

bedrud user [--config <path>] promote --email <email> [--role <role>]
ФлагПо умолчаниюОписание
--rolesuperadminЦелевая роль: superadmin, admin, moderator, user, guest

Примеры:

# Предоставить superadmin (по умолчанию)
bedrud user promote --email admin@example.com
 
# Предоставить admin
bedrud user promote --email admin@example.com --role admin
 
# Предоставить moderator
bedrud user promote --email mod@example.com --role moderator

Каждая роль соответствует определённому массиву доступов:

  • superadmin['superadmin', 'user']
  • admin['admin', 'user']
  • moderator['moderator', 'user']
  • user['user']
  • guest['guest']

demote

Удаляет определенную роль у пользователя. По умолчанию: superadmin.

bedrud user [--config <path>] demote --email <email> [--role <role>]
ФлагПо умолчаниюОписание
--rolesuperadminУдаляемая роль: superadmin, admin, moderator

Если после удаления у пользователя не осталось ролей, доступ user добавляется автоматически.

Реализация: server/internal/usercli/usercli.go


cert

Управление TLS-сертификатами. Актуально только при использовании самоподписанных сертификатов (созданных bedrud install --self-signed).

bedrud cert [--config <path>] <subcommand>
Глобальный флагПо умолчаниюОписание
--config/etc/bedrud/config.yamlПуть к файлу конфигурации Bedrud
--algo""Алгоритм ключа: ed25519, ecdsa256, rsa2048, rsa4096 (по умолчанию: определить из существующего сертификата)

renew

Принудительное обновление самоподписанного TLS-сертификата. Определяет алгоритм ключа существующего сертификата и воссоздаёт с тем же типом (по умолчанию: Ed25519). Новый сертификат действителен в течение 1825 дней (~5 лет).

bedrud cert renew [--config <path>]

Сервер также автоматически обновляет сертификат ежедневно через встроенный планировщик, когда до истечения срока действия остаётся менее 30 дней. Эта команда предназначена для ручного или внепланового обновления.

SANs: Берутся из конфигурации сервера — domain (если задан), а также localhost, 127.0.0.1 и ::1.

Реализация: server/internal/utils/tls.go (RenewSelfSignedCert)

info

Показать метаданные TLS-сертификата в stdout.

bedrud cert info [--config <path>]

Поля вывода: subject, issuer, notBefore, notAfter, daysRemaining, status (valid/expiring/error), SANs.

Реализация: server/internal/utils/tls.go (ValidateTLSCertPair)


help

Показать справку по использованию со всеми командами и флагами.

bedrud help

Также вызывается, когда аргументы не указаны. Отображает вывод printUsage().


Примеры

Базовый запуск сервера для разработки

# Запуск с config.yaml по умолчанию в текущей директории
bedrud run
 
# Запуск с пользовательской конфигурацией
bedrud run --config /path/to/config.yaml
 
# Через переменную окружения (резервный вариант)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

Интерактивная установка (запрашивает входные данные)

bedrud install

Неинтерактивная установка с Let’s Encrypt

bedrud install --domain example.com --email admin@example.com

Самоподписанный TLS с пользовательскими портами

bedrud install --self-signed --port 8443 --lk-port 7880 --lk-tcp-port 7881 --lk-udp-port 7882

За CDN с отдельным доменом LiveKit

bedrud install --domain bedrud.example.com --email admin@example.com --livekit-domain lk.example.com --behind-proxy

Чистая переустановка

bedrud install --fresh --domain example.com --email admin@example.com

Управление пользователями

# Создание первого пользователя-администратора (одной командой)
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User" --admin
 
# Или создать обычного пользователя, затем повысить
bedrud user [--config <path>] create --email admin@example.com --password secret123 --name "Admin User"
bedrud user [--config <path>] promote --email admin@example.com
 
# Создание обычного пользователя
bedrud user [--config <path>] create --email user@example.com --password pass456 --name "Regular User"
 
# Удаление пользователя
bedrud user [--config <path>] delete --email user@example.com
 
# Отзыв прав администратора
bedrud user [--config <path>] demote --email admin@example.com

Связанная документация