Quay lại blog
Tháng Tám 19, 2026Hướng dẫn

Cách cài đặt bảng điều khiển 3X-UI trên VPS

Hướng dẫn đầy đủ, hướng tới môi trường production: cài đặt bảng 3X-UI Xray trên Ubuntu, khóa giao diện web, cấp TLS, tạo inbound VLESS Reality, quản lý người dùng và kết nối client trên máy tính lẫn điện thoại.

Cách cài đặt bảng điều khiển 3X-UI trên VPS

3X-UI là bảng web cho Xray-core. Nó cho phép quản lý inbound (VLESS, VMess, Trojan, Shadowsocks và các loại khác), cấp liên kết đăng ký, đặt giới hạn lưu lượng và ngày hết hạn, rồi xem kết nối trực tiếp mà không phải sửa JSON bằng tay. Với người đã chạy VPS, đây là một trong những cách nhanh nhất để có một ngăn xếp proxy có thể bảo trì, thay vì cấu hình dùng một lần mà sáu tháng sau chẳng ai dám đụng.

Hướng dẫn này viết cho VPS Ubuntu 22.04 hoặc 24.04 mới tinh, đúng kiểu hầu hết image Linux Hiddence sau lần khởi động đầu. Chúng ta sẽ cài bản 3X-UI MHSanaei được dùng rộng rãi, đổi mọi bí mật mặc định ngay lần đăng nhập đầu, đặt bảng sau HTTPS, chỉ mở các cổng thực sự cần, tạo inbound VLESS + Reality, rồi đi qua ứng dụng client. Nếu bạn đã theo bài Marzban của chúng tôi, ý tưởng tương tự — một bảng trên Xray — nhưng đường cài, bố cục tệp và quy trình hàng ngày khác nhau, vì vậy đừng trộn cả hai trên cùng máy chủ trừ khi bạn thực sự biết cách tách cổng.

Vì sao 3X-UI thay vì cấu hình Xray thô

Cấu hình Xray thô ổn với một người dùng và một inbound. Ngay khi bạn thêm bạn bè, xoay khóa Reality, hoặc cần URL đăng ký mà điện thoại nhập bằng một chạm, bảng tiết kiệm hàng giờ. 3X-UI lưu người dùng trong cơ sở dữ liệu cục bộ, khởi động lại Xray sạch sau thay đổi, và đưa ra bảng điều khiển gọn cho lưu lượng cùng trạng thái online. Bản thân nó không phải lớp ẩn danh kỳ diệu: vị trí VPS, dấu vân tay TLS, loại inbound và thói quen vận hành của bạn vẫn quyết định cách thiết lập hành xử trên mạng.

  • Giao diện web cho inbound, client, lưu lượng và hạn dùng thay vì JSON sửa tay
  • Liên kết đăng ký tích hợp cho v2rayN, v2rayNG, Streisand, Happ và các client tương tự
  • Cài bằng một lệnh cộng đường cập nhật có tài liệu
  • Chạy tốt trên VPS nhỏ (1 vCPU / 1 GB RAM đủ cho dùng cá nhân)
  • Bạn giữ root trên máy mình — bảng không gửi cấu hình lên đám mây bên thứ ba

Những gì cần trước khi bắt đầu

Đừng bỏ qua phần tên miền và tường lửa. Bảng để HTTP cổng 2053 với mật khẩu mặc định sẽ bị bot quét trong vài giờ. Chuẩn bị các mục này, rồi kết nối bằng root (hoặc người dùng sudo) qua SSH.

  • Linux VPS có địa chỉ IPv4 công cộng (khuyến nghị Ubuntu 22.04/24.04)
  • Ít nhất 1 GB RAM và 10 GB đĩa; 2 GB RAM thoải mái hơn nếu còn chạy dịch vụ khác
  • Quyền root hoặc sudo qua SSH
  • Tên miền hoặc tên miền phụ có bản ghi A trỏ tới IP VPS (cần cho chứng chỉ bảng đúng nghĩa)
  • Khoảng 20–30 phút, cộng thời gian chờ DNS nếu bạn vừa tạo bản ghi A

Bước 1: Cập nhật hệ thống và đặt múi giờ

VPS mới thường còn bản vá bảo mật đang chờ và đồng hồ ở UTC. Cập nhật gói trước để trình cài không phải chiến với OpenSSL hoặc curl cũ. Đặt múi giờ là tùy chọn với bản thân Xray, nhưng làm nhật ký bảng và ngày hết hạn chứng chỉ dễ đọc hơn nhiều.

bash
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

Bước 2: Cài đặt 3X-UI

Script cài chính thức của bản MHSanaei 3X-UI tải bản phát hành mới nhất, cài Xray-core, tạo dịch vụ systemd và in URL đăng nhập đầu tiên. Đọc kỹ đầu ra: nó chứa đường dẫn ngẫu nhiên và tên người dùng/mật khẩu được tạo. Sao chép ngay vào trình quản lý mật khẩu. Nếu script hỏi cổng bảng, giữ 2053 hoặc chọn cổng cao chưa dùng; chỉ cần nhớ cho bước tường lửa.

bash
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
Giữ phiên SSH này mở. Nếu bạn tự khóa mình khỏi bảng, menu x-ui trên máy chủ có thể đặt lại mật khẩu quản trị mà không cần cài lại.

Bước 3: Đăng nhập lần đầu và củng cố ngay

Mở URL mà trình cài in ra, thường là http://YOUR_IP:2053/<random-path>. Đăng nhập bằng thông tin được tạo, rồi vào Panel Settings (hoặc Configuration). Đổi tên người dùng và mật khẩu thành giá trị độc nhất. Nếu bảng cho đổi đường dẫn gốc web, hãy đổi — đường dẫn ngẫu nhiên dài cắt một lượng lớn quét tình cờ. Đặt cổng lắng nghe nếu muốn khác 2053. Lưu và khởi động lại bảng từ UI hoặc bằng systemctl restart x-ui, rồi đăng nhập lại trên URL mới.

Tiếp theo, bật xác thực hai yếu tố nếu bản của bạn có, và tắt các mẫu inbound bạn sẽ không bao giờ dùng. Trong cài đặt Xray, để nguyên phiên bản core đi kèm bảng trừ khi bạn có lý do cụ thể để ghim bản khác. Đừng lộ bảng trên cổng 80/443 nếu những cổng đó sau này dùng cho Reality hoặc reverse proxy — chọn một chiến lược và bám theo.

  • Thay ngay tài khoản quản trị được tạo sẵn
  • Giữ đường dẫn web bí mật; đừng chuyển bảng về /
  • Ưu tiên cổng bảng không mặc định và ghi lại
  • Không bao giờ dùng lại mật khẩu này trên dịch vụ khác

Bước 4: Chứng chỉ TLS cho bảng

Trình duyệt sẽ cảnh báo HTTP, và gửi mật khẩu quản trị dạng rõ trên mạng công cộng là ý xấu. 3X-UI có thể yêu cầu chứng chỉ Let's Encrypt nếu cổng 80 trống và tên miền trỏ tới VPS này. Trong bảng, mở phần chứng chỉ / SSL, nhập panel.example.com, rồi yêu cầu chứng chỉ. Nếu cổng 80 đã bị chiếm, dùng luồng DNS-01 hoặc đặt Caddy/Nginx phía trước và reverse-proxy tới 127.0.0.1:2053.

bash
# 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
# }
Chứng chỉ trên bảng chỉ dành cho giao diện web. VLESS Reality là chuyện TLS khác (ngụy trang thành site khác) và không dùng tệp Let's Encrypt này cho lưu lượng client.

Bước 5: Tạo inbound VLESS Reality

Trong Inbounds, tạo inbound mới. Mặc định vững cho nhiều mạng là VLESS với Reality và TCP. Chọn cổng không phải cổng bảng — 443 phổ biến nếu không gì khác gắn ở đó; không thì dùng cổng TCP cao và thống nhất trên tường lửa. Tạo UUID cho client đầu, tạo cặp khóa Reality trong UI, và đặt dest / serverNames tới mục tiêu hợp pháp bạn được phép bắt chước (site nổi tiếng hỗ trợ TLS 1.3). Lưu inbound và xác nhận Xray tải lại không lỗi trong nhật ký bảng.

Rồi thêm client phụ trên inbound đó nếu cần: mỗi người dùng có UUID, thẻ email tùy chọn, và giới hạn lưu lượng hoặc thời gian tùy chọn. Sao chép liên kết kết nối hoặc URL đăng ký từ hàng người dùng. Đừng đăng những liên kết đó trên chat công khai; chúng tương đương mật khẩu.

bash
# 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

Bước 6: Tường lửa — chỉ các cổng bạn cần

UFW trên Ubuntu là đủ. Cho phép SSH trước để không tự khóa, rồi cổng bảng và cổng inbound. Nếu bạn yêu cầu chứng chỉ Let's Encrypt từ bảng, cũng cho phép 80/tcp trong lúc cấp. Inbound Reality trên 443 cần 443/tcp (và không đặt bảng trên cùng cổng).

bash
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

Kết nối client

Trên Windows, v2rayN có thể nhập liên kết VLESS từ clipboard. Trên Android, v2rayNG hoặc client Xray tương tự làm điều đó từ mã QR. Trên iOS, dùng client hỗ trợ VLESS Reality (ví dụ Streisand hoặc Happ, tùy cái hiện có ở khu vực bạn). Sau khi nhập, bật hồ sơ và kiểm tra danh sách online của bảng. Nếu client vẫn offline, nguyên nhân thường là sai cổng, UDP còn bật trên inbound chỉ TCP, Reality serverName không khớp dest, hoặc tường lửa cục bộ trên laptop.

  • Windows: v2rayN — nhập liên kết VLESS, đặt định tuyến tùy nhu cầu (toàn cục so với theo quy tắc)
  • Android: v2rayNG — quét QR từ trang người dùng trên bảng
  • macOS / iOS: client có hỗ trợ VLESS + Reality; dán cùng liên kết
  • URL đăng ký: thêm vào client để xoay UUID không cần nhập lại thủ công

Cập nhật, sao lưu và an toàn khi cài lại

Trước mỗi lần cập nhật bảng, tải bản sao lưu từ UI (cơ sở dữ liệu + cấu hình). Lưu ngoài VPS. Cập nhật thường là x-ui rồi tùy chọn cập nhật trong menu, hoặc cùng script cài phát hiện cài đặt sẵn có. Sau cập nhật, xác nhận dịch vụ systemd đang active và inbound vẫn lắng nghe. Nếu bạn cài lại OS, khôi phục bản sao lưu trong bảng thay vì tạo lại từng UUID bằng tay.

bash
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)/

Khắc phục sự cố

Hầu hết lỗi ngày đầu là DNS, cổng hoặc trường Reality. Đi hết danh sách này trước khi cài lại bảng. Cài lại không có bản sao lưu là cách người ta mất mọi UUID client.

  • Không mở được giao diện web: kiểm tra systemctl status x-ui, ss -tulpn, và UFW. Xác nhận bạn đã gồm đường dẫn bí mật trong URL.
  • Quên mật khẩu quản trị: chạy x-ui trên máy chủ và dùng tùy chọn đặt lại.
  • Client kết nối rồi đứng: cổng inbound bị chặn, hoặc bạn bật UDP trên inbound Reality chỉ TCP.
  • Lỗi TLS trên bảng: bản ghi A của tên miền chưa trỏ tới đây, hoặc cổng 80 bận lúc ACME.
  • Bắt tay Reality thất bại: dest/serverNames không khớp, hoặc dịch vụ khác đã gắn 443.
  • CPU cao: quá nhiều inbound trên gói 1 vCPU, hoặc quét/lũ trên cổng mở — kiểm tra ss và số online trên bảng.

Ghi chú bảo mật thực sự quan trọng

Coi bảng như phần mềm quản trị production. Nó có thể tạo người dùng mới và đọc mọi UUID. Hạn chế ai tới được cổng web: nếu bạn có IP văn phòng ổn định, chỉ cho phép IP đó trong UFW cho 2053/tcp. Giữ SSH bằng khóa, không mật khẩu. Đừng chạy website công cộng không liên quan trên cùng IP nếu dùng Reality trên 443 — các ngăn TLS cạnh tranh trên một cổng là nguồn sự cố kinh điển. Xoay mật khẩu quản trị nếu ảnh chụp bảng từng lọt vào chat.

  • Chỉ khóa SSH; tắt đăng nhập mật khẩu sau khi khóa hoạt động
  • Hạn chế cổng bảng trên tường lửa khi có thể
  • Sao lưu /etc/x-ui ra khỏi máy theo lịch
  • Không chia sẻ URL đăng ký trong nhóm Telegram công khai
  • Theo dõi đĩa: nhật ký và thống kê lưu lượng phình trên inbound bận

Mẹo thực tế

  • Một inbound với nhiều client dễ vận hành hơn mười inbound gần như giống nhau
  • Đặt tên client theo thiết bị (laptop-anna, phone-ben) để biểu đồ lưu lượng có nghĩa
  • Nếu còn cần reverse proxy cho website, đặt site trên IP khác hoặc cổng khác — đừng tranh 443 với Reality
  • Sau bất kỳ lần khởi động lại x-ui, thử một client trước khi rời phiên SSH
  • Đọc changelog trước khi cập nhật; đừng nhảy 'latest' vào tối thứ Sáu

Bạn giờ có 3X-UI cài như dịch vụ systemd, URL quản trị đã khóa, TLS trên bảng, inbound VLESS Reality, quy tắc tường lửa khớp các cổng đó, và thói quen sao lưu. Thêm client từ trang inbound, nhập liên kết trên từng thiết bị, và chỉ cập nhật bảng sau khi đã sao lưu. Nếu có gì hỏng, menu x-ui trên VPS mới là đường phục hồi — không phải cài lại toàn bộ.