Bedrud Belgeler

Giriş

Bedrud arka ucu, Go 1.24+ ile yazılmış tek ikili (single-binary) toplantı platformudur. Medya sunucusu, web ön ucu, TURN sunucusu gibi tüm bağımlılıklar tek bir çalıştırılabilir dosyaya gömülüdür.

Temel Teknolojiler

  • Çekirdek Framework: Fiber v2 (Sıfır tahsisatlı yönlendirici, Express benzeri API).
  • Veritabanı Katmanı: SQLite (standart) ve PostgreSQL (üretim) desteğiyle GORM.
  • Medya Motoru: LiveKit (Eş ikili olarak gömülü).
  • Kimlik Doğrulama Sistemi: JWT, OAuth2 (Google/GitHub/Twitter) ve parolasız FIDO2 Passkey destekli çok katmanlı kimlik doğrulama.
  • Gömülü Statik Dosyalar: Go 1.16+ embed paketi kullanılarak React ön ucunun (SSR ön renderlı istemci dosyaları) paketlenmesi.
  • Dağıtım: systemd orkestrasyonu ve ACME (Let’s Encrypt) desteğiyle entegre Debian/Ubuntu otomatik kurucu.

Neden Bu Mimari?

WebRTC platformları genellikle sinyalleşme, TURN, web sunucusu ve veritabanı yönetimi için ayrı servisler çalıştırır. Bedrud, bunları tek bir ikili dosyada birleştirir:

  1. Medya sunucusu ikili dosyasını çalışma zamanında çıkararak.
  2. Medya trafiğini ana HTTP(S) portu üzerinden proxyleyerek.
  3. İşletim sistemi düzeyindeki yapılandırmayı (SSL, systemd) ikili dosya kendisi aracılığıyla otomatikleştirerek.

Üst Düzey Mimari

Arka uç, standart katmanlı bir mimari izler:

  1. Sunucu Katmanı (internal/server): Fiber uygulamasını, rotaları ve ara katmanı (middleware) kurar.
  2. İşleyici Katmanı (internal/handlers): HTTP isteklerini ve yanıtlarını yönetir.
  3. Depo Katmanı (internal/repository): GORM kullanarak veritabanı sorgularını gerçekleştirir.
  4. Model Katmanı (internal/models): Veritabanı tablolarını ve Go yapılarını tanımlar.
  5. Hizmet/Mantık Katmanı: Basitlik için işleyicilere ve depolara entegre edilmiştir; internal/auth ve internal/livekit gibi özelleşmiş paketler bulunur.

Ana Giriş Noktası

Uygulama server/cmd/bedrud/main.go dosyasından başlar. Üç ana moda sahiptir:

  • run: Tam toplantı sunucusunu başlatır.
  • livekit: Yalnızca gömülü medya sunucusunu başlatır.
  • install: Debian/Ubuntu sistemlerinde sunucuyu otomatik olarak kurar.

Dokümantasyon Bölümleri