Skip to content

اسکریپت نصب ​

اسکریپت نصب (songbird-deploy) روش توصیه‌شده برای نصب و مدیریت Songbird است. این یک ابزار تعاملی و مبتنی بر منو است که وابستگی‌ها، بیلدها، Nginx، گواهی‌نامه‌های SSL، پیکربندی محیط، مدیریت پایگاه داده و به‌روزرسانی‌ها را مدیریت می‌کند، تا مجبور نباشید آن مراحل را به‌صورت دستی اجرا کنید.

INFO

این اسکریپت برای Ubuntu (22.04+) هدف‌گذاری شده و به دسترسی root نیاز دارد (هنگامی که به‌عنوان root اجرا نشود، به‌طور خودکار از sudo استفاده می‌کند). برای راه‌اندازی‌های مبتنی بر Docker یا کاملاً دستی، به نصب از طریق Docker و نصب دستی مراجعه کنید.

اولین اجرا ​

این دستور تک‌خطی را روی سرور خود اجرا کنید:

bash
curl -fsSL https://raw.githubusercontent.com/bllackbull/Songbird/main/scripts/install.sh | bash

این دستور اسکریپت را دانلود می‌کند، منو را باز می‌کند و یک دستور سراسری songbird-deploy را نصب می‌کند. از آن پس، هر زمان که خواستید آن را با این دستور اجرا کنید:

bash
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_PORT5174
پورت کلاینتCLIENT_PORT80
پورت Media WorkerWORKER_PORT8080
ایمیل برای اطلاعیه‌های 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 با خطا مواجه شود (برای مثال در شبکه های دارای محدودیت اتصال)، این پیام نمایش داده میشود:

txt
Do you want to reinstall the current menu again? [y/N]

انتخاب yes دستور سراسری را با استفاده از اسکریپت محلی فعلی مجدداً نصب میکند.

mirrorها برای شبکه‌های محدودشده ​

اگر سرور شما دسترسی محدودی به منابع پیش‌فرض بسته‌ها دارد، از Configure mirrors برای تنظیم موارد زیر استفاده کنید:

mirrorهدف
NodeSource mirrorمنبع جایگزین برای راه‌اندازی apt مربوط به Node.js.
apt mirror sourcemirror اضافه 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.

برای اطلاعات بیشتر درباره تشخیص مشکلات، به عیب‌یابی مراجعه کنید.

تحت لایسنس MIT منتشر شده است.