نصب

نصب با نصب‌کننده

نصب‌کنندهٔ یک‌خطی — روی 3X-UI، PasarGuard و Rebecca چه می‌کند، هر پرسشی که می‌پرسد، و اجرای آن بدون پرسش.

نصب‌کننده یک اسکریپت راه‌انداز کوچک است که همراه هر نسخه منتشر می‌شود. نسخه را دانلود می‌کند، سالم بودنش را ثابت می‌کند و نصب را به کتابخانهٔ مدیریتی خود Row-Template می‌سپارد که بقیهٔ کار را به‌صورت یک تراکنش انجام می‌دهد.

اجرای آن

با root، روی سروری که پنل شما روی آن است:

bash <(curl -fsSL https://github.com/iitzSeriZdev/Row-Template/releases/latest/download/install.sh)

releases/latest/download همیشه به جدیدترین نسخهٔ پایدار اشاره می‌کند (هرگز پیش‌نویس یا پیش‌انتشار نیست)، از طریق HTTPS و بدون توکن.

از یک پوستهٔ root اجرایش کنید

اول با sudo -i یک پوستهٔ root باز کنید. sudo bash <(curl …) شکست می‌خورد، چون sudo توصیف‌گر فایلی را که <(…) به bash می‌دهد می‌بندد.

به ترتیب چه اتفاقی می‌افتد

راه‌انداز بررسی و دانلود می‌کند

اجرا نمی‌شود مگر با root، و مگر اینکه tar و sha256sum (یا shasum) موجود باشند. سپس manifest.txt، SHA256SUMS و tarball نسخه‌ای را که در manifest نام برده شده دانلود می‌کند.

چک‌سام بررسی می‌شود — همیشه

SHA-256 tarball باید با مقدار داخل SHA256SUMS یکی باشد. هیچ گزینه، پرچم یا متغیر محیطی‌ای برای رد شدن از آن وجود ندارد. در صورت عدم تطابق، نصب‌کننده پیش از استخراج هر چیزی متوقف می‌شود.

آرشیو بررسی و سپس استخراج می‌شود

هر ورودی پیش از استخراج بررسی می‌شود: مسیرهای مطلق، ..، پیوندهای نمادین، پیوندهای سخت و فایل‌های ویژه رد می‌شوند. استخراج هرگز مالک یا مجوزهای آرشیو را نگه نمی‌دارد.

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

کتابخانهٔ مدیریتی استخراج‌شده محتوای نسخه را دوباره بررسی می‌کند (چک‌سام صفحه، ساختار آن، و وجود همهٔ فایل‌های نصب‌کننده‌ای که اعلام می‌کند)، سپس تصمیم می‌گیرد برای کدام پنل نصب کند:

  • نصب موجود، پنلی را که برای آن نصب شده حفظ می‌کند؛
  • وگرنه RT_PANEL، اگر تنظیم شده باشد، باید پنلی را نام ببرد که روی همین سرور نصب است؛
  • وگرنه تنها پنل پشتیبانی‌شدهٔ روی سرور — و اگر چند پنل باشد، نصب تعاملی می‌پرسد و نصب اسکریپتی پیش از هر تغییری متوقف می‌شود.

سپس بررسی می‌کند که بتوان به آن پنل سرویس داد: 3X-UI باید 3.6.0 یا جدیدتر با نسخهٔ خوانا باشد، و Rebecca باید نسخهٔ Go یعنی 1.x باشد — ایمیج Docker نسخهٔ 0.0.x همین‌جا رد می‌شود. تا اینجا هیچ چیزی تغییر نکرده است.

فایل‌ها نصب می‌شوند

ساختار نصب ساخته می‌شود — /etc/3x-ui/sub_templates/row-template در 3X-UI و /etc/row-template در PasarGuard و Rebecca. فایل VERSION، رکورد پنلی که به آن سرویس می‌دهد، کتابخانهٔ مدیریتی و اجزای آن آنجا نصب می‌شوند و فرمان row-template در /usr/local/bin/row-template. هر فایل اول با نامی موقت نوشته و سپس جایگزین می‌شود، پس هیچ چیز نیمه‌نوشته نمی‌ماند.

همهٔ طرح‌ها بررسی می‌شوند

هر هفده طرح — هر کدام در نسخه‌ای که برای موتور قالب پنل شما ساخته شده — در مخزن تمپلیت‌های نصب کپی می‌شوند و هر کدام پیش از آن با چک‌سام خودش بررسی و اعتبارسنجی می‌شود.

طرح و برندینگ را انتخاب می‌کنید

در نخستین نصب تعاملی، انتخابگر طرح و پرسش‌های برندینگ (پایین) را می‌بینید. تعمیر، پیکربندی موجود را نگه می‌دارد.

صفحه ساخته و جایگزین می‌شود

صفحهٔ زندهٔ sub.html از روی طرح انتخابی و برندینگ شما ساخته و اعتبارسنجی می‌شود و فقط پس از آن سر جایش قرار می‌گیرد.

پنل به آن متصل می‌شود

  • 3X-UI: وقتی sqlite3 در دسترس باشد، نصب‌کننده می‌تواند subThemeDir پنل را برایتان تنظیم کند (در نصب تعاملی اول می‌پرسد). در غیر این صورت تنها مرحلهٔ دستی را چاپ می‌کند.
  • PasarGuard: صفحه در پوشهٔ تمپلیت‌های PasarGuard قرار می‌گیرد، بلوکی نشان‌دار که آن را انتخاب می‌کند به /opt/pasarguard/.env اضافه می‌شود و پنلِ در حال اجرا یک بار ری‌استارت می‌شود.
  • Rebecca: صفحه در پوشهٔ تمپلیت‌های Rebecca قرار می‌گیرد و در تنظیمات اشتراکش انتخاب می‌شود — با SQLite و sqlite3 خودکار، وگرنه توسط شما در داشبورد.

در PasarGuard و Rebecca این کار به‌صورت تراکنش انجام می‌شود: از تنظیمات پنل عکس فوری گرفته می‌شود، تغییر اعمال و بررسی می‌شود، و اگر هر مرحله شکست بخورد دقیقاً بازگردانده می‌شود. فعال‌سازی را ببینید.

بررسی زنده اجرا می‌شود

در پایان بررسی می‌کند پنل واقعاً چه چیزی ارائه می‌کند. در 3X-UI، وقتی اشتراکی برای آزمایش پیدا کند (به sqlite3 و پایگاه‌دادهٔ پنل نیاز دارد)، نشانی اشتراک را یک بار مانند مرورگر و یک بار مانند اپ VPN درخواست می‌کند و آنچه هر کدام دریافت کرده‌اند را گزارش می‌دهد. در PasarGuard و Rebecca از پنلِ در حال اجرا می‌پرسد از کدام صفحه استفاده می‌کند.

پرسش‌هایی که می‌پرسد

نصب تعاملی — که در هر دو سو ترمینال دارد — این پرسش‌ها را به ترتیب می‌پرسد. همهٔ پیش‌فرض‌ها امن‌اند: با زدن Enter تا آخر، Row، بدون برندینگ و با فعال‌سازی خودکار (در صورت امکان) نصب می‌شود.

پرسش چه وارد کنید
More than one panel is installed on this host و سپس فهرستی شماره‌دار فقط روی سروری با چند پنل پشتیبانی‌شده: شمارهٔ پنلی که Row-Template باید به آن سرویس بدهد.
Continue installation? [Y/n] برای ادامه Enter. همراه با پنلی که تشخیص داده (و در 3X-UI، نسخهٔ آن) نمایش داده می‌شود.
Choose your Row-Template design و سپس Select [1-17, Enter=Row] شماره‌ای از فهرست، یا Enter برای Row. طرح‌ها را ببینید.
Use them for this page? [Y/n] PasarGuard و Rebecca، وقتی تنظیمات اشتراک خود پنل عنوان یا لینک پشتیبانی دارد (که بالای پرسش نمایش داده می‌شود): Enter برای استفاده از آن‌ها و رد شدن از دو پرسش بعدی، n برای وارد کردن مقادیر خودتان.
Service name (Enter to keep, - to clear) نامی که مشترکان باید ببینند، تا ۱۲۰ نویسه. خالی هم مشکلی ندارد: صفحه بدون برند می‌ماند.
Support URL, optional (Enter to keep, - to clear) لینکی که با https://، http://، tg:// یا mailto: شروع شود. هر چیز دیگری رد و دوباره پرسیده می‌شود.
Logo file [none] (Enter to keep, - to remove, or a path) مسیر یک فایل PNG، JPEG یا WebP حداکثر ۲۵۶ کیلوبایت، یا Enter برای مونوگرام ساخته‌شده.
Install with these settings? [Y/n] برای نصب Enter. برای برگشتن و تغییر برندینگ n را وارد کنید.
Make Row-Template the active 3X-UI subscription theme now? [Y/n] 3X-UI: Enter تا نصب‌کننده subThemeDir را تنظیم کند. فقط وقتی sqlite3 و پایگاه‌دادهٔ پنل در دسترس باشند نمایش داده می‌شود.
Make Row-Template the active PasarGuard subscription page now? [Y/n] (یا … Rebecca …) PasarGuard و Rebecca: پس از توضیح کوتاهی دربارهٔ آنچه فعال‌سازی تغییر می‌دهد نمایش داده می‌شود. برای فعال‌سازی Enter؛ n آن را به بعد و به منوی مدیریت می‌سپارد.

پس از وارد کردن نام سرویس، نصب‌کننده برای نام‌های لاتین ساده پیش‌نمایش مونوگرام — حروفی که به‌جای لوگو استفاده می‌شوند — را نشان می‌دهد. برای خط‌های دیگر یادآوری می‌کند که مونوگرام را مرورگر می‌سازد.

در پایان یک خلاصه می‌بینید: سرویس، نسخه، پنل، تمپلیت، پوشهٔ نصب، و اینکه صفحه Active است، به فعال‌سازی دستی نیاز دارد، یا هنوز فعال نشده است.

اجرای دوباره

اجرای نصب‌کننده روی سروری که Row-Template از قبل دارد، کورکورانه دوباره نصب نمی‌کند و همیشه پنلی را که نصب به آن سرویس می‌دهد حفظ می‌کند. در حالت تعاملی این گزینه‌ها را پیشنهاد می‌دهد:

  1  Open the manager
  2  Reconfigure branding
  3  Update
  4  Repair / Verify
  0  Exit

Repair فایل‌های نسخه را در همان جا دوباره نصب می‌کند. اول از نصب فعلی پشتیبان گرفته می‌شود و برندینگ و طرح شما حفظ می‌شوند.

بدون ترمینال روی ورودی استاندارد (مثلاً از داخل اسکریپت)، نصب موجود فقط وقتی تعمیر می‌شود که صریحاً بخواهید:

RT_ASSUME_YES=1 bash <(curl -fsSL https://github.com/iitzSeriZdev/Row-Template/releases/latest/download/install.sh)

هر نصب به یک پنل سرویس می‌دهد. برای سرویس دادن به پنل دیگری روی همان سرور، اول row-template uninstall را اجرا کنید.

نصب بدون پرسش

برای اسکریپت‌های راه‌اندازی، همهٔ پاسخ‌ها را از طریق متغیرهای محیطی بدهید. RT_ASSUME_NONINTERACTIVE=1 همهٔ پرسش‌ها را خاموش می‌کند؛ سپس پنل در صورت امکان به‌صورت خودکار فعال می‌شود.

RT_ASSUME_NONINTERACTIVE=1 \
RT_TEMPLATE=editorial \
RT_SERVICE_NAME="Aurora VPN" \
RT_SUPPORT_URL="https://t.me/aurora_support" \
RT_LOGO_PATH=/root/aurora-logo.png \
bash <(curl -fsSL https://github.com/iitzSeriZdev/Row-Template/releases/latest/download/install.sh)

بیش از یک پنل روی سرور؟

نصب تازهٔ اسکریپتی روی سروری که بیش از یک پنل پشتیبانی‌شده دارد باید پنل را نام ببرد — RT_PANEL=3xui، RT_PANEL=pasarguard یا RT_PANEL=rebecca را اضافه کنید. بدون آن، نصب‌کننده پیش از هر تغییری متوقف می‌شود.

مقدار نامعتبر، نصب را پیش از تغییر پنل متوقف می‌کند. همهٔ متغیرها در متغیرهای محیطی توضیح داده شده‌اند.

اگر مشکلی پیش آمد

نصب‌کننده در اولین مشکل متوقف می‌شود و می‌گوید چه بود. تا صفحهٔ جدید ساخته و اعتبارسنجی نشود هیچ چیزی فعال نمی‌شود، پس اجرای ناموفق هرگز صفحهٔ خرابی را فعال باقی نمی‌گذارد. پیام را در مرجع خطاها پیدا کنید.

ویرایش این صفحه در GitHubمربوط به Row-Template نسخهٔ 1.4.0
Esc
↑↓ برای جابه‌جایی↵ برای انتخابEsc برای بستن