دایرکتوری افزونهها
دایرکتوری افزونهها در addons.nexora-panel.org افزونههایی را که میتوانید نصب کنید فهرست میکند. پنل آن را میخواند، زیر افزونهها ← مرور نشان میدهد، افزونه را روی یکی از سرورهای شما نصب میکند و وقتی آنچه میخواهد را تأیید کردید ثبتش میکند. این صفحه همهٔ راههای نصب، و بعد بهروزرسانی و حذف را توضیح میدهد.


دایرکتوری چه چیزهایی را فهرست میکند
هر مورد نام افزونه، ناشر، توضیح، مجوز، پولی یا رایگان بودن، آخرین نسخه، روشهای نصب (بهصورت کانتینر (Docker compose)، بهصورت سرویس، ساختهشده برای فهرستی از پلتفرمها) و تعداد سؤالهای نصبش را نشان میدهد. یک سطح اعتماد هم دارد:
| سطح | معنی |
|---|---|
| رسمی | ساخت نکسورا؛ مانیفستش را نکسورا امضا کرده است. |
| تأییدشده | از توسعهدهندهای دیگر، بازبینیشده توسط نکسورا؛ مانیفستش با کلید توسعهدهنده امضا شده که دایرکتوری آن را تضمین میکند. |
| غیررسمی | فقط بعد از یک بررسی سبک فهرست شده. نکسورا آن را بازبینی نکرده است. |
افزونهای که به پنل جدیدتری نیاز دارد نیاز به پنل را همراه با نسخه نشان میدهد. اول پنل را بهروز کنید (بهروزرسانی).
خواندن دایرکتوری
پنل دایرکتوری را روزی یک بار همراه با بررسی نسخهاش میخواند، و هر بار که در زبانهٔ مرور دکمهٔ خواندن الان را بزنید. خط بالای کارتها میگوید از کجا و کی خوانده شده است. اگر بررسی روزانهٔ نسخه خاموش باشد (تنظیمات ← بهروزرسانی پنل)، دایرکتوری فقط وقتی خوانده میشود که بخواهید.
فهرستی که دایرکتوری منتشر میکند امضاشده است، و پنل فهرستی را که دایرکتوری امضا نکرده رد میکند. اگر آخرین خواندن شکست خورده باشد، صفحه این را میگوید و آخرین فهرستی را که از بررسی گذشته همچنان نشان میدهد.
آینه
جایی که addons.nexora-panel.org از پنل شما در دسترس نیست، با تغییر منبع پنل را به نسخهای از index.json دایرکتوری بفرستید. آینه میتواند فهرست را سرو کند اما نمیتواند تغییرش دهد، چون بررسی امضا همچنان انجام میشود. برای برگشت به addons.nexora-panel.org فیلد را خالی بگذارید.
نصب از پنل
در مرور یک افزونه را انتخاب کنید و نصب را بزنید. فرم از مانیفست خود افزونه ساخته میشود.
- چه کسی اجرا میکند: پنل روی سرور خودش، پنل با SSH، یا دستوری که خودتان اجرا میکنید. گزینهها در ادامه توضیح داده شدهاند.
- روش: بهصورت سرویس (باینریاش زیر systemd، بدون نیاز به Docker)، با Docker (ایمیجش، از راه فایل compose که اسکریپت نصبش مینویسد) یا فایل compose (یک فایل compose و یک
.envبرای میزبانی که Docker دارد). - آدرسی که پنل به آن میرسد: آدرس افزونه بعد از اجرا، از دید پنل.
http://ساده فقط روی آدرس خصوصی پذیرفته میشود. وقتی HTTPS افزونه روشن است، فرم آدرس عمومیاش را پیشنهاد میدهد. - آدرسی که افزونه به پنل میرسد: آدرس پنل از دید سرور افزونه.
- سؤالهای آن: پورت، پایگاه داده، گذرواژهٔ اولین مدیر و هر چیز دیگری که افزونه اعلام کند. سؤالی که به سؤال دیگری وابسته است فقط وقتی ظاهر میشود که کاربرد داشته باشد. گذرواژهٔ مدیر از ۱۰ نویسه تا ۷۲ بایت را میپذیرد (حدود ۳۶ حرف فارسی یا روسی، یا ۲۴ حرف چینی).
فرم اغلب یک مسیر مدیریت هم میپرسد. پنل یک مسیر تصادفی انتخاب میکند تا بخش مدیریت افزونه در آدرسی قابل حدس نباشد؛ خالی آن را در ریشه میگذارد.
روی سرور خود پنل
وقتی پنل مستقیم روی یک سرور لینوکس اجرا میشود (نه در Docker)، چه کسی اجرا میکند اول پنل، روی همین سرور را پیشنهاد میدهد. پنل اسکریپت نصب افزونه را خودش با root اجرا میکند، بدون SSH و بدون اینکه چیزی تایپ کنید. آدرسی که پنل به آن میرسد به صورت http://127.0.0.1:<port> پر میشود، یا وقتی HTTPS افزونه روشن است با آدرس عمومی.
پنلی که در Docker است این گزینه را ندارد، چون افزونه را درون کانتینر خودش نصب میکرد؛ این را اعلام میکند. آنجا با دستور یا با SSH نصب کنید.
با SSH
برای افزونهٔ رسمی یا تأییدشده، پنل، با SSH آن را روی سرور دیگری نصب میکند، همانطور که پنل یک نود را نصب میکند:
- سرور، پورت SSH، کاربر (root یا کاربری با sudo)، و یک رمز یا کلید خصوصی. اینها فقط برای همین اتصال استفاده میشوند و هرگز ذخیره نمیشوند. کلید میزبان سرور در اولین تماس به خاطر سپرده میشود.
- فایلهای انتشار: پنل میآورد نسخه را دانلود میکند، آن را با checksumهایی که توسعهدهندهاش امضا کرده بررسی و بارگذاری میکند، پس سرور به دسترسی به GitHub نیاز ندارد. سرور دانلود میکند میگذارد اسکریپت نصب نسخه را روی خود سرور بگیرد و آن را با checksum امضاشدهای که پنل به آن میدهد بررسی کند.
- کلید پنل روی این سرور مجاز شود تا آپدیت و حذف بعدی رمز نخواهد باعث میشود بهروزرسانیها و حذف بعدی بدون رمز اجرا شوند.
نصب اول سرور را بررسی میکند (معماری، systemd یا Docker) و اگر افزونه آنجا قابل اجرا نباشد، پیش از نوشتن هر چیزی با ذکر دلیل متوقف میشود. بعد اسکریپت نصب را اجرا میکند و لاگش را زنده نشان میدهد.
با دستوری که خودتان اجرا میکنید
خودم دستور را اجرا میکنم برای همهٔ سطحها کار میکند. ساختن دستور جوابهایتان را بررسی میکند، یک کد ادعای یکبارمصرف میسازد و یک دستور به شما میدهد که با root روی سرور افزونه اجرا کنید.
ممکن است دستور یک مقدار محرمانه داشته باشد
وقتی یکی از جوابهایتان محرمانه است، دستور آن را در خود دارد و فقط همین یک بار نشان داده میشود. پیش از بستن کپیاش کنید. آن را از یک فایل اسکریپت یا با تاریخچهٔ شل خاموش اجرا کنید، تا مقدار محرمانه در تاریخچه نماند.
تأیید و ثبت
افزونه به هر روشی نصب شده باشد، پنل بعد منتظر میماند تا افزونه در آدرسش جواب دهد. وقتی جواب داد، پنل آنچه را افزونه میخواهد نشان میدهد: هر دسترسی توکنش با دلیل، نرخ درخواستش، و هر رویداد. تأیید و ثبت آن را با کد ادعایی که پنل از قبل دارد ثبت میکند؛ لازم نیست چیزی را برگردانید.
میتوانید در زمان انتظار فرم را ببندید. نصب تا یک هفته زیر منتظر جواب افزونه با دکمهٔ ادامه میماند.
افزونهای که مانیفستش امضایی ندارد که این پنل به آن اعتماد کند، به افزودن افزونهٔ خودتان با فیلدهای پرشده میرسد. آنجا توکن و وبهوکش را خودتان میسازید؛ صفحهی افزونهها را ببینید.
HTTPS برای افزونه
بیشتر افزونهها میپرسند HTTPS را چطور سرو کنند. جوابهایی که افزونههای منتشرشدهٔ نکسورا پیشنهاد میدهند:
| جواب | چه میکند |
|---|---|
panel | گواهیای از انبار خود پنل (گواهیها)، که پنل صادر و تمدیدش میکند و افزونه هر چند دقیقه آن را میگیرد. هر پورتی کار میکند، پس چند افزونه میتوانند با پنل روی یک سرور باشند. پیشفرض فرم پنل. |
acme | افزونه برای دامنهاش گواهی خودش را میگیرد و روی پورت خودش، که باید ۴۴۳ باشد، به مرجع صدور جواب میدهد. |
acme-http | همان روی هر پورتی، که مرجع صدور روی پورت ۸۰ میپرسد. |
self-signed | افزونه گواهی خودش را برای یک آدرس IP میسازد. صفحهٔ تأیید اثر انگشت SHA-256 آن را نشان میدهد: آن را با اثر انگشت صفحهٔ راهاندازی افزونه مقایسه کنید. تأیید یعنی اعتماد دقیقاً به همان گواهی. |
off | HTTP ساده، برای reverse proxy خودتان. |
وقتی HTTPS روشن است، افزونه آن را فقط روی پورت نصبش سرو میکند، و آدرس عمومی باید همان پورت را نام ببرد (اگر پورتی نام نبرد، ۴۴۳)، مثلاً https://shop.example.com:8443.
برای افزونهای روی سرور دیگر، فقط گواهیهای صادرشده با dns-01، خودامضا یا بارگذاریشده پیشنهاد میشوند، و هرگز گواهی HTTPS خود پنل. گواهی را بعداً با گواهی در ردیف افزونه عوض کنید. افزونهٔ self-signed گواهیاش را تقریباً سالی یک بار تمدید میکند؛ بعد از مقایسهٔ اثر انگشت، با اعتماد به این گواهی همانجا به گواهی تازه اعتماد کنید. دربارهٔ گواهیها در گواهیها بیشتر بخوانید.
بهروزرسانیها
وقتی دایرکتوری نسخهٔ جدیدتری از یک افزونهٔ ثبتشده دارد، ردیفش در ثبتشده آن را نشان میدهد (مثلاً 0.2.0 در فهرست) و منوی افزونهها یک نقطه میگیرد.
- نصبشده روی همین سرور یا با SSH: آپدیت روی سرورش اسکریپت نصب را دوباره اجرا میکند. تنظیمات و دادهها نگه داشته میشوند، و پنل مانیفست تازه را فوراً میخواند.
- نصبشده با دستور: اسکریپت نصبش را بدون آرگومان دوباره روی سرورش اجرا کنید،
sh nexora-addon-install.sh. آخرین نسخه را به همان روش نصب میکند و جوابها و دادهها را نگه میدارد. برای نصب با فایل compose،NEXORA_ADDON_VERSIONرا در.envآن روی نسخهٔ تازه بگذارید، و بعدdocker compose pull && docker compose up -dرا اجرا کنید.
نسخهٔ تازهای که دسترسی یا رویداد بیشتری میخواهد نصب میشود، اما پیش از گرفتن آنها منتظر تأیید شما (بررسی بهروزرسانی) میماند؛ صفحهی افزونهها را ببینید.
حذف افزونه
حذف از سرورش (برای افزونهای که روی همین سرور یا با SSH نصب شده) اسکریپت نصبش را با --uninstall اجرا میکند. دادههایش هم پاک شود را تیک بزنید تا پوشهٔ دادهاش هم حذف شود.
DANGER
دادههایش هم پاک شود برگشتپذیر نیست. اگر ممکن است دوباره لازمش داشته باشید، اول پشتیبان خود افزونه را بگیرید.
افزونه تا وقتی حذف را در ردیفش هم نزنید ثبتشده میماند. حذف از آنجا اول به افزونه خبر میدهد، و بعد توکن و وبهوکش را پاک میکند.
دستی، روی سرور افزونه:
sh nexora-addon-install.sh --uninstall # keeps its data
sh nexora-addon-install.sh --uninstall --purge # deletes the data tooافزونهای که با نگه داشتن دادههایش حذف شده و دوباره از پنل نصب میشود (نصب تازه، کد ادعای تازه) مثل هر افزونهٔ دیگری ثبت میشود. ثبتی را که نگه داشته بود کنار میگذارد، گذرواژهٔ مدیرش را روی جواب نصب تازه میگذارد، عامل دوم آن مدیر را خاموش میکند و او را از همه جا خارج میکند. بهروزرسانی یا راهاندازی مجدد هر دو را نگه میدارد.
