# 🚀 پنل SulgX (نسخه ۱.۱.۰) [![Release](https://img.shields.io/badge/Release-v1.1.0-brightgreen?style=for-the-badge)](https://github.com/SulgX/SulgX-Panel/releases) [![Python](https://img.shields.io/badge/Python-3.11%2B-blue?style=for-the-badge&logo=python)](https://www.python.org/) [![License](https://img.shields.io/badge/License-Non--Commercial-red?style=for-the-badge)](LICENSE) [![Platform](https://img.shields.io/badge/Platform-Railway%20%7C%20Render%20%7C%20Dockfly%20%7C%20Back4app%20%7C%20Scalingo-lightgrey?style=for-the-badge)](https://github.com/SulgX/SulgX-Panel) راهنما: English | فارسی ![SulgX Panel Screenshot](img/SulgX.png) ![SulgX Panel Screenshot](img/sc2.jpg) ![SulgX Panel Screenshot](img/sc.jpg)
> **پنل مدیریت اشتراک سبک و خودمیزبان برای VLESS روی WebSocket + TLS.** > تماماً در یک فایل پایتون نوشته شده و با FastAPI و SQLite کار می‌کند. --- ## 📖 فهرست مطالب - [✨ ویژگی‌های اصلی](#-ویژگی‌های-اصلی) - [🆕 تغییرات نسخه ۱.۱.۰](#-تغییرات-نسخه-۱۱۰) - [🚀 راه‌اندازی سریع و دیپلوی](#-راه‌اندازی-سریع-و-دیپلوی) - [☁️ پلتفرم‌های پشتیبانی‌شده](#-پلتفرم‌های-پشتیبانی‌شده) - [📁 ساختار مخزن](#-ساختار-مخزن) - [💸 راهنمای پهنای باند و هزینه](#-راهنمای-پهنای-باند-و-هزینه) - [⚖️ سلب مسئولیت](#-سلب-مسئولیت) - [🙏 قدردانی](#-قدردانی) --- ## ✨ ویژگی‌های اصلی ### 🔐 امنیت و دسترسی - **احراز هویت قوی:** استفاده از JWT برای نشست‌ها با کوکی‌های امن و HTTP‑only. - **ضد حملات بیروت‌فورس:** Rate limiting روی ورود و تعامل با API. - **گذرواژه‌های اجباری:** سیاست سخت‌گیرانه (حداقل ۸ کاراکتر، حروف بزرگ و کوچک و عدد). - **گزارش‌گیری ممیزی:** ثبت همه تلاش‌های ورود (موفق/ناموفق، IP، User‑Agent). ### 📡 مدیریت اینباند - **چرخه کامل عمر:** ایجاد، ویرایش، فعال/غیرفعال و حذف امن کانفیگ‌های VLESS. - **کنترل دقیق:** محدودیت ترافیک هر کاربر (گیگابایت)، روزهای انقضا و حداکثر اتصالات همزمان. - **مسیریابی پیشرفته:** Path، SNI، Host و Fingerprint TLS سفارشی برای هر اینباند. - **پشتیبانی از Fragment:** اضافه کردن بازه‌های تکه‌تکه‌سازی بسته‌ها (مثلاً `1000-2000`) برای دور زدن DPI. - **پرچم کشور:** اختصاص پرچم (🇮🇷، 🇩🇪 و …) به هر کانفیگ – در پنل و لینک‌های اشتراک نمایش داده می‌شود. - **عملیات دسته‌ای:** فعال/غیرفعال کردن، بازنشانی مصرف یا حذف گروهی کانفیگ‌ها. - **هسته غیرقابل حذف:** اینباند پیش‌فرض `SulgX` به‌طور سیستماتیک در برابر حذف تصادفی محافظت می‌شود. ### 📊 آنالیز لحظه‌ای - **موتور سرعت زنده:** نمودارهای دقیق Download/Upload با فیلتر تطبیقی برای کاهش نویز. - **متریک‌های پویا:** میله‌های ۲۴ ساعته ترافیک (مبتنی بر منطقه زمانی) و نمودارهای دایره‌ای توزیع مصرف. - **سلامت سیستم:** نمایش زنده CPU، Memory و Disk با fallback به `loadavg`. ### 🗺️ IP تمیز و اسکنر ایمن - **مدیریت IP:** افزودن، ویرایش و وارد کردن گروهی IPv4/IPv6 که به‌طور پویا به اشتراک‌ها الصاق می‌شوند. - **اسکنر ایمن:** اسکن پورت ۴۴۳ روی ۲۴ ارائه‌دهنده ابری از پیش‌تعریف‌شده (Cloudflare، AWS، Azure و …). - **ضد کرش:** رنج‌های CIDR بزرگ (مثلاً `/14`) را با سقف ۴۰۹۶ IP مدیریت می‌کند و از فریز مرورگر جلوگیری می‌کند. DNSهای عمومی (مثل `8.8.8.8`) به‌طور خودکار حذف می‌شوند. ### 🤖 ربات هوشمند تلگرام - **دو زبانه (انگلیسی/فارسی):** قالب‌های کاملاً قابل ترجمه. - **هشدار رویدادها:** ورود به پنل، کاربران منقضی‌شده، خطاها و اخطار مصرف ۹۰٪. - **پیش‌نمایش زنده:** نمایش لحظه‌ای قالب JSON در داشبورد. ### ⚡ Keep‑Alive هوشمند (ضد خواب) - **دو حالته:** Simple (برای Render/Railway) و Advanced (برای Dockfly). - **قابل تنظیم:** تنظیم بازه، فعال/غیرفعال و انتخاب حالت مستقیماً از تنظیمات پنل. - **خودترمیمی:** به‌طور خودکار هدرها و فواصل درخواست را برای جلوگیری از بلاک شدن تنظیم می‌کند. --- ## 🆕 تغییرات نسخه ۱.۱.۰ | دسته | بهبود | |------|-------| | **UI & UX** | بازبینی اساسی رابط کاربری شیشه‌ای. باگ انتخاب تم آبی برطرف شد و تنظیمات تم اکنون ماندگار هستند. نمای موبایل برای همه جدول‌ها و کنترل‌ها بهبود یافت. | | **کارایی** | کش لینک‌ها به‌طور دوره‌ای پاکسازی می‌شود تا از نشت حافظه جلوگیری کند. تسک‌های اسکنر با قطع WebSocket به درستی لغو می‌شوند. | | **ضد خواب** | موتور Keep‑Alive کاملاً بازطراحی شد. اکنون دو حالت `Simple` و `Advanced` دارد که می‌توان آن‌ها را به‌صورت زنده از پنل تغییر داد. | | **اینباندها** | افزودن پشتیبانی از **Fragment (FRAG)** برای بهبود دور زدن DPI. **پرچم‌های کشور** قابل اختصاص به هر اینباند هستند و در همه جا (پنل، لینک اشتراک، داشبورد کاربر) نمایش داده می‌شوند. | | **داشبورد کاربر** | نوار پیشرفت مصرف با رنگ‌های هشداردهنده (سبز → زرد → قرمز) اضافه شد تا کاربر نهایی میزان مصرف خود را فوراً ببیند. | | **تلگرام** | باگ تغییر زبان (انگلیسی/فارسی) برطرف شد و زبان انتخابی به درستی ذخیره و بازیابی می‌شود. | | **پایگاه داده** | مهاجرت خودکار اسکیما – نصب‌های قدیمی با ارتقا به این نسخه به‌طور خودکار ستون‌های `flag` و `fragment` را دریافت می‌کنند. | | **رفع باگ‌ها** | کارت‌های وضعیت تنظیمات اکنون با پیکربندی واقعی همگام هستند. انتخاب‌گرهای منطقه زمانی و زبان کاملاً هماهنگ شده‌اند. | برای فهرست کامل commitها، [انتشار ۱.۱.۰](https://github.com/SulgX/SulgX-Panel/releases/tag/v1.1.0) را ببینید. --- ## 🚀 راه‌اندازی سریع و دیپلوی > [!NOTE] > پروژه اکنون به‌طور بومی از طریق **Dockerfile** اجرا می‌شود. کافی است مخزن را فورک کنید، متغیرهای محیطی را تنظیم کنید و پلتفرم آن را برایتان بسازد. > برای پلتفرم‌های پیشنهادی نیازی به دستورهای دستی شروع یا پیکربندی Gunicorn نیست. ### 🍴 گام ۱: فورک و پیکربندی 1. این مخزن را در حساب گیت‌هاب خود فورک کنید. 2. (اختیاری) برای پایداری بیشتر، می‌توانید دیپلوی‌های خود را به **تگ انتشار** `v1.1.0` محدود کنید. ### ☁️ گام ۲: انتخاب پلتفرم هر پنج پلتفرم زیر از **WebSocket** پشتیبانی می‌کنند، می‌توانند مستقیماً از **Dockerfile** دیپلوی شوند و **نیاز به کارت اعتباری یا شماره تلفن ندارند** – فقط ایمیل یا حساب گیت‌هاب. - [**Railway**](https://railway.app/) ← توصیه اصلی (اعتبار رایگان، Volumeهای ماندگار) - [**Render**](https://render.com/) ← طرح رایگان با دیسک ماندگار - [**Dockfly**](https://dockfly.app/) ← ساده و کمینه - [**Back4app**](https://www.back4app.com/) ← مبتنی بر Parse، طرح رایگان سخاوتمندانه - [**Scalingo**](https://scalingo.com/) ← PaaS فرانسوی، ۳۰ روز آزمایشی رایگان > پلتفرم‌های دیگری مانند **Koyeb**، **Fly.io**، **Northflank** یا **Zeabur** نیز کاملاً با SulgX کار می‌کنند، اما برای ثبت‌نام نیاز به کارت اعتباری یا شماره تلفن دارند. ### 🚀 گام ۳: دیپلوی با Dockerfile 1. **مخزن فورک‌شده خود را** در پلتفرم انتخابی متصل کنید. 2. پلتفرم به‌طور خودکار `Dockerfile` موجود را تشخیص می‌دهد و برنامه را می‌سازد. 3. **متغیرهای محیطی** – متغیرهای زیر را در داشبورد پلتفرم اضافه کنید: | متغیر | مثال | توضیح | |----------|---------|-------------| | `ADMIN_PASSWORD` | `StrongPass!123` | رمز ورود به پنل (حداقل ۸ کاراکتر، دارای حروف بزرگ و کوچک و عدد). | | `SECRET_KEY` | `random_long_string` | کلید مخفی برای امضای کوکی‌های JWT. | | `DOMAIN` | `sulgx.up.railway.app` | دامنه عمومی شما. *برای تولید صحیح لینک‌ها به‌شدت توصیه می‌شود.* | | `DB_PATH` | `/data/panel.db` | مسیر فایل پایگاه داده SQLite. **مهم:** اگر پلتفرم شما Volume ماندگار پشتیبانی می‌کند (به جدول پلتفرم‌ها نگاه کنید)، یک Volume در مسیر `/data` متصل کنید تا داده‌هایتان امن بمانند. | | `PORT` | `8000` | (اختیاری) پورتی که برنامه روی آن گوش می‌دهد. اکثر پلتفرم‌ها این را نادیده می‌گیرند و از پورت خود استفاده می‌کنند. | 4. **ماندگاری داده‌ها** پلتفرم‌هایی که Volume ماندگار پشتیبانی می‌کنند، به شما اجازه می‌دهند پایگاه داده را بین راه‌اندازی‌های مجدد حفظ کنید. برای پلتفرم‌هایی که فاقد این قابلیت هستند (یا اگر امنیت بیشتری می‌خواهید)، یک **پایگاه داده خارجی PostgreSQL** با تنظیم متغیر محیطی `DATABASE_URL` متصل کنید. 5. **دسترسی به پنل** پس از دیپلوی، آدرس عمومی برنامه خود را باز کرده و به `/panel` بروید. با رمز تعیین‌شده در `ADMIN_PASSWORD` وارد شوید. ### 📌 نکات خاص هر پلتفرم
🔹 Railway - Volume ماندگار: **بله**. یک Volume در مسیر `/data` متصل کنید. - حالت Keep‑Alive: `Simple` بهترین عملکرد را دارد.
🔹 Render - دیسک ماندگار: **بله**. یک دیسک در مسیر `/data` متصل کنید. - حالت Keep‑Alive: `Simple`. (Render بعد از ۱۵ دقیقه می‌خوابد، اما Keep‑Alive آن را بیدار خواهد کرد.)
🔹 Dockfly - Volume ماندگار: **بله**، ولی باید آن را در تنظیمات سرویس با مسیر `/data` پیکربندی کنید. - حالت Keep‑Alive: `Advanced` برای جلوگیری از خواب کانتینر اکیداً توصیه می‌شود.
🔹 Back4app - Volume ماندگار: **خیر**. توصیه می‌شود `DB_PATH` را `/tmp/panel.db` بگذارید و از یک PostgreSQL خارجی (`DATABASE_URL`) برای داده‌های تولیدی استفاده کنید. - Keep‑Alive: طرح رایگان بیدار می‌ماند. حالت `Simple` کافی است.
🔹 Scalingo - ذخیره‌سازی ماندگار: **خیر** در دوره آزمایشی. اگر به ذخیره‌سازی دائمی نیاز دارید، از `DATABASE_URL` خارجی استفاده کنید. - دوره ۳۰ روزه آزمایشی فقط با ایمیل فعال می‌شود. پس از آن سرویس پولی می‌شود. - حالت Keep‑Alive: `Simple`.
--- ## ☁️ پلتفرم‌های پشتیبانی‌شده | پلتفرم | طرح رایگان | WebSocket | خوابیدن | Volume ماندگار | نیاز به کارت | نیاز به شماره | |----------|-----------|-----------|------------|-------------------|---------------|----------------| | **Railway** | ۵ دلار اعتبار/ماه | ✅ | خیر (با Keep‑Alive) | ✅ (1 GB) | خیر | خیر | | **Render** | ۷۵۰ ساعت/ماه | ✅ | بله (۱۵ دقیقه) | ✅ (1 GB) | خیر | خیر | | **Dockfly** | ۱ پروژه (۲۵۶ MB) | ✅ | خیر | ✅ | خیر | خیر | | **Back4app** | ۰.۲۵ CPU, ۲۵۶ MB | ✅ | خیر | خیر | خیر | خیر | | **Scalingo** | ۳۰ روز آزمایشی | ✅ | خیر | خیر | خیر | خیر | > [!NOTE] > محدودیت‌های طرح رایگان و قیمت‌ها ممکن است تغییر کنند. همواره وب‌سایت رسمی ارائه‌دهنده را برای اطلاعات به‌روز بررسی کنید. > برای پلتفرم‌هایی که فضای ذخیره‌سازی ماندگار ارائه نمی‌دهند، می‌توانید با تنظیم متغیر محیطی `DATABASE_URL` یک پایگاه داده PostgreSQL خارجی متصل کنید. این کار فایل SQLite را لغو کرده و داده‌هایتان را برای همیشه امن نگه می‌دارد. --- ## 📁 ساختار مخزن | فایل | هدف | |------|---------| | `main.py` | **برنامه اصلی** – بک‌اند FastAPI، تونل‌های WebSocket، و فرانت‌اند HTML/JS تعبیه‌شده. | | `Dockerfile` | **ساخت کانتینر** – یک ایمیج سبک Python 3.11 ایجاد کرده و پنل را راه‌اندازی می‌کند. | | `requirements.txt` | **وابستگی‌های پایتون** – نسخه‌های ثابت برای ساخت‌های پایدار. | | `render.yaml` | **نقشه Render** – دیپلوی خودکار روی Render. | | `Procfile` | **دستور شروع Heroku/Railway** (اختیاری) – در صورت استفاده از دیپلوی غیر Docker. | | `.gitignore` | **قوانین نادیده گرفتن گیت** – لاگ‌ها، کش و پایگاه داده را از نسخه‌بندی خارج نگه می‌دارد. | --- ## 💸 راهنمای پهنای باند و هزینه > [!IMPORTANT] > **پنل SulgX کاملاً رایگان است.** با این حال، ارائه‌دهنده ابری شما هزینه **پهنای باند خروجی** مصرف‌شده توسط کاربرانتان را دریافت می‌کند. > ارقام زیر تقریبی هستند و ممکن است متفاوت باشند. همواره به صفحه قیمت‌گذاری رسمی ارائه‌دهنده مراجعه کنید. | پلتفرم | پهنای باند رایگان (تقریبی) | هزینه هر گیگابایت اضافه (تقریبی) | |----------|--------------------------|-----------------------------| | **Railway** | پرداخت به‌ازای مصرف | $0.10 / GB | | **Render** | ۵ GB / ماه | $0.10 / GB | | **Dockfly** | مشخص نشده | بررسی با ارائه‌دهنده | | **Back4app** | ۱۰۰ GB / ماه | بررسی با ارائه‌دهنده | | **Scalingo** | مشخص نشده (دوره آزمایشی) | بررسی با ارائه‌دهنده | *داشبورد صورتحساب ارائه‌دهنده خود را زیر نظر داشته باشید و از محدودیت‌های ترافیک ماهانه پنل برای کنترل مصرف استفاده کنید.* --- ## ⚖️ سلب مسئولیت > [!WARNING] > **پیش از دیپلوی با دقت بخوانید** - **رایگان و غیرتجاری:** این نرم‌افزار کاملاً رایگان ارائه می‌شود. **فروش آن ممنوع است.** - **VPN تجاری ممنوع:** از این پنل برای فروش اشتراک VPN استفاده نکنید. این ابزار صرفاً برای اهداف شخصی، آموزشی و آزمایشی طراحی شده است. - **سوءاستفاده از پلتفرم ممنوع:** از طرح‌های رایگان سرویس‌های ابری با ایجاد حساب‌های متعدد با ایمیل‌های موقت سوءاستفاده نکنید. - **گزارش تخلف:** اگر مشاهده کردید شخصی دسترسی به این پنل را می‌فروشد یا از زیرساخت سوءاستفاده می‌کند، لطفاً به ارائه‌دهنده میزبانی مربوطه گزارش دهید. - **عدم مسئولیت:** توسعه‌دهنده هیچ‌گونه مسئولیتی در قبال خسارات، هزینه‌های اضافی صورتحساب یا نقض شرایط سرویس ندارد. شما به‌تنهایی مسئول ترافیک خود هستید. --- ## 🙏 قدردانی تشکر فراوان از پلتفرم‌ها و جوامعی که ابزارهای رایگان اینترنت را ممکن می‌سازند: * [**Render**](https://render.com/)، [**Railway**](https://railway.app/) و [**Dockfly**](https://dockfly.app/) برای زیرساخت‌های فوق‌العاده‌شان. * جوامع متن‌باز Python و JS: - [FastAPI](https://fastapi.tiangolo.com/) - [Chart.js](https://www.chartjs.org/) - [aiosqlite](https://github.com/omnilib/aiosqlite) * پروژه [**V2Fly**](https://www.v2fly.org/). ---

تقدیم به مردم سرزمینم ایران، از طرف SulgX