Skip to content

About

Zero-dependency VLESS gateway for Railway - plain-text subscription, no UI, no login

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

7 Commits

Folders and files

Repository files navigation

ALIREZArely

گیت‌وی فوق‌سبک VLESS برای دیپلوی روی Railway — فقط یک پورت، فقط یک لینک.

هیچ وابستگی خارجی ندارد — فقط کتابخانه استاندارد پایتون. مثل فایل‌های raw گیت‌هاب: یک متن ساده که لینک را می‌دهد، بدون لاگین.

چه می‌کند

  • VLESS روی WebSocket روی پورت 443 با TLS (از طریق دامنه Railway)
  • GET / و GET /sub فقط یک لینک ساده برمی‌گرداند — بدون هیچ توکنی:
https://<domain>/sub
  • GET /admin — پنل ساده مثل X3-ui با رمز (پیش‌فرض admin):
    • Settings: فقط دو تا فیلد Host و Port (مثل X3-ui) — خالی باشد یعنی auto
    • دکمه Save / Reset to auto
    • دکمه Run test — یک تونل WebSocket+VLESS واقعی تا ipinfo.io می‌زند و IP خروجی را نشان می‌دهد
    • اگر domain:port یا لینک کامل vless:// در فیلد Host بچسبانید، خودش parse می‌کند

ساختار فایل‌ها

فایل وظیفه
main.py نقطه شروع: شنود پورت و تشخیص پروتکل (HTTP یا VLESS خام)
vless.py هندلر پروتکل VLESS (TCP و UDP)
httpd.py سرور HTTP مینیمال و مسیریابی
ws.py وب‌سوکت مینیمال بدون هیچ کتابخانه‌ای
links.py ساخت لینک و انتخاب host/port عمومی
admin.py پنل /admin + ذخیره تنظیمات + تست تونل

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

متغیر پیش‌فرض توضیح
UUID ساخته می‌شود حتماً ست کنید، وگرنه بعد از هر دیپلوی UUID عوض می‌شود
PORT 8080 پورت اصلی — Railway خودش ست می‌کند
DOMAIN — دامنه عمومی؛ خالی باشد از Host خود ریکوئست پر می‌شود
ADMIN_PASSWORD admin رمز ورود پنل /admin
TAG ALIREZArely اسم کانفیگ داخل لینک
WS_PATH /ws مسیر WebSocket داخل لینک
DATA_DIR /data مسیر ذخیره UUID و تنظیمات پنل

اولویت host/port لینک: تنظیمات ذخیره‌شده در /admin ← DOMAIN ← Host خود ریکوئست. پورت 443 با TLS ساخته می‌شود؛ پورت دیگر بدون TLS.

نکته: روی Railway اگر هر متغیر RAILWAY_* وجود داشته باشد، برنامه روی PORT + 8080 + 443 همزمان listen می‌کند تا دامنه عمومی همیشه به برنامه برسد — فرقی نمی‌کند Railway پورت را چه مقداری inject کند. نیازی به TCP Proxy در Railway نیست.

دیپلوی روی Railway

  1. این ریپو را Fork کنید و روی Railway از روی آن دیپلوی کنید.
  2. متغیر UUID را ست کنید (یا یک Volume به مسیر /data وصل کنید).
  3. لینک: https://<domain>/sub
  4. (اختیاری) رمز پنل: متغیر ADMIN_PASSWORD را ست کنید؛ پنل در https://<domain>/admin.
  5. (اختیاری) برای ماندگاری تنظیمات بعد از هر دیپلوی، یک Volume به /data وصل کنید.

سرعت build

  • railway.toml: build با Dockerfile و watchPatterns — تغییر tests/، README.md و task.txt باعث دیپلوی مجدد نمی‌شود.
  • .dockerignore: در build فقط خود فایل‌های py آپلود می‌شوند.
  • بدون requirements.txt — چون هیچ پکیج خارجی وجود ندارد، مرحله pip حذف شده است.

تست محلی

UUID=11111111-2222-3333-4444-555555555555 python main.py
curl http://127.0.0.1:8080/sub
python tests/test_gateway.py

About

Zero-dependency VLESS gateway for Railway - plain-text subscription, no UI, no login

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages