Bedrud Belgeler

Bedrud, hem ana sunucu hem de gömülü LiveKit medya sunucusu için YAML yapılandırma dosyaları kullanır.

Ayrıca bkz.: Hızlı Başlangıç | Kurulum | Dağıtım Kılavuzu | Docker Kılavuzu

Minimum Üretim Yapılandırması

Varsayılan yapılandırma geliştirme için çalışır. Üretim için /etc/bedrud/config.yaml dosyasındaki şu değerleri değiştirin:

auth:
  jwtSecret: "change-to-random-string-32-chars"
  sessionSecret: "change-to-another-random-string"

Değişikliklerden sonra yeniden başlatın:

sudo systemctl restart bedrud livekit

Aşağıda tam referans.


Sunucu Yapılandırması

Konum: server/config.yaml (geliştirme) veya /etc/bedrud/config.yaml (üretim)

Tam Referans

server:
  port: 8090                    # HTTP bağlantı noktası
  host: "localhost"             # Bağlanma adresi
 
database:
  type: "sqlite"                # Veritabanı türü: sqlite veya postgres
  path: "data.db"               # SQLite veritabanı dosya yolu
 
logger:
  level: "debug"                # Günlük seviyesi: debug, info, warn, error
  outputPath: ""                # Günlük dosya yolu (boş = stdout)
 
livekit:
  host: "http://localhost:8090/livekit"  # Harici LiveKit URL'si
  internalHost: "http://127.0.0.1:7880"  # Dahili LiveKit URL'si
  apiKey: "devkey"              # LiveKit API anahtarı
  apiSecret: "devsecret"        # LiveKit API gizli anahtarı
 
auth:
  jwtSecret: "your-jwt-secret"           # JWT jetonlarını imzalamak için gizli anahtar
  tokenDuration: 24                       # Jeton geçerlilik süresi (saat)
  sessionSecret: "your-session-secret"    # Oturum çerezleri için gizli anahtar
  frontendURL: "http://localhost:8090"    # Önyüz URL'si (OAuth yönlendirmeleri için)
 
  # OAuth sağlayıcıları (isteğe bağlı)
  google:
    clientId: ""
    clientSecret: ""
  github:
    clientId: ""
    clientSecret: ""
  twitter:
    clientKey: ""
    clientSecret: ""
 
cors:
  allowedOrigins: "http://localhost:8090,http://localhost:3000"  # Virgülle ayrılmış
  allowedHeaders: "Origin, Content-Type, Accept, Authorization"
  allowedMethods: "GET, POST, PUT, DELETE, OPTIONS"
  allowCredentials: true

Temel Ayarlar

Veritabanı

Varsayılan olarak Bedrud, yapılandırılan path konumundaki bir dosyayla SQLite kullanır. Daha yüksek eşzamanlılık gerektiren üretim için, bunun yerine bir bağlantı dizesi sağlayarak PostgreSQL’e geçin. PostgreSQL kullanırken path alanı bir dosya yolu değil, bağlantı dizesi tutar:

database:
  type: "postgres"
  path: "postgres://user:password@localhost:5432/bedrud?sslmode=disable"

Kimlik Doğrulama

jwtSecret, erişim ve yenileme jetonlarını imzalamak için kullanılır. Üretimde bunu varsayılandan değiştirin.

OAuth sağlayıcıları isteğe bağlıdır. Yapılandırmazsanız, sosyal giriş düğmeleri arayüzde görünmez. Her sağlayıcı, ilgili hizmetle bir OAuth uygulaması kaydetmeyi ve istemci kimliği ile gizli anahtarı sağlamayı gerektirir.

CORS

allowedOrigins dizesi (virgülle ayrılmış), önyüzünüzün sunulduğu URL’yi içermelidir. Geliştirmede bu http://localhost:3000’dir. Üretimde alan adınıza ayarlayın (örn. https://meet.example.com).


LiveKit Yapılandırması

Konum: server/config/livekit.yaml (geliştirme) veya /etc/bedrud/livekit.yaml (üretim)

port: 7880                      # LiveKit HTTP/WebSocket bağlantı noktası
 
rtc:
  port_range_start: 50000       # UDP bağlantı noktası aralığı başlangıcı
  port_range_end: 60000         # UDP bağlantı noktası aralığı sonu
  use_external_ip: true         # RTC için harici IP kullan
 
turn:
  enabled: true
  domain: "localhost"
  tls_port: 5349
  udp_port: 3478
 
keys:
  devkey: "devsecret"           # Sunucu yapılandırmasıyla eşleşmeli
 
logging:
  level: info
 
room:
  auto_create: true              # Katılımcılar katıldığında odaları otomatik oluştur
  empty_timeout: 60              # Boş odayı silmeden önceki saniye
  departure_timeout: 60          # Tüm katılımcılar ayrıldıktan sonra odayı aktif tutma süresi (saniye)
  max_participants: 20           # Oda başına maksimum katılımcı (0 = sınırsız)
  enable_remote_unmute: true     # Katılımcıların sunucu tarafı ses açmasına izin ver

livekit.yaml dosyasındaki keys, sunucunun config.yaml dosyasındaki livekit.apiKey ve livekit.apiSecret ile eşleşmelidir.

RTC Bağlantı Noktası Aralığı

LiveKit, medya akışları için UDP bağlantı noktalarını kullanır. Varsayılan 50000-60000 aralığı çoğu kurulum için çalışır. Bir güvenlik duvarı arkasında çalışıyorsanız, bu bağlantı noktalarının açık olduğundan emin olun.

Mimari ve sorun giderme için bkz. WebRTC Bağlantısı.

TURN Sunucusu

Gömülü TURN sunucusu, kısıtlayıcı NAT’ler veya kurumsal güvenlik duvarları arkasındaki istemciler için medyayı aktarır. Varsayılan olarak 3478 (UDP) ve 5349 (TLS) bağlantı noktalarında etkindir.

TURN son çare aktarıcıdır - çoğu istemci (~%80) doğrudan UDP ile bağlanır ve hiç kullanmaz. TURN etkinleştirildiğinde, sunucu tüm aktarılan medya bant genişliğini taşır.

TLS gereksinimi: TURN/TLS (5349 bağlantı noktası) geçerli bir TLS sertifikası gerektirir. Üretim için turn.tls_port: 443 ayarlayın ve cert_file/key_file dosyalarını sertifikanıza yönlendirin veya önüne external_tls: true ile bir Katman 4 yük dengeleyici yerleştirin.

Mimari, yapılandırma detayları, bant genişliği hesaplamaları ve sorun giderme için bkz. TURN Sunucusu Kılavuzu.

Oda Ayarları

room: bölümü toplantı odası davranışını kontrol eder:

  • auto_create - Katılımcılar katıldığında odaları otomatik oluştur (varsayılan: true)
  • empty_timeout - Hiç katılımcı katılmamış bir odayı silmeden önceki saniye (varsayılan: 60)
  • departure_timeout - Tüm katılımcılar ayrıldıktan sonra odayı aktif tutma süresi, saniye (varsayılan: 60)
  • max_participants - Oda başına maksimum katılımcı. Sınır olmaması için 0 ayarlayın (varsayılan: 20)
  • enable_remote_unmute - Katılımcıların sunucu tarafı sesini kapatma/açmasına izin ver (varsayılan: true)

Kapasite için ayarlama:

  • Küçük ekip toplantıları: max_participants: 10-20
  • Büyük web seminerleri: max_participants: 100 (veya sınırsız için 0)
  • Kaynak kısıtlı sunucular: CPU/bellek kullanımını azaltmak için max_participants’ı düşürün

Ortam Değişkenleri

Yapılandırma değerleri ortam değişkenleri ile geçersiz kılınabilir. Adlandırma, bölüm başına bir önek kuralı izler:

Docker dağıtımları için bkz. Docker Kılavuzu.

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

Tam Ortam Değişkeni Referansı

Ortam DeğişkeniYAML YoluAçıklama
SERVER_PORTserver.portHTTP dinleme bağlantı noktası
SERVER_ENABLE_TLSserver.enableTLSHTTPS’yi etkinleştir (true/false)
SERVER_CERT_FILEserver.certFileTLS sertifikasının yolu
SERVER_KEY_FILEserver.keyFileTLS özel anahtarının yolu
SERVER_DOMAINserver.domainAlan adı
SERVER_EMAILserver.emailLet’s Encrypt için e-posta
SERVER_USE_ACMEserver.useACMEOtomatik Let’s Encrypt’i etkinleştir (true/false)
SERVER_TRUSTED_PROXIESserver.trustedProxiesVirgülle ayrılmış güvenilir vekil IP’leri
SERVER_PROXY_HEADERserver.proxyHeaderİstemci IP’sinin okunacağı başlık (örn. X-Forwarded-For)
DB_HOSTdatabase.hostVeritabanı sunucusu (PostgreSQL)
DB_PORTdatabase.portVeritabanı bağlantı noktası
DB_USERdatabase.userVeritabanı kullanıcısı
DB_PASSWORDdatabase.passwordVeritabanı parolası
DB_NAMEdatabase.dbnameVeritabanı adı
DB_TYPEdatabase.typesqlite veya postgres
DB_PATHdatabase.pathSQLite dosya yolu veya PostgreSQL bağlantı dizesi
LIVEKIT_HOSTlivekit.hostHarici LiveKit URL’si
LIVEKIT_INTERNAL_HOSTlivekit.internalHostDahili LiveKit URL’si
LIVEKIT_API_KEYlivekit.apiKeyLiveKit API anahtarı
LIVEKIT_API_SECRETlivekit.apiSecretLiveKit API gizli anahtarı
JWT_SECRETauth.jwtSecretJWT jetonlarını imzalamak için gizli anahtar
AUTH_FRONTEND_URLauth.frontendURLOAuth yönlendirmeleri için önyüz URL’si
CORS_ALLOWED_ORIGINScors.allowedOriginsVirgülle ayrılmış izin verilen kaynaklar
CORS_ALLOWED_HEADERScors.allowedHeadersİzin verilen istek başlıkları
CORS_ALLOWED_METHODScors.allowedMethodsİzin verilen HTTP yöntemleri
CORS_ALLOW_CREDENTIALScors.allowCredentialsKimlik bilgilerine izin ver (true/false)
CORS_EXPOSE_HEADERScors.exposeHeadersTarayıcıya sunulan başlıklar
CORS_MAX_AGEcors.maxAgeÖn uçuş önbellek süresi, saniye

Üretim Kontrol Listesi

  • jwtSecret ve sessionSecret değerlerini güçlü rastgele değerlerle değiştirin
  • logger.level değerini info veya warn olarak ayarlayın
  • TLS yapılandırın (kurucu veya ters vekil sunucu ile)
  • cors.allowedOrigins değerini üretim alan adınıza ayarlayın
  • Gerekirse OAuth sağlayıcılarını yapılandırın
  • Güvenlik duvarınızda LiveKit RTC bağlantı noktası aralığını açın
  • /var/log/bedrud/ için günlük döndürme ayarlayın

Tam üretim kurulumu için bkz. Dağıtım Kılavuzu.