The project's README from github.com/x4gpanell/3x-ui. As one markdown file: README.md.
این ریپازیتوری، 3x-ui رو به همراه یک nginx reverse proxy اجرا میکند که هم پنل وب و هم اینباند VLESS/WebSocket شما را از طریق یک پورت واحد (همان پورتی که Railway اختصاص میدهد) در دسترس میگذارد — دقیقاً مثل معماری RVG.
بهصورت پیشفرض، 3x-ui پنل وب را روی یک پورت و هر Inbound را روی پورت دیگری اجرا میکند. Railway Public Domain فقط به یک پورت داخلی وصل میشود، پس یا پنل در دسترس بود یا Inbound، نه هر دو. این نسخه با اضافه کردن nginx، هر دو را زیر یک پورت مدیریت میکند.
یک ریپازیتوری جدید در گیتهاب بسازید (خصوصی یا عمومی، فرقی ندارد) و این سه فایل را در ریشهی آن قرار دهید:
Dockerfilenginx.conf.templatestart.shDockerfile را تشخیص و بیلد میکند$PORT گوش میدهد)آدرس پنل شما این خواهد بود:
https://دامنهشما.up.railway.app/managepanel/
یوزرنیم/پسورد پیشفرض 3x-ui را وارد کنید (admin/admin) و حتماً بلافاصله از بخش تنظیمات تغییرش دهید.
در پنل، یک Inbound جدید بسازید با این تنظیمات دقیق:
| فیلد | مقدار |
|---|---|
| Protocol | VLESS |
| Listen Port | 8080 (این عدد نباید تغییر کند، چون nginx دقیقاً به همین پورت وصل است) |
| Listen IP | خالی یا 0.0.0.0 |
| Network | ws |
| Security | none |
| Path | هر مسیر دلخواه، مثلاً /cdn |
⚠️ اگر بخواهید پورت Inbound را عددی غیر از 8080 بگذارید، باید داخل فایل nginx.conf.template هم مقدار 127.0.0.1:8080 را با همان عدد جدید هماهنگ کنید و دوباره Push/Deploy کنید.
vless://UUID@دامنهشما.up.railway.app:443?encryption=none&security=tls&sni=دامنهشما.up.railway.app&fp=chrome&type=ws&host=دامنهشما.up.railway.app&path=%2Fcdn#MyConfig
جای UUID و دامنهشما و path را با مقادیر واقعی خودتان جایگزین کنید.
در مرورگر باز کنید:
https://دامنهشما.up.railway.app/cdn
باید پیام "Bad Request" ببینید (یعنی درخواست به Xray رسیده). اگر پنل هم به همین شکل جواب داد یعنی مسیر nginx سالم است:
https://دامنهشما.up.railway.app/managepanel/
/etc/x-ui) روی فایلسیستم موقت کانتینر است. اگر میخواهید بعد از هر Redeploy تنظیمات (کاربران، Inbound ها) پاک نشود، از بخش Volumes در Railway یک Volume به مسیر /etc/x-ui وصل کنید.