Bedrud مستندات

مرجع کامل برای رابط خط فرمان bedrud.

خلاصه

# سبک زیردستور
bedrud <command> [flags]
 
# سبک فلگ
bedrud --livekit --config <path>
bedrud --run --config <path>

دستورات

run / server

سرور جلسه بدرود را با API، فرانت‌اند وب جاسازی‌شده، و LiveKit جاسازی‌شده (در صورت پیکربندی) شروع کنید.

bedrud run    [--config <path>]
bedrud server [--config <path>]
فلگپیش‌فرضتوضیح
--configمتغیر محیطی $CONFIG_PATH"config.yaml"مسیر به فایل تنظیمات YAML بدرود

رفتار:

  • تنظیمات را از مسیر مشخص یا پیش‌فرض‌ها بارگذاری می‌کند
  • LiveKit جاسازی‌شده را در صورت پیکربندی برای حالت داخلی شروع می‌کند
  • دیتابیس SQLite/PostgreSQL را مقداردهی اولیه می‌کند و مهاجرت‌ها را اجرا می‌کند
  • سرور HTTP Fiber با تمام مسیرهای API ایجاد می‌کند
  • فرانت‌اند React جاسازی‌شده را سرویس می‌دهد
  • از ACME (Let’s Encrypt)، self-signed TLS، TLS دستی، یا HTTP ساده پشتیبانی می‌کند
  • خاموش شدن ملایم در SIGTERM/SIGINT

پیاده‌سازی: server/internal/server/server.go


--livekit

فقط media server 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

بدرود را روی یک سیستم Debian/Linux نصب کنید. init سرویس‌ها (systemd، OpenRC یا SysV init — تشخیص خودکار)، فایل‌های تنظیمات، دایرکتوری‌ها، و گواهی‌های TLS ایجاد می‌کند.

bedrud install [flags]
فلگپیش‌فرضتوضیح
--tlsfalseفعال کردن HTTPS (مشابه --self-signed)
--self-signedfalseتولید self-signed TLS certificate
--no-tlsfalseغیرفعال کردن TLS به طور کامل (HTTP ساده). بر --tls و --self-signed غلبه می‌کند
--ipتشخیص خودکارجایگزینی آدرس IP سرور تشخیص داده شده
--domain""نام دامنه برای Let’s Encrypt یا self-signed certificate
--email""ایمیل برای ثبت‌نام Let’s Encrypt
--port"443" (TLS) / "8090" (HTTP)جایگزینی پورت شنیدن
--cert""مسیر به فایل گواهی موجود (PEM)
--key""مسیر به فایل کلید خصوصی موجود (PEM)
--lk-port"7880"جایگزینی پورت API/WebSocket LiveKit
--lk-tcp-port"7881"جایگزینی پورت TCP RTC LiveKit
--lk-udp-port"7882"جایگزینی پورت UDP RTC LiveKit
--freshfalseحذف نصب موجود قبل از نصب
--behind-proxyfalseسرور پشت CDN/reverse proxy است (Cloudflare، nginx)
--external-livekit""URL یک سرور LiveKit کاملاً خارجی (ماشین متفاوت)
--livekit-domain""دامنه جداگانه برای سرور LiveKit محلی (عبور از CDN)

کاری که انجام می‌دهد: ۱. اگر --fresh نصب قبلی را متوقف و حذف می‌کند ۲. برای IP، دامنه، ایمیل، حالت TLS درخواست می‌کند (اگر غیرتعاملی و فلگ‌ها ارائه نشده باشند) ۳. دایرکتوری‌ها را ایجاد می‌کند: /etc/bedrud، /var/lib/bedrud، /var/lib/bedrud/certs، /var/log/bedrud ۴. باینری را به /usr/local/bin/bedrud کپی می‌کند ۵. تنظیمات سرور بدرود را در /etc/bedrud/config.yaml تولید می‌کند ۶. تنظیمات media server LiveKit را در /etc/bedrud/livekit.yaml تولید می‌کند ۷. self-signed certificates را در /etc/bedrud/cert.pem + /etc/bedrud/key.pem تولید می‌کند (اگر TLS فعال است و گواهی سفارشی وجود ندارد) ۸. init سرویس LiveKit را ایجاد می‌کند (مگر اینکه از LiveKit خارجی استفاده کنید) ۹. init سرویس Bedrud را ایجاد می‌کند ۱۰. سرویس‌ها را از طریق سیستم init تشخیص‌داده‌شده فعال و راه‌اندازی می‌کند ۱۱. URLهای دسترسی را چاپ می‌کند

گزینه‌های TLS:

  • --domain + --email → ACME (Let’s Encrypt)
  • --self-signed یا --tls → self-signed certificate
  • --cert + --key → گواهی‌های سفارشی
  • --no-tls → فقط HTTP ساده

توپولوژی LiveKit:

  • پیش‌فرض (جاسازی‌شده): LiveKit به صورت محلی اجرا می‌شود، از طریق بدرود در /livekit پروکسی می‌شود
  • --livekit-domain: LiveKit به صورت محلی اجرا می‌شود اما کلاینت‌ها مستقیماً از طریق دامنه خود متصل می‌شوند
  • --external-livekit: بدون LiveKit محلی؛ به سرور راه دور متصل می‌شود

پیاده‌سازی: server/internal/install/linux.go

اسناد مرتبط: راهنمای نصبراهنمای استقرارمنطق استقرار بک‌اند


uninstall

بدرود را از سیستم حذف کنید.

bedrud uninstall

حذف می‌کند:

  • سرویس‌ها را در تمام سیستم‌های init متوقف و غیرفعال می‌کند: 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 user [--config <path>] <subcommand> [flags]
فلگ جهانیپیش‌فرضتوضیح
--config/etc/bedrud/config.yamlمسیر به فایل تنظیمات بدرود (برای یافتن دیتابیس)

create

یک کاربر جدید با احراز هویت محلی (رمز عبور هش شده bcrypt) ایجاد کنید.

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

فلگ‌های مورد نیاز:

  • --email: آدرس ایمیل کاربر
  • --password: رمز عبور کاربر، قبل از ذخیره با bcrypt هش می‌شود
  • --name: نام نمایشی کاربر

فلگ‌های اختیاری:

  • --admin: ایجاد کاربر به عنوان superadmin

سطح دسترسی: پیش‌فرض user. برای ایجاد superadmin در یک دستور از --admin استفاده کنید.

delete

یک کاربر را با آدرس ایمیل حذف کنید.

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. فقط زمانی مرتبط است که از گواهی‌های self-signed استفاده می‌کنید (تولید شده توسط bedrud install --self-signed).

bedrud cert [--config <path>] <subcommand>
پرچم سراسریپیش‌فرضتوضیحات
--config/etc/bedrud/config.yamlمسیر فایل پیکربندی Bedrud
--algo""الگوریتم کلید: ed25519, ecdsa256, rsa2048, rsa4096 (پیش‌فرض: تشخیص از گواهی موجود)

renew

تمدید دستی گواهی self-signed TLS. الگوریتم کلید گواهی موجود را تشخیص داده و با همان نوع بازتولید می‌کند (پیش‌فرض: Ed25519). گواهی جدید به مدت ۱۸۲۵ روز (~۵ سال) معتبر است.

bedrud cert renew [--config <path>]

سرور همچنین به‌طور خودکار روزانه گواهی را از طریق زمانبند داخلی خود تمدید می‌کند زمانی که کمتر از ۳۰ روز تا انقضا باقی مانده باشد. این دستور برای تمدید دستی یا فوق‌العاده است.

SANها: از پیکربندی سرور استخراج می‌شوند — 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)، SANها.

پیاده‌سازی: server/internal/utils/tls.go (ValidateTLSCertPair)


help

پیام استفاده را با تمام دستورات و فلگ‌ها نشان دهید.

bedrud help

همچنین هنگامی که هیچ آرگومانی ارائه نشده است فعال می‌شود. خروجی printUsage() را نمایش می‌دهد.


مثال‌ها

شروع سرور توسعه پایه

# اجرا با config.yaml پیش‌فرض در دایرکتوری فعلی
bedrud run
 
# اجرا با تنظیمات سفارشی
bedrud run --config /path/to/config.yaml
 
# از طریق متغیر محیطی (فallback)
export CONFIG_PATH=/etc/bedrud/config.yaml
bedrud run

نصب تعاملی (درخواست برای ورودی)

bedrud install

نصب غیرتعاملی با Let’s Encrypt

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

self-signed 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

مستندات مرتبط