VPS-এ 3X-UI প্যানেল কীভাবে ইনস্টল করবেন
Ubuntu-তে 3X-UI Xray প্যানেল ইনস্টল, ওয়েব ইন্টারফেস লক করা, TLS ইস্যু, VLESS Reality inbound তৈরি, ব্যবহারকারী ব্যবস্থাপনা এবং ডেস্কটপ ও মোবাইলে ক্লায়েন্ট সংযোগের উৎপাদন-মুখী সম্পূর্ণ গাইড।

3X-UI হলো Xray-core-এর জন্য একটি ওয়েব প্যানেল। এটি inbound (VLESS, VMess, Trojan, Shadowsocks ও অন্যান্য) পরিচালনা, সাবস্ক্রিপশন লিংক ইস্যু, ট্রাফিক সীমা ও মেয়াদ তারিখ সেট এবং JSON হাতে সম্পাদনা না করে লাইভ সংযোগ দেখতে দেয়। যাঁরা ইতিমধ্যে VPS চালান তাঁদের জন্য ছয় মাস পরে কেউ আপডেট করতে পারবে না এমন এককালীন কনফিগের বদলে রক্ষণাবেক্ষণযোগ্য প্রক্সি স্ট্যাক পাওয়ার দ্রুততম উপায়গুলোর একটি।
এই গাইড তাজা Ubuntu 22.04 বা 24.04 VPS-এর জন্য লেখা, যা বেশিরভাগ Hiddence Linux ইমেজ প্রথম বুটের পর দেখায়। আমরা বহুল ব্যবহৃত MHSanaei 3X-UI বিল্ড ইনস্টল করব, প্রথম লগইনে সব ডিফল্ট সিক্রেট বদলাব, প্যানেল HTTPS-এর পেছনে রাখব, শুধু যে পোর্টগুলো সত্যি দরকার সেগুলো খুলব, VLESS + Reality inbound তৈরি করব, তারপর ক্লায়েন্ট অ্যাপ চালাব। আমাদের Marzban নিবন্ধ আগে অনুসরণ করে থাকলে ধারণা একই — Xray-এর উপর প্যানেল — কিন্তু ইনস্টল পথ, ফাইল লেআউট ও দৈনন্দিন ওয়ার্কফ্লো আলাদা, তাই পোর্ট ভাগ করতে সত্যি না জানলে একই সার্ভারে দুটো মেশাবেন না।
কাঁচা Xray কনফিগের বদলে কেন 3X-UI
কাঁচা Xray কনফিগ এক ব্যবহারকারী ও এক inbound-এর জন্য ঠিক আছে। বন্ধু যোগ, Reality কী ঘোরানো, বা ফোন এক ট্যাপে ইমপোর্ট করতে পারে এমন সাবস্ক্রিপশন URL দরকার হলে প্যানেল ঘণ্টা বাঁচায়। 3X-UI ব্যবহারকারী স্থানীয় ডেটাবেসে রাখে, পরিবর্তনের পর Xray পরিষ্কার রিস্টার্ট করতে পারে এবং ট্রাফিক ও অনলাইন অবস্থার জন্য সংক্ষিপ্ত ড্যাশবোর্ড দেয়। নিজে থেকে জাদুকরী গোপনীয়তা স্তর নয়: VPS অবস্থান, TLS ফিঙ্গারপ্রিন্ট, inbound ধরন ও আপনার পরিচালন স্বাস্থ্যবিধি এখনও নির্ধারণ করে সেটআপ নেটওয়ার্কে কেমন আচরণ করে।
- হাতে সম্পাদিত JSON-এর বদলে inbound, ক্লায়েন্ট, ট্রাফিক ও মেয়াদের জন্য ওয়েব UI
- v2rayN, v2rayNG, Streisand, Happ ও অনুরূপ ক্লায়েন্টের জন্য অন্তর্নির্মিত সাবস্ক্রিপশন লিংক
- এক-কমান্ড ইনস্টল প্লাস নথিভুক্ত আপডেট পথ
- ছোট VPS-এ ভালো কাজ করে (ব্যক্তিগত ব্যবহারের জন্য 1 vCPU / 1 GB RAM যথেষ্ট)
- root আপনার নিজের সার্ভারে থাকে — প্যানেল কনফিগ তৃতীয় পক্ষের ক্লাউডে পাঠায় না
শুরুর আগে যা লাগবে
ডোমেইন ও ফায়ারওয়াল অংশ এড়িয়ে যাবেন না। পোর্ট 2053-এ HTTP ও ডিফল্ট পাসওয়ার্ডে ফেলে রাখা প্যানেল বট কয়েক ঘণ্টায় স্ক্যান করে। এই জিনিসগুলো প্রস্তুত করুন, তারপর SSH-এ root (বা sudo ব্যবহারকারী) হিসেবে সংযোগ করুন।
- পাবলিক IPv4 ঠিকানাযুক্ত Linux VPS (Ubuntu 22.04/24.04 সুপারিশকৃত)
- কমপক্ষে 1 GB RAM ও 10 GB ডিস্ক; অন্য সেবাও চালালে 2 GB RAM আর আরামদায়ক
- SSH-এ root বা sudo অ্যাক্সেস
- VPS IP-তে A রেকর্ড নির্দেশকারী ডোমেইন বা সাবডোমেইন (সঠিক প্যানেল সার্টিফিকেটের জন্য দরকার)
- প্রায় ২০–৩০ মিনিট, প্লাস A রেকর্ড এইমাত্র তৈরি করে থাকলে DNS অপেক্ষা
ধাপ ১: সিস্টেম আপডেট করুন ও টাইমজোন সেট করুন
নতুন VPS-এ প্রায়ই মুলতুবি নিরাপত্তা আপডেট ও UTC ঘড়ি থাকে। ইনস্টলারকে পুরনো OpenSSL বা curl-এর সঙ্গে লড়তে না দিয়ে আগে প্যাকেজ আপডেট করুন। টাইমজোন সেট করা Xray-এর জন্য ঐচ্ছিক, কিন্তু প্যানেল লগ ও সার্টিফিকেট মেয়াদ তারিখ পড়া অনেক সহজ করে।
ssh root@YOUR_VPS_IP
apt update && apt -y upgrade
apt -y install curl wget ca-certificates gnupg socat tar unzip
timedatectl set-timezone UTC
hostnamectl set-hostname panel
# Confirm DNS for your subdomain (should print your VPS IP):
dig +short panel.example.comধাপ ২: 3X-UI ইনস্টল করুন
MHSanaei 3X-UI বিল্ডের অফিসিয়াল ইনস্টল স্ক্রিপ্ট সর্বশেষ রিলিজ ডাউনলোড করে, Xray-core ইনস্টল করে, systemd সার্ভিস তৈরি করে এবং প্রথম-লগইন URL প্রিন্ট করে। আউটপুট মনোযোগে পড়ুন: এতে এলোমেলো পথ ও জেনারেট করা ব্যবহারকারী নাম/পাসওয়ার্ড আছে। সেগুলো সঙ্গে সঙ্গে পাসওয়ার্ড ম্যানেজারে কপি করুন। স্ক্রিপ্ট প্যানেল পোর্ট জিজ্ঞেস করলে 2053 রাখুন বা অব্যবহৃত উচ্চ পোর্ট নিন; ফায়ারওয়াল ধাপের জন্য মনে রাখুন।
bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# After install, useful commands:
x-ui # interactive menu (start/stop/restart, reset, update)
systemctl status x-ui # confirm the service is active
ss -tulpn | grep x-ui # see which port the panel listens onধাপ ৩: প্রথম লগইন ও তাৎক্ষণিক শক্ত করা
ইনস্টলার যে URL প্রিন্ট করেছে খুলুন, সাধারণত http://YOUR_IP:2053/<random-path>। জেনারেট করা ক্রেডেনশিয়াল দিয়ে লগইন করুন, তারপর Panel Settings (বা Configuration) এ যান। ব্যবহারকারী নাম ও পাসওয়ার্ড অনন্য মানে বদলান। প্যানেল ওয়েব বেস পাথ বদলাতে দিলে করুন — লম্বা এলোমেলো পথ ড্রাইভ-বাই স্ক্যানের বিশাল অংশ কাটে। 2053 ছাড়া অন্য কিছু চাইলে লিসন পোর্ট সেট করুন। সেভ করুন এবং UI থেকে বা systemctl restart x-ui দিয়ে প্যানেল রিস্টার্ট করুন, তারপর নতুন URL-এ আবার লগইন করুন।
তারপর আপনার বিল্ড দিলে দুই-ফ্যাক্টর প্রমাণীকরণ চালু করুন এবং কখনো ব্যবহার করবেন না এমন inbound টেমপ্লেট বন্ধ করুন। Xray সেটিংসে অন্য বিল্ড পিন করার নির্দিষ্ট কারণ না থাকলে প্যানেলের সঙ্গে আসা কোর সংস্করণ রাখুন। পরে Reality বা রিভার্স প্রক্সি সেই পোর্ট ব্যবহার করলে প্যানেল এখনই 80/443-এ খুলবেন না — এক কৌশল বেছে সেখানেই থাকুন।
- জেনারেট করা অ্যাডমিন লগইন সঙ্গে সঙ্গে বদলান
- গোপন ওয়েব পথ রাখুন; প্যানেল / এ নিয়ে যাবেন না
- অ-ডিফল্ট প্যানেল পোর্ট পছন্দ করুন ও লিখে রাখুন
- এই পাসওয়ার্ড অন্য সেবায় কখনো পুনরায় ব্যবহার করবেন না
ধাপ ৪: প্যানেলের জন্য TLS সার্টিফিকেট
ব্রাউজার HTTP-তে সতর্ক করবে, আর পাবলিক নেটওয়ার্কে অ্যাডমিন পাসওয়ার্ড সাদা টেক্সটে পাঠানো খারাপ ধারণা। পোর্ট 80 খালি থাকলে এবং ডোমেইন এই VPS-এ নির্দেশ করলে 3X-UI Let's Encrypt সার্টিফিকেট চাইতে পারে। প্যানেলে সার্টিফিকেট / SSL অংশ খুলুন, panel.example.com দিন এবং সার্টিফিকেট অনুরোধ করুন। পোর্ট 80 ইতিমধ্যে ব্যস্ত থাকলে DNS-01 ফ্লো ব্যবহার করুন বা সামনে Caddy/Nginx রেখে 127.0.0.1:2053-এ রিভার্স প্রক্সি করুন।
# Quick check that port 80 is free before the panel ACME challenge:
ss -tulpn | grep ':80'
# If you terminate TLS on Caddy instead of inside 3X-UI:
# Caddyfile example (panel stays on 127.0.0.1:2053):
# panel.example.com {
# reverse_proxy 127.0.0.1:2053
# }ধাপ ৫: VLESS Reality inbound তৈরি করুন
Inbounds-এ নতুন inbound তৈরি করুন। অনেক নেটওয়ার্কের জন্য মজবুত ডিফল্ট হলো Reality ও TCP সহ VLESS। প্যানেল পোর্ট নয় এমন পোর্ট নিন — অন্য কিছু বাঁধা না থাকলে 443 সাধারণ; নাহলে উচ্চ TCP পোর্ট ব্যবহার করুন ও ফায়ারওয়ালে সামঞ্জস্য রাখুন। প্রথম ক্লায়েন্টের জন্য UUID জেনারেট করুন, UI-তে Reality কী জোড়া তৈরি করুন, এবং dest / serverNames এমন বৈধ লক্ষ্যে সেট করুন যা অনুকরণের অনুমতি আছে (TLS 1.3 সমর্থিত পরিচিত সাইট)। inbound সেভ করুন এবং প্যানেল লগে নিশ্চিত করুন Xray ত্রুটি ছাড়া রিলোড হয়েছে।
তারপর দরকার হলে সেই inbound-এ অতিরিক্ত ক্লায়েন্ট যোগ করুন: প্রতি ব্যবহারকারী UUID, ঐচ্ছিক ইমেইল ট্যাগ এবং ঐচ্ছিক ট্রাফিক বা সময় সীমা পায়। ব্যবহারকারী সারি থেকে সংযোগ লিংক বা সাবস্ক্রিপশন URL কপি করুন। সেই লিংক পাবলিক চ্যাটে দেবেন না; সেগুলো পাসওয়ার্ডের সমতুল্য।
# On the server, confirm Xray is listening on the inbound port (example: 443):
ss -tulpn | grep -E ':443|:2053'
# Follow Xray logs if a client cannot connect:
journalctl -u x-ui -fধাপ ৬: ফায়ারওয়াল — শুধু যে পোর্ট দরকার
Ubuntu-তে UFW যথেষ্ট। নিজেকে আটকাতে না দিয়ে আগে SSH অনুমতি দিন, তারপর প্যানেল পোর্ট ও inbound পোর্ট। প্যানেল থেকে Let's Encrypt সার্টিফিকেট চেয়ে থাকলে ইস্যুর সময় 80/tcp-ও অনুমতি দিন। 443-এ Reality inbound-এর জন্য 443/tcp লাগে (এবং একই পোর্টে প্যানেল নয়)।
ufw allow OpenSSH
ufw allow 2053/tcp comment '3x-ui panel (change if you picked another port)'
ufw allow 443/tcp comment 'VLESS Reality inbound'
# ufw allow 80/tcp comment 'only if panel ACME needs it'
ufw enable
ufw status verboseক্লায়েন্ট সংযোগ করুন
Windows-এ v2rayN ক্লিপবোর্ড থেকে VLESS লিংক ইমপোর্ট করতে পারে। Android-এ v2rayNG বা অনুরূপ Xray ক্লায়েন্ট QR থেকে একই কাজ করে। iOS-এ VLESS Reality সমর্থিত ক্লায়েন্ট ব্যবহার করুন (যেমন Streisand বা Happ, আপনার অঞ্চলে এখন যা পাওয়া যায় তার উপর নির্ভর করে)। ইমপোর্টের পর প্রোফাইল চালু করুন ও প্যানেলের অনলাইন তালিকা দেখুন। ক্লায়েন্ট অফলাইন থাকলে সাধারণ কারণ ভুল পোর্ট, শুধু-TCP inbound-এ UDP চালু থাকা, dest-এর সঙ্গে না মিলা Reality serverName, বা ল্যাপটপের স্থানীয় ফায়ারওয়াল।
- Windows: v2rayN — VLESS লিংক ইমপোর্ট করুন, প্রয়োজনমতো রাউটিং সেট করুন (গ্লোবাল বনাম নিয়ম-ভিত্তিক)
- Android: v2rayNG — প্যানেল ব্যবহারকারী পাতা থেকে QR স্ক্যান করুন
- macOS / iOS: VLESS + Reality সমর্থিত ক্লায়েন্ট; একই লিংক পেস্ট করুন
- সাবস্ক্রিপশন URL: ক্লায়েন্টে যোগ করুন যাতে UUID ঘোরালে ম্যানুয়াল পুনরায় ইমপোর্ট না লাগে
আপডেট, ব্যাকআপ ও রিইনস্টল নিরাপত্তা
প্রতি প্যানেল আপডেটের আগে UI থেকে ব্যাকআপ ডাউনলোড করুন (ডেটাবেস + কনফিগ)। VPS-এর বাইরে রাখুন। আপডেট সাধারণত x-ui তারপর মেনুতে আপডেট অপশন, বা বিদ্যমান ইনস্টল শনাক্ত করা একই ইনস্টল স্ক্রিপ্ট। আপডেটের পর নিশ্চিত করুন systemd সার্ভিস সক্রিয় এবং inbound এখনও শুনছে। OS রিইনস্টল করলে হাতে প্রতি UUID আবার তৈরি না করে প্যানেলে ব্যাকআপ পুনরুদ্ধার করুন।
x-ui # choose update when prompted, or:
# bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)
# Backup files commonly live under /etc/x-ui/ — copy them off-box:
ls -la /etc/x-ui/
# Example offsite copy:
# scp -r /etc/x-ui/ you@backup-host:~/x-ui-backup-$(date +%F)/সমস্যা সমাধান
প্রথম দিনের বেশিরভাগ ব্যর্থতা DNS, পোর্ট বা Reality ক্ষেত্র। প্যানেল রিইনস্টল করার আগে এই তালিকা চালান। ব্যাকআপ ছাড়া রিইনস্টল প্রতি ক্লায়েন্ট UUID হারানোর পথ।
- ওয়েব UI খুলছে না: systemctl status x-ui, ss -tulpn ও UFW পরীক্ষা করুন। URL-এ গোপন পথ অন্তর্ভুক্ত করেছেন নিশ্চিত করুন।
- অ্যাডমিন পাসওয়ার্ড ভুলে গেছেন: সার্ভারে x-ui চালিয়ে রিসেট অপশন ব্যবহার করুন।
- ক্লায়েন্ট সংযোগ করে তারপর আটকে যায়: inbound পোর্ট ব্লক, বা TCP Reality inbound-এ UDP চালু করেছেন।
- প্যানেলে TLS ত্রুটি: ডোমেইন A রেকর্ড এখনও এখানে নির্দেশ করে না, বা ACME-এর সময় পোর্ট 80 ব্যস্ত।
- Reality হ্যান্ডশেক ব্যর্থ: dest/serverNames অমিল, বা অন্য সেবা ইতিমধ্যে 443-এ বাঁধা।
- উচ্চ CPU: 1 vCPU প্লানে অনেক inbound, বা খোলা পোর্টে স্ক্যান/বন্যা — ss ও প্যানেল অনলাইন সংখ্যা দেখুন।
নিরাপত্তা নোট যা সত্যিই গুরুত্বপূর্ণ
প্যানেলকে উৎপাদন অ্যাডমিন সফটওয়্যারের মতো দেখুন। এটি নতুন ব্যবহারকারী তৈরি ও প্রতি UUID পড়তে পারে। ওয়েব পোর্টে কে পৌঁছাতে পারে সীমাবদ্ধ করুন: স্থিতিশীল অফিস IP থাকলে UFW-তে 2053/tcp-এর জন্য শুধু সেই IP অনুমতি দিন। SSH কী-তে রাখুন, পাসওয়ার্ডে নয়। 443-এ Reality ব্যবহার করলে একই IP-তে অসম্পর্কিত পাবলিক ওয়েবসাইট চালাবেন না — এক পোর্টে প্রতিযোগী TLS স্ট্যাক আউটজের ক্লাসিক উৎস। প্যানেলের স্ক্রিনশট কখনো চ্যাটে ফাঁস হলে অ্যাডমিন পাসওয়ার্ড ঘোরান।
- শুধু SSH কী; কী কাজ করার পর পাসওয়ার্ড লগইন বন্ধ করুন
- পারলে ফায়ারওয়ালে প্যানেল পোর্ট সীমাবদ্ধ করুন
- /etc/x-ui সার্ভারের বাইরে নির্ধারিত সময়ে কপি করুন
- পাবলিক Telegram গ্রুপে সাবস্ক্রিপশন URL শেয়ার করবেন না
- ডিস্ক দেখুন: ব্যস্ত inbound-এ লগ ও ট্রাফিক পরিসংখ্যান বাড়ে
ব্যবহারিক টিপস
- অনেক ক্লায়েন্টের এক inbound দশটি প্রায় অভিন্ন inbound-এর চেয়ে চালানো সহজ
- ক্লায়েন্টকে ডিভাইস অনুসারে নাম দিন (laptop-anna, phone-ben) যাতে ট্রাফিক চার্টের অর্থ থাকে
- ওয়েবসাইটের জন্যও রিভার্স প্রক্সি লাগলে সাইট অন্য IP বা পোর্টে রাখুন — Reality-এর সঙ্গে 443 নিয়ে লড়বেন না
- যেকোনো x-ui রিস্টার্টের পর SSH সেশন ছাড়ার আগে এক ক্লায়েন্ট পরীক্ষা করুন
- আপডেটের আগে চেঞ্জলগ পড়ুন; শুক্রবার রাতে ‘latest’ লাফ এড়িয়ে যান
এখন 3X-UI systemd সার্ভিস হিসেবে ইনস্টল, লক করা অ্যাডমিন URL, প্যানেলে TLS, VLESS Reality inbound, সেই পোর্টের সঙ্গে মিলা ফায়ারওয়াল নিয়ম এবং ব্যাকআপ অভ্যাস আছে। inbound পাতা থেকে ক্লায়েন্ট যোগ করুন, প্রতি ডিভাইসে লিংক ইমপোর্ট করুন, এবং প্যানেল শুধু ব্যাকআপের পর আপডেট করুন। কিছু ভাঙলে পুনরুদ্ধার পথ VPS-এর x-ui মেনু — পুরো রিইনস্টল নয়।