اسکریپت نصب
اسکریپت نصب (songbird-deploy) روش توصیهشده برای نصب و مدیریت Songbird است. این یک ابزار تعاملی و مبتنی بر منو است که وابستگیها، بیلدها، Nginx، گواهینامههای SSL، پیکربندی محیط، مدیریت پایگاه داده و بهروزرسانیها را مدیریت میکند، تا مجبور نباشید آن مراحل را بهصورت دستی اجرا کنید.
INFO
این اسکریپت برای Ubuntu (22.04+) هدفگذاری شده و به دسترسی root نیاز دارد (هنگامی که بهعنوان root اجرا نشود، بهطور خودکار از sudo استفاده میکند). برای راهاندازیهای مبتنی بر Docker یا کاملاً دستی، به نصب از طریق Docker و نصب دستی مراجعه کنید.
اولین اجرا
این دستور تکخطی را روی سرور خود اجرا کنید:
curl -fsSL https://raw.githubusercontent.com/bllackbull/Songbird/main/scripts/install.sh | bashاین دستور اسکریپت را دانلود میکند، منو را باز میکند و یک دستور سراسری songbird-deploy را نصب میکند. از آن پس، هر زمان که خواستید آن را با این دستور اجرا کنید:
songbird-deployمنوی اصلی
| گزینه | اقدام | توضیح |
|---|---|---|
| 1 | 📥 Install Songbird | نصب کامل راهنمایی شده: وابستگی ها، بیلد، Nginx، SSL و .env. |
| 2 | 🔄 Update Songbird | به روزرسانی به جدیدترین نسخه یا دانگرید به یک نسخه مشخص، بازسازی و راه اندازی مجدد (پشتیبان گیری اختیاری پیش از به روزرسانی). |
| 3 | ♻️ Restart Songbird | راه اندازی مجدد songbird.service. |
| 4 | ⚙️ Edit Settings (.env) | تغییر پورت ها، آپلودها، نگه داری، ثبت نام و دیگر مقادیر محیطی، سپس بازسازی/اعمال. |
| 5 | 🗃️ Manage Database | باز کردن زیرمنوی پایگاه داده (به پایین مراجعه کنید). |
| 6 | 🗑️ Remove Songbird | حذف نصب Songbird، با امکان اختیاری حذف دستور سراسری. |
| 7 | 🔄 Update menu | بررسی GitHub برای نسخه جدیدتر اسکریپت و بهروزرسانی دستور سراسری (یا نصب مجدد منوی فعلی). |
| 8 | 🌐 Configure mirrors | تنظیم mirrorهای NodeSource، apt و رجیستری npm برای شبکه های محدودشده. |
| 9 | 📋 View Logs | باز کردن زیرمنوی لاگ ها (اسکریپت، سرویس، دسترسی/خطای Nginx). |
| 0 | 🚪 Exit | خروج از منو. |
روند نصب
هنگامی که Install را انتخاب میکنید، اسکریپت شما را از طریق مجموعهای از پرسشها راهنمایی میکند:
۱. حالت منبع
| حالت | توضیح |
|---|---|
| GitHub | کلونکردن پروژه از مخزن رسمی GitHub. |
| Offline | نصب از یک فایل zip منبع محلی (برای سرورهای محدود شده مفید است). |
۲. حالت نصب
| حالت | توضیح |
|---|---|
| Domain | سرویس دهی Songbird روی یک نام دامنه (مانند example.com). |
| IP | سرویس دهی مستقیم Songbird روی IP عمومی سرور. |
۳. حالت گواهینامه
| حالت | توضیح |
|---|---|
| Obtain certificate | درخواست خودکار گواهینامه. برای دامنه ها از Certbot (Let's Encrypt) استفاده میکند؛ برای IPها یک گواهینامه کوتاه مدت ۶ روزه از طریق lego درخواست میکند. |
| TLS certificate files | استفاده از فایل های fullchain.pem و privkey.pem موجود خودتان. |
| HTTP only | رد کردن TLS و سرویس دهی روی HTTP ساده. |
| Self-signed certificate | تولید یک گواهینامه خودامضاشده (Self-signed). توصیه نمیشود. |
INFO
HTTPS برای اعلان های Push الزامی است (به جز روی localhost). اگر میخواهید Push کار کند، حالتی غیر از HTTP only را انتخاب کنید.
۴. انتخاب موتور پایگاه داده
| گزینه | توضیح |
|---|---|
| SQLite (پیشفرض) | پایگاه داده SQLite در حافظه با ماندگاری ناهمگام روی دیسک (better-sqlite3). مناسب برای نمونه های کوچک تا متوسط. |
| PostgreSQL | موتور پایگاه داده خارجی PostgreSQL. برای نمونه های بزرگتر (+۵۰۰ کاربر) توصیه میشود. مشخصات میزبان PostgreSQL، پورت، نام پایگاه داده، نام کاربری و رمز عبور را میپرسد. |
۵. پرسش های محیط
در حین نصب، اسکریپت تنظیمات اصلی را میپرسد و آنها را در .env مینویسد:
| پرسش | متغیر محیطی | پیشفرض |
|---|---|---|
| پورت سرور | SERVER_PORT | 5174 |
| پورت کلاینت | CLIENT_PORT | 80 |
| پورت Media Worker | WORKER_PORT | 8080 |
| ایمیل برای اطلاعیههای Let's Encrypt (حالت certbot) | — | — |
کلیدهای رمزنگاری و push نوتیفیکیشن (STORAGE_ENCRYPTION_KEY، VAPID_*) بهطور خودکار تولید میشوند. فهرست کامل متغیرهایی که میتوانید بعداً تنظیم کنید در متغیرهای محیطی قرار دارد.
۶. ایجاد کاربر مالک در اولین اجرا
پس از تکمیل نصب و شروع سرویس، در اولین دسترسی از شما خواسته میشود که یک کاربر مالک ایجاد کنید. این حساب مالک دسترسی کامل به پنل مدیریت برای مدیریت کاربران، چتها و تنظیمات سیستم دارد. برای جزئیات به پنل مدیریت مراجعه کنید.
زیرمنوی پایگاه داده
گزینه ۵ یک مدیر کامل پایگاه داده را باز میکند که دستورات پایگاه داده را با پرسشهای راهنماییشده میپوشاند، بنابراین نیازی به بهخاطر سپردن پرچمها ندارید:
| گروه | اقدامها |
|---|---|
| Inspect | خلاصه پایگاه داده، چتها، کاربران، فایلها |
| Backup & Repair | پشتیبانگیری، بازیابی، vacuum، بازنشانی، حذف |
| User & Chat Management | ایجاد کاربر، تولید کاربران، ویرایش کاربر، مسدود/رفعمسدود، ایجاد گروه/کانال، افزودن اعضا، ویرایش چت |
| Remote Channels | پیکربندی کانال ریموت |
| Destructive Actions | حذف چتها، حذف کاربران، حذف فایلها |
| Help & Navigation | نمایش راهنما، بازگشت، خروج |
بهروزرسانی و دانگرید
از منوی اصلی گزینه Update Songbird (گزینه ۲) را برای به روزرسانی یا دانگرید نمونه خود انتخاب کنید:
۱. پشتیبان گیری از پایگاه داده: اسکریپت پیش از تغییر فایل های برنامه، پیشنهاد ایجاد یک نسخه پشتیبان با برچسب زمانی را میدهد.
۲. حالت GitHub:
- به روزرسانی: اگر به روزرسانی جدیدی روی
origin/mainموجود باشد، اسکریپت به طور خودکار آن را دریافت (git pull --ff-only)، وابستگی ها را نصب، مهاجرت های دیتابیس را اعمال و سرویس ها را مجدداً راه اندازی میکند. - دانگرید: اگر مخزن از قبل به روز باشد، پیام
Do you want to downgrade? [y/N]نمایش داده میشود. در صورت تأیید، میتوانید هر نسخه معتبری را مشخص کنید (تگ نسخه بندی معنایی مانندv0.11.4، تگ سفارشی، شاخه یا هش کامیت). اسکریپت آن مرجع را checkout کرده، مهاجرت ها را انجام میدهد و پروژه را بازسازی میکند.
۳. حالت آفلاین:
- به روزرسانی: اگر فایل
VERSIONدرون آرشیو zip جدیدتر از نسخه نصب شده باشد، فایل ها را به روزرسانی و پروژه را مجدداً بازسازی میکند. - دانگرید: اگر مقدار
VERSIONدرون آرشیو یکسان یا قدیمی تر از نسخه نصب شده باشد، پیش از دانگرید از شما تأییدیه میگیرد.
برای جزئیات کامل و روش های دستی به بهروزرسانی و دانگرید مراجعه کنید.
به روزرسانی منوی اسکریپت
برای به روزرسانی خودِ اسکریپت songbird-deploy، گزینه Update menu (گزینه ۷) را انتخاب کنید:
۱. بررسی به روزرسانی ها: اسکریپت به مخزن رسمی GitHub متصل میشود تا بررسی کند آیا نسخه جدیدتری از scripts/install.sh موجود است یا خیر.
۲. به روزرسانی خودکار: در صورت وجود نسخه جدیدتر، به طور خودکار آن را دانلود کرده و دستور سراسری songbird-deploy (/usr/local/bin/songbird-deploy) را به آخرین نسخه به روزرسانی میکند.
۳. درخواست نصب مجدد: اگر منو از قبل به روز باشد، یا در صورتی که بررسی GitHub با خطا مواجه شود (برای مثال در شبکه های دارای محدودیت اتصال)، این پیام نمایش داده میشود:
Do you want to reinstall the current menu again? [y/N]انتخاب yes دستور سراسری را با استفاده از اسکریپت محلی فعلی مجدداً نصب میکند.
mirrorها برای شبکههای محدودشده
اگر سرور شما دسترسی محدودی به منابع پیشفرض بستهها دارد، از Configure mirrors برای تنظیم موارد زیر استفاده کنید:
| mirror | هدف |
|---|---|
| NodeSource mirror | منبع جایگزین برای راهاندازی apt مربوط به Node.js. |
| apt mirror source | mirror اضافه apt برای بستههای پایه. |
| npm registry mirror | رجیستری جایگزین npm برای نصب وابستگیها. |
همچنین میتوانید از همان منو پیشفرضها را بازگردانی کنید (پاککردن همه mirrorها).
TIP
میتوانید از این mirrorها در محیط محدودشده ایران استفاده کنید:
- NodeSource:
https://mirror-nodejs.runflare.com/dist/v24.18.0/node-v24.18.0-linux-x64.tar.gz- APT:
http://ubuntu.pars.host/ubuntu/- NPM:
https://package-mirror.liara.ir/repository/npm/لاگها
زیرمنوی View Logs مفیدترین لاگها را بدون نیاز به بهخاطر سپردن مسیرها در دسترس قرار میدهد:
| گزینه | منبع |
|---|---|
| Script logs | لاگ خود نصاب در /opt/songbird/logs/install.log. |
| Service logs | خروجی journalctl برای songbird.service. |
| Nginx access logs | لاگ دسترسی Nginx. |
| Nginx error logs | لاگ خطای Nginx. |
برای اطلاعات بیشتر درباره تشخیص مشکلات، به عیبیابی مراجعه کنید.