نصب
سه راه برای به کار انداختن نسنت پنل: Docker، اسکریپت نصب RouterOS، یا نصبکنندهٔ گرافیکی.
مرور کلی
نسنت پنل یک ایمیج (image) کانتینر چندمعماری است که هم JSON API و هم رابط کاربری
وب را روی یک پورت ارائه میدهد. سه راه پشتیبانیشده برای به کار انداختنش هست:
Docker ساده روی هر میزبانی (host)، اسکریپت install.sh که آن را داخل یک کانتینر
RouterOS روی خود روتر مستقر میکند، و یک نصبکنندهٔ گرافیکی برای Windows و macOS
که همان کار را بدون ترمینال انجام میدهد.
اگر همین حالا جایی روی شبکهٔ محلی (LAN) کانتینر اجرا میکنید، Docker را انتخاب کنید. اگر میخواهید پنل روی همان دستگاه میکروتیکی باشد که مدیریتش میکند، اسکریپت یا نصبکنندهٔ گرافیکی را انتخاب کنید.
پیش از شروع
- پنل باید بتواند به روترهای شما روی شبکهٔ محلی برسد.
- RouterOS نسخهٔ ۷ روی روترهایی که میخواهید مدیریت کنید.
- برای نصب روی خود روتر: بستهٔ
containerنصب و فعال باشد،device-modeکانتینر فعال باشد، حافظهٔ خارجی متصل باشد (پیشفرضdisk1/)، دستکم ۳۰ مگابایت RAM آزاد باشد و بردarmیاarm64یاx86_64باشد. - فعال کردن
device-modeکانتینر برای بار اول به تأیید فیزیکی نیاز دارد، یعنی یک فشار کوتاه دکمهٔ reset/mode، یا روی بردهایی که این دکمه را ندارند یک خاموش و روشن کامل. - برای اسکریپت:
bashوcurlوsshوscpوsha256sum(یاshasum) روی رایانهای که اسکریپت را از آن اجرا میکنید، به اضافهٔ روتری که روی پورتهای8291و22در دسترس باشد.
گامها
Docker
-
ایمیج را اجرا کنید و یک پورت میزبان را به پورت
80کانتینر نگاشت کنید.docker run -d \ --name nasnet \ -p 8080:80 \ --restart unless-stopped \ ghcr.io/nasnet-community/nasnet-panel:latest -
http://localhost:8080را باز کنید. -
اگر کانتینر باید مستقیم به روترهای شبکهٔ محلی شما برسد، جای آن از شبکهٔ میزبان استفاده کنید:
docker run -d --name nasnet --network=host --restart unless-stopped \ ghcr.io/nasnet-community/nasnet-panel:latestسرویس compose معادلش:
services: nasnet: image: ghcr.io/nasnet-community/nasnet-panel:latest container_name: nasnet network_mode: host environment: PORT: 80 restart: unless-stopped
روی روتر، با install.sh
-
اسکریپت را اجرا کنید. در حالت تعاملی آدرس IP روتر و کاربر و رمز را میپرسد:
bash scripts/install.sh -
یا یک فایل پیکربندی به سبک env بدهید تا بینظارت اجرا شود:
cat > router.env <<'EOF' ROUTER_IP=192.168.88.1 ROUTER_USER=admin ROUTER_PASS=secret EOF bash scripts/install.sh --config router.env -
منتظر health check بمانید. اسکریپت Winbox (
8291) و SSH (22) را وارسی میکند، نسخهٔ RouterOS و معماری و RAM آزاد و پشتیبانی کانتینر را بررسی میکند، tar کانتینر مربوط به معماری تشخیصدادهشده را میگیرد و درستیاش را تأیید میکند، شبکهٔ کانتینر را پیکربندی میکند، tar را بهdisk1/میفرستد، کانتینر را راه میاندازد و تا ۱۲۰ ثانیه/healthرا میپرسد. -
http://<router-ip>:8080/را باز کنید. اگر گام baseline LAN اجرا شده باشد، پنل به جای آن رویhttp://192.168.10.1:8080/است، پس اول دوباره وصل شوید یا lease مربوط به DHCP را تازه کنید.
برای برداشتن همهچیز:
bash scripts/install.sh --uninstall --config router.env
با نصبکنندهٔ گرافیکی
- فایل
nasnet-panel-installer-windows-amd64.exeیاnasnet-panel-installer-macos-universal.dmgرا از release دلخواهتان بگیرید. - Router IP or hostname و User و Password را پر کنید.
- اگر لازم است Winbox port یا SSH port یا HTTP LAN port یا HTTPS LAN port یا Image source را عوض کنید (Latest snapshot یا Release tag یا یک Local tar)، Advanced options را باز کنید.
- Install را بزنید و بگذارید کارش را بکند. اگر روتر برای device-mode تأیید فیزیکی بخواهد، نصبکننده Physical confirmation required را نشان میدهد، پس دکمهٔ reset را فشار دهید یا روتر را خاموش و روشن کنید، بعد Proceed.
مرجع
فلگهای install.sh
| فلگ | چه میکند | پیشفرض |
|---|---|---|
--dry-run |
هر کاری که میخواست بکند چاپ میکند و چیزی را عوض نمیکند. | خاموش |
--uninstall |
کانتینر، شبکه، قواعد NAT و tarball فرستادهشده را برمیدارد. | خاموش |
--config <file> |
ROUTER_IP، ROUTER_USER و ROUTER_PASS را از یک فایل به سبک env میخواند. |
ندارد |
--version <tag> |
تگ release برای نصب. | snapshot |
--image-tar <path> |
جای گرفتن یک دارایی release، از یک tar محلی استفاده میکند. | ندارد |
--lan-port <port> |
پورت رو به شبکهٔ محلی برای قاعدهٔ dst-nat. | 8080 |
--no-lan-baseline |
راهاندازی baseline LAN را رد میکند. | خاموش |
--no-rollback |
هنگام شکست، وضعیت نیمهکاره را همانجا میگذارد. | خاموش |
-v، --verbose |
خروجی پرجزئیات. | خاموش |
-h، --help |
طرز استفاده را نشان میدهد. | ندارد |
متغیرهای محیطی backend
| متغیر | چه میکند | پیشفرض |
|---|---|---|
PORT |
پورت TCP که API و SPA توکار روی آن گوش میدهند. | 8080 در dev و 80 در کانتینر |
HOST |
آدرس bind. | 0.0.0.0 |
ENVIRONMENT |
مقدار production مسیرهای مخصوص dev مثل Swagger UI را غیرفعال میکند. |
development |
BACKEND_URL |
زمان build. خالی بودنش یعنی SPA از آدرسهای نسبی به مبدأ (origin) خودش استفاده میکند. | خالی |
SENTRY_DSN |
زمان build. جایی که رابط کاربری گزارشهای crash را میفرستد. برای حذف گزارشدهی در کامپایل، رشتهٔ خالی بگذارید. | DSN پروژهٔ نسنت |
رفع مشکلات
| نشانه | چه کنید |
|---|---|
اسکریپت روی device-mode متوقف میشود. |
RouterOS بار اول که device-mode کانتینر فعال میشود تأیید فیزیکی میخواهد. دکمهٔ reset/mode را کوتاه فشار دهید، یا روتر را از برق بکشید و دوباره بزنید، بعد اسکریپت را دوباره اجرا کنید. |
| پنل پس از پایان اسکریپت در دسترس نیست. | گام baseline LAN شبکهٔ محلی روتر را روی LANBridgeSplit با 192.168.10.1/24 میبرد. lease مربوط به DHCP را تازه کنید و http://192.168.10.1:8080/ را امتحان کنید. |
| کانتینر بالا میآید و بعد بسته میشود. | روتر برای پنل دستکم ۳۰ مگابایت RAM آزاد لازم دارد. /system/resource/print را ببینید و کانتینرهای دیگر را متوقف کنید. |