Skip to content
 
 

Repository files navigation

StanNG logo

⚡ StanNG

پنل مدیریتی VLESS-over-WebSocket | تک‌سرویس، بدون دیتابیس
Single-service VLESS-over-WebSocket panel — database‑free

Deploy on Railway Deploy to Render


📖 درباره پروژه

StanNG یک پنل مدیریتی سبک و تک‌سرویسه برای پروتکل VLESS-over-WebSocket است که بدون نیاز به دیتابیس خارجی، تمام اطلاعات را در یک فایل JSON محلی ذخیره می‌کند. این پروژه با هدف سادگی، امنیت و کارایی برای کاربران فارسی‌زبان و انگلیسی‌زبان طراحی شده است.


✨ ویژگی‌های کلیدی

  • بدون دیتابیس خارجی – همه چیز در data/db.json ذخیره می‌شود
  • راه‌اندازی یک‌باره – اولین بازدید = ساخت ادمین، بدون رمز پیش‌فرض
  • مدیریت کاربران پیشرفته – حجم (GB)، اعتبار (روز)، سقف درخواست، محدودیت اتصال همزمان، قفل IP
  • لینک اشتراک سازگار با v2rayNG – خروجی متن ساده (Plain Text) با لینک‌های VLESS قابل شناسایی
  • تنظیمات پیشرفته کانفیگ – Fingerprint، ALPN، SNI اختصاصی (Domain Fronting)، پارامترهای Fragment
  • ضد فروش – یک‌کلیک برای ابطال لینک‌های قدیمی (تولید مجدد UUID)
  • آپدیت خودکار درون‌پنلی – به‌روزرسانی از داخل پنل بدون از دست دادن کاربران و تنظیمات
  • صفحه وضعیت عمومی – هر کاربر بدون ورود به پنل، مصرف خود را مشاهده می‌کند
  • دو زبانه (فارسی/انگلیسی) – با قابلیت تغییر لحظه‌ای
  • واکنش‌گرا – سازگار با موبایل، تبلت و دسکتاپ
  • امنیت بالا – هش رمز با PBKDF2-SHA256، محدودیت تلاش ورود، کوکی امضاشده
  • جلوه‌های صوتی و انیمیشن – بدون وابستگی خارجی
  • دکمه پشتیبانی تلگرام – دسترسی مستقیم از هر صفحه
  • بیدارباش خودکار – جلوگیری از خواب سرویس در پلن‌های رایگان

🆕 تغییرات نسخه ۱.۴.۱

  • رفع مشکل v2rayNG با اصلاح encode پارامترهای path و alpn
  • خروجی لینک اشتراک به‌صورت متن ساده (Plain Text) به‌جای Base64
  • بازگشت کانفیگ‌های نمایشی (وضعیت مصرف و پیام رایگان) به لینک اشتراک
  • حذف کامل قابلیت Clean IP
  • اصلاح پروتکل لینک‌ها به https://

🚀 نصب و راه‌اندازی

نصب روی Railway (پیشنهادی)

  1. مخزن را Fork کنید یا به گیت‌هاب خودتان Push کنید.
  2. در Railway → New Project → Deploy from GitHub repo.
  3. بعد از دیپلوی، به <your-domain>/setup بروید و نام‌کاربری/رمز عبور بسازید.

💡 Railway از IP اختصاصی خودش استفاده می‌کند. در صورت فیلترشدن، حالت Fragment را از پنل (تنظیمات → تنظیمات پیشرفته) و در کلاینت فعال کنید.

نصب روی Render

  1. مخزن را Fork کنید.
  2. در Render → New → Web Service.
  3. بعد از دیپلوی به /setup بروید.

💡 روی Render پشت شبکهٔ Cloudflare هستید.

اجرای محلی

git clone https://github.com/<your-username>/StanNG.git
cd StanNG
pip install -r requirements.txt
python main.py
# → http://localhost:8000/setup

🔑 راه‌اندازی اولیه

پنل هیچ رمز پیش‌فرضی ندارد. اولین بازدیدکننده به صفحه‌ی /setup هدایت می‌شود و:

  1. یک نام کاربری (۳ تا ۳۲ کاراکتر، فقط حروف/عدد/زیرخط) وارد می‌کند.
  2. یک رمز عبور (حداقل ۶ کاراکتر) انتخاب می‌کند.
  3. از آن به بعد فقط با همان اطلاعات وارد می‌شود.

اطلاعات به‌صورت هش‌شده (PBKDF2-SHA256, 260k iterations) در data/db.json ذخیره می‌شود.


⚙️ متغیرهای محیطی

متغیر توضیح پیش‌فرض
PORT پورت اجرای سرویس 8000
STANNG_DATA_DIR مسیر ذخیره‌سازی دیتابیس JSON ./data

همه تنظیمات دیگر از داخل پنل قابل تغییر هستند.


🔄 آپدیت خودکار پنل

پنل قابلیت آپدیت خودکار از داخل داشبورد را دارد:

  1. در تنظیمات → مخزن گیت‌هاب برای آپدیت، آدرس مخزن خود را وارد کنید (مثلاً username/StanNG).
  2. در داشبورد → به‌روزرسانی پنل، روی بررسی نسخه جدید کلیک کنید.
  3. اگر نسخه جدید موجود بود، دکمه به‌روزرسانی همین الان ظاهر می‌شود.
  4. پنل به‌صورت خودکار آخرین نسخه را دانلود، اعتبارسنجی و جایگزین می‌کند.
  5. پوشه‌ی data/ (شامل db.json) هرگز لمس نمی‌شود — کاربران، رمز عبور و تنظیمات حفظ می‌شوند.
  6. سرویس ری‌استارت می‌شود و پنل با نسخه جدید بالا می‌آید.

⚠️ اگر پنل را به‌صورت دستی (با python main.py) اجرا می‌کنید، بعد از آپدیت باید خودتان دوباره آن را اجرا کنید.


📁 ساختار پروژه

StanNG/
├── main.py              # هسته اصلی برنامه (FastAPI)
├── vless_engine.py      # موتور VLESS
├── storage.py           # مدیریت دیتابیس JSON
├── colo_map.py          # تشخیص موقعیت سرور
├── requirements.txt     # وابستگی‌ها
├── Procfile             # دستور اجرا در Railway/Render
├── railway.json         # تنظیمات Railway
├── render.yaml          # تنظیمات Render
├── templates/           # قالب‌های HTML
│   ├── setup.html       # صفحه ساخت ادمین
│   ├── login.html       # صفحه ورود
│   ├── dashboard.html   # داشبورد مدیریت
│   ├── status.html      # صفحه وضعیت عمومی
│   └── _icons.html      # آیکون‌های SVG
├── static/              # فایل‌های استاتیک
│   ├── css/             # استایل‌ها (theme.css, dashboard.css)
│   ├── js/              # جاوااسکریپت (common.js, i18n.js, dashboard.js)
│   ├── fonts/           # فونت‌ها (Vazirmatn, Cinzel, MedievalSharp)
│   ├── sfx/             # افکت‌های صوتی
│   └── img/             # تصاویر (لوگو، پس‌زمینه، فاوآیکون)
├── docs/screenshots/    # تصاویر README
└── data/                # دیتابیس (db.json - ایجاد خودکار، git-ignored)

📡 مستندات API

احراز هویت

متد مسیر توضیح
GET /api/setup-status بررسی نیاز به راه‌اندازی
POST /api/setup ساخت حساب ادمین
POST /api/login ورود
POST /api/logout خروج
GET /api/me وضعیت نشست
POST /api/change-password تغییر نام‌کاربری/رمز

مدیریت کاربران

متد مسیر توضیح
GET /api/inbounds لیست کاربران
POST /api/inbounds ساخت کاربر جدید
PATCH /api/inbounds/{uid} ویرایش کاربر
DELETE /api/inbounds/{uid} حذف کاربر
POST /api/inbounds/{uid}/reset-usage ریست مصرف
POST /api/inbounds/{uid}/regenerate تولید UUID جدید
GET /api/inbounds/{uid}/links دریافت لینک‌ها
GET /api/inbounds/{uid}/qr تصویر QR

اشتراک

متد مسیر توضیح
GET /sub/{uid} لینک اشتراک (متن ساده)
GET /sub/{uid}/json لینک اشتراک JSON
GET /status/{uid} صفحه وضعیت عمومی
GET /api/status/{uid} وضعیت به‌صورت JSON

سیستم

متد مسیر توضیح
POST /api/settings ذخیره تنظیمات
GET /health Health check
GET /stats آمار سیستم
GET /api/ota/check بررسی نسخه جدید
POST /api/ota/update به‌روزرسانی خودکار
WS /ws/{uid} WebSocket VLESS

🔒 نکات امنیتی

  • رمزها با PBKDF2-HMAC-SHA256 (۲۶۰,۰۰۰ تکرار) هش می‌شوند.
  • نشست‌ها با کوکی امضاشده (itsdangerous) و انقضای ۷ روزه.
  • محدودیت تلاش ورود: ۶ بار ناموفق = قفل ۵ دقیقه‌ای IP.
  • data/db.json حاوی اطلاعات حساس است و در .gitignore قرار دارد.

📜 مجوز

این پروژه تحت مجوز MIT منتشر شده است.

منابع شخص‌ثالث بسته‌بندی‌شده:

  • فونت Vazirmatn (SIL OFL 1.1)
  • فونت‌های Cinzel / MedievalSharp (SIL OFL 1.1)
  • افکت‌های صوتی از Kenney.nl (CC0 1.0)
  • تصاویر تولیدشده اختصاصی با هوش مصنوعی

ساخته شده با 🪄 برای کسانی که فقط یک سرویس تمیز می‌خواهند

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages