بدرود از فایلهای پیکربندی YAML برای سرور اصلی و media server LiveKit جاسازیشده استفاده میکند.
همچنین ببینید: شروع سریع | نصب | راهنمای استقرار | راهنمای Docker
پیکربندی حداقل تولید
تنظیمات پیشفرض برای توسعه کار میکند. برای تولید، این مقادیر را در /etc/bedrud/config.yaml تغییر دهید:
auth:
jwtSecret: "change-to-random-string-32-chars"
sessionSecret: "change-to-another-random-string"پس از تغییرات restart کنید:
sudo systemctl restart bedrud livekitمرجع کامل در زیر.
پیکربندی سرور
مکان: server/config.yaml (توسعه) یا /etc/bedrud/config.yaml (تولید)
مرجع کامل
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" # رمز برای کوکیهای جلسه
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تنظیمات کلیدی
دیتابیس
پیشفرض SQLite است (فایل در path). برای concurrency بالا، به PostgreSQL سوییچ کنید. وقتی type: "postgres" باشد، فیلد path رشته اتصال را نگه میدارد، نه مسیر فایل:
database:
type: "postgres"
path: "postgres://user:password@localhost:5432/bedrud?sslmode=disable"احراز هویت
jwtSecret برای امضای access token و refresh token استفاده میشود. حتماً در production تغییرش دهید.
Providerهای OAuth اختیاریاند. اگر پیکربندی نشوند، دکمههای ورود اجتماعی نمایش داده نمیشوند. هر provider نیاز به ثبت اپلیکیشن OAuth و ارائه Client ID و Client Secret دارد.
CORS
allowedOrigins (با کاما جدا شده) باید شامل URL فرانتاند باشد. در توسعه: http://localhost:3000. در production: دامنه خودتان (مثلاً https://meet.example.com).
پیکربندی LiveKit
مکان: server/config/livekit.yaml (توسعه) یا /etc/bedrud/livekit.yaml (تولید)
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 # حداکثر شرکتکننده در هر اتاق (۰ = نامحدود)
enable_remote_unmute: true # اجازه unmute سمت سرور شرکتکنندگانkeys در livekit.yaml باید با livekit.apiKey و livekit.apiSecret در config.yaml سرور مطابقت داشته باشد.
محدوده پورت RTC
LiveKit از پورتهای UDP برای جریانهای مدیا استفاده میکند. محدوده پیشفرض 50000-60000 برای اکثر تنظیمات کار میکند. اگر پشت فایروال اجرا میشود، اطمینان حاصل کنید که این پورتها باز هستند.
برای معماری و عیبیابی به اتصال WebRTC ببینید.
سرور TURN
سرور TURN جاسازیشده مدیا را برای کلاینتهای پشت NATهای محدود یا فایروالهای شرکتی رله میکند. به طور پیشفرض در پورتهای ۳۴۷۸ (UDP) و ۵۳۴۹ (TLS) فعال است.
TURN یک رله آخرین راه حل است - اکثر کلاینتها (~۸۰٪) مستقیماً از طریق UDP متصل میشوند و هرگز از آن استفاده نمیکنند. هنگامی که TURN فعال میشود، سرور تمام پهنای باند مدیا رلهشده را حمل میکند.
نیاز TLS: TURN/TLS (پورت ۵۳۴۹) به گواهی TLS معتبر نیاز دارد. برای تولید، turn.tls_port: 443 را تنظیم کنید و cert_file/key_file را به گواهی خود اشاره دهید، یا یک load balancer لایه ۴ جلوی آن با external_tls: true قرار دهید.
برای معماری، جزئیات تنظیمات، محاسبات پهنای باند و عیبیابی به راهنمای سرور TURN ببینید.
تنظیمات اتاق
بخش room: رفتار اتاق جلسه را کنترل میکند:
auto_create- ایجاد خودکار اتاقها هنگام پیوستن شرکتکنندگان (پیشفرض:true)empty_timeout- ثانیه قبل از حذف اتاقی که هرگز به آن نپیوستند (پیشفرض:60)departure_timeout- ثانیه برای نگه داشتن اتاق فعال پس از خروج همه شرکتکنندگان (پیشفرض:60)max_participants- حداکثر شرکتکننده در هر اتاق. برای محدودیت نداشتن۰تنظیم کنید (پیشفرض:20)enable_remote_unmute- اجازه unmute/mute سمت سرور شرکتکنندگان (پیشفرض:true)
تنظیم برای ظرفیت:
- جلسات تیم کوچک:
max_participants: 10-20 - وبینارهای بزرگ:
max_participants: 100(یا۰برای نامحدود) - سرورهای با محدودیت منابع:
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 | ایمیل برای 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 | مدت کش پیشپرواز به ثانیه |
چکلیست تولید
-
jwtSecretوsessionSecretرا به مقادیر تصادفی قوی تغییر دهید -
logger.levelرا رویinfoیاwarnتنظیم کنید - TLS را پیکربندی کنید (از طریق نصبکننده یا reverse proxy)
-
cors.allowedOriginsرا به دامنه تولید خود تنظیم کنید - در صورت نیاز فراهمکنندگان OAuth را پیکربندی کنید
- محدوده پورت RTC LiveKit را در فایروال خود باز کنید
- چرخش لاگ را برای
/var/log/bedrud/تنظیم کنید
برای تنظیم کامل تولید، به راهنمای استقرار ببینید.