نیازمندیهای سیستم
سرور، پورتها، پایگاهداده و رمزهایی که نسنت لینوکس پیش از نصب لازم دارد.
مرور کلی
نسنت لینوکس روی یک سرور لینوکسی ۶۴ بیتی اجرا میشود و همه چیز را همانجا نگه
میدارد، یعنی پنل، پایگاهداده و پروسهٔ Xray-core که خودش سرپرستیاش میکند. نه
مجموعهای از سرورها در کار است و نه سرور دومی که باید آماده کنید. آنچه واقعاً پیش
از نصب باید تصمیم بگیرید این است: کدام پایگاهداده، آیا دامنه دارید، و کدام
پورتها را میتوانید باز کنید.
سرور
| نیازمندی | مقدار |
|---|---|
| سیستمعامل | لینوکس ۶۴ بیتی |
| معماری | amd64 یا arm64 |
| دسترسی | root یا sudo |
| پورت پنل | یک پورت ورودی آزاد، بهطور پیشفرض 9761 |
| پورتهای ورودی | هر پورتی که inboundهای پروکسی شما روی آن گوش میدهند، جداگانه باز شود |
| دسترسی خروجی | برای گواهی ACME و دریافت ایمیج لازم است؛ بستهٔ آفلاین این نیاز را برمیدارد |
باینریهای منتشرشده ایستا هستند و بدون CGO ساخته میشوند، پس محیط اجرای وابسته به یک توزیع خاص لازم ندارند. داشتن دامنهای که به سرور اشاره کند بهشدت توصیه میشود، هرچند دقیقاً اجباری نیست، و دلیلش پایینتر آمده است.
دستگاههای پشتیبانیشده
اینجا دو دستهٔ متفاوت از دستگاهها اهمیت دارند. سرور ماشینی است که پنل را اجرا میکند. کلاینتها چیزهایی هستند که مشترکان شما برای استفاده از دسترسی پروکسی به کار میبرند.
سرورها
| بستر | پشتیبانی | توضیح |
|---|---|---|
لینوکس amd64 |
بله | حالت رایج. هم باینریهای منتشرشده و هم ایمیجهای Docker پوششش میدهند. |
لینوکس arm64 |
بله | کاملاً پشتیبانی میشود، از جمله روی سرورهای مجازی ARM. |
| لینوکس ۳۲ بیتی | خیر | هیچ نسخهٔ ۳۲ بیتی منتشر نمیشود. |
| macOS یا ویندوز | خیر | پنل یک پروسهٔ محلی Xray را سرپرستی میکند و لینوکس میخواهد. |
هر توزیعی کار میکند، چون باینریهای منتشرشده ایستا و بدون CGO ساخته میشوند. چیزی وابسته به توزیع خاص نیست که کنارشان نصب شود.
برنامههای کلاینت
مشترکان چیزی از شما نصب نمیکنند. یک لینک /sub/{key} را در یک برنامهٔ پروکسی
معمولی میچسبانند و سرور با نگاه به User-Agent پاسخ را متناسب با همان برنامهای
که درخواست فرستاده برمیگرداند.
| کلاینت | بستر معمول |
|---|---|
| v2rayNG | اندروید |
| v2rayN | ویندوز |
| Clash و کلاینتهای خانوادهٔ آن | اندروید، ویندوز، macOS، لینوکس |
sing-box |
اندروید، iOS، دسکتاپ |
| Shadowrocket | iOS |
یک لینک برای همهٔ اینها کار میکند، پس مشترک هیچوقت لازم نیست قالب را دستی انتخاب کند. کلاینتهای بیرون این فهرست هم اگر قالب استاندارد اشتراک base64 را بفهمند کار میکنند، ولی پاسخ عمومی میگیرند نه پاسخ متناسبشده. مشترکی که لینک را در مرورگر باز کند، به جای آن پنل مشترک را میبیند.
پایگاهداده
پیش از نصب یکی را انتخاب کنید. عوض کردنش بعداً یعنی مهاجرت داده.
| گزینه | کجا مناسب است | تنظیم |
|---|---|---|
PostgreSQL 16 |
محیط واقعی. پیشفرض، و همان چیزی که Docker Compose بالا میآورد. | DB_DRIVER=postgres |
| SQLite | آزمایش و استقرارهای کوچک تکسروری. کانتینر پایگاهداده ندارد. | DB_DRIVER=sqlite و DB_PATH=/app/data/nasnet_panel.db |
مهاجرتهای ساختار پایگاهداده در هر بار بالا آمدن بهطور خودکار اجرا میشوند، پس ارتقا معمولاً یعنی یک باینری تازه و یک راهاندازی دوباره. در هر حال اول یک نسخهٔ پشتیبان بگیرید.
TLS و کوکیها
میتوانید برای آزمایش روی یک IP خالی و HTTP ساده کار کنید، ولی کوکیهای نشست پنل
از نوع Secure هستند: بدون HTTPS ورود شما نمیماند. برای هر چیزی که واقعاً قرار
است استفاده کنید، یا دامنهای به سرور اشاره دهید و بگذارید کلاینت ACME داخلی گواهی
بگیرد، یا TLS را در یک پروکسی جلوی پنل خاتمه دهید.
صدور خودکار به ACME_EMAIL نیاز دارد، چون بدون آن صدور غیرفعال است.
برای نصب با Docker
| نیازمندی | مقدار |
|---|---|
| Docker Engine | نسخهٔ فعلی |
| افزونهٔ Compose | لازم است، چون مخزن یک docker-compose.yml دارد |
| سرویسهایی که بالا میآیند | برنامه، PostgreSQL 16 و Prometheus |
| والیومها | postgres_data، acme_data، prometheus_data و یک bind mount برای نسخههای پشتیبان |
رمزهایی که باید بسازید
هر مسیر نصبی به اینها نیاز دارد، هر طور که استقرار دهید. نصبکنندهٔ راهنما خودش میسازدشان. در غیر این صورت:
# رمز JWT که باید دستکم ۳۲ نویسه باشد
openssl rand -hex 32
# رمز مدیر به شکل هش bcrypt، نه متن ساده
htpasswd -nbBC 10 "" "your-password" | tr -d ':\n' | sed 's/$2y/$2a/'
قرار گرفتن رمز به شکل متن ساده در ADMIN_PASSWORD_HASH رایجترین دلیلی است که یک
نصب تازه اجازهٔ ورود نمیدهد.
ساخت از روی کد منبع
فقط برای توسعه لازم است. پنل وب با go:embed داخل باینری جاسازی میشود، پس باید
پیش از go build ساخته شود. به جای صدا کردن مستقیم go build از هدفهای
make استفاده کنید.
| نیازمندی | مقدار |
|---|---|
| Go | 1.26 یا بالاتر |
| Node.js | 22 یا بالاتر |
| مدیر بسته | pnpm |