Xin chào mọi người, mình là Nayue. Gần đây mình dành thời gian tìm hiểu về thiết lập VPS. Nhờ có thầy codex; mình thực sự đã hiểu từng bước bằng cách hỏi codex, và sau khi thành công, mình muốn viết bài chia sẻ với mọi người.
Hy vọng bài viết này hữu ích với bạn, và nếu mình có sai sót gì, hãy cho mình biết nhé~
1. Tại Sao Bạn Cần Tên Miền và VPS
Nếu bạn chỉ cần tạm thời vượt qua kiểm duyệt, cách dễ nhất là mua proxy có sẵn. Nhưng nếu bạn muốn tự kiểm soát cấu hình node, lựa chọn giao thức, quản lý chứng chỉ và phương thức đăng ký của client, thì tự xây dựng VPS sẽ kiểm soát được nhiều hơn và phù hợp cho việc sử dụng lâu dài.
Bài viết này nhằm giúp bạn có proxy riêng, nhưng hướng dẫn của mình không phải là toàn diện hay hoàn hảo nhất. Để đạt được nhiều chức năng hơn và cấu hình an toàn hơn, bạn cần nghiên cứu thêm nhiều hướng dẫn khác. Mục đích của hướng dẫn này là giúp bạn bắt đầu nhanh chóng.
Kết quả cuối cùng là: bạn có tên miền riêng, ví dụ: node.example.com.
Tên miền này trỏ đến VPS bạn đã mua. Dịch vụ proxy chạy trên VPS, client kết nối đến VPS thông qua tên miền này, sau đó VPS truy cập vào trang web mục tiêu.
Mối quan hệ tổng thể có thể hiểu như sau:
1Client Di động / Máy tính2 ↓3node.example.com4 ↓5Máy chủ Công cộng VPS6 ↓7Trang web Mục tiêu
Có hai thành phần chính ở đây: tên miền và VPS.
Vai trò của tên miền là cung cấp một điểm truy cập ổn định, dễ đọc và có thể ký chứng chỉ. Về lý thuyết, bạn có thể kết nối trực tiếp bằng IP của VPS, nhưng trên thực tế không được khuyến khích.
Có ba lý do:
Thứ nhất, tên miền dễ dàng di chuyển. Nếu IP VPS thay đổi, chất lượng đường truyền giảm, hoặc bạn đổi nhà cung cấp, bạn chỉ cần thay đổi bản ghi DNS của tên miền thành IP mới, và client vẫn kết nối đến cùng một tên miền.
Thứ hai, tên miền giúp dễ dàng xin chứng chỉ TLS. Bài viết này sử dụng phương án có TLS, và client xác minh chứng chỉ khi kết nối. Xin chứng chỉ bằng tên miền tự nhiên hơn và gần gũi hơn với cách sử dụng dịch vụ HTTPS thông thường.
Thứ ba, tên miền thuận tiện cho việc quản lý sau này. Ví dụ, bạn có thể đặt tên cho node chính:
Node dự phòng:
Dịch vụ đăng ký:
Điều này rõ ràng hơn nhiều so với việc nhớ một dãy IP.
Vai trò của VPS là cung cấp một máy chủ công cộng. Nó cần có IP công cộng, mạng ổn định, đủ băng thông và cho phép bạn đăng nhập qua SSH để cài đặt dịch vụ.
Bài viết này sử dụng hệ thống Ubuntu 22.04. Cấu hình không cần quá cao; 1C2G thường là đủ cho nhu cầu cá nhân. Điều bạn thực sự cần chú ý là vị trí trung tâm dữ liệu, băng thông và lưu lượng hàng tháng.
Cần lưu ý rằng giải pháp này chỉ phù hợp cho việc học tập và sử dụng cá nhân. Không chia sẻ node với người lạ, và không đăng thông tin nhạy cảm như link đăng ký, mã QR, UUID, hoặc IP máy chủ lên các trang công cộng.
2. Chuẩn Bị: Tên Miền, VPS, Tài Khoản Cloudflare, Công Cụ SSH
Trước khi bắt đầu, hãy chuẩn bị những thứ sẽ sử dụng lần này. Phần này không phức tạp, nhưng nên chuẩn bị mọi thứ một lần để tránh phải kiểm tra đi kiểm tra lại sau này.
Sự kết hợp mình thực sự sử dụng lần này là:
1Nhà đăng ký Tên miền: Porkbun2Quản lý DNS: Cloudflare Miễn phí3Khu vực VPS: Hồng Kông4Hệ điều hành VPS: Ubuntu 22.045Cấu hình VPS: 1C2G / 100Mbps / 30G Ổ cứng / 300G Lưu lượng hàng tháng6Script Máy chủ: v2ray-agent7Lõi Proxy: Xray-core8Giao thức Cuối cùng: VLESS + TCP + TLS + Vision9Client Máy tính: Clash Verge10Client Di động: Shadowrocket
Một số bạn có thể hỏi, "Ơ, nếu bạn mua VPS Hồng Kông, thì làm sao đăng ký AI?"
Haha, đừng lo. VPS này không phải để chơi AI. Nếu mục tiêu của bạn là sử dụng AI nước ngoài, thì hãy tìm một VPS ổn định tương ứng để mua. Bạn không cần phải sao chép chính xác nhà cung cấp VPS của mình; có rất nhiều đề xuất VPS trên X.
2.1 Một Tên Miền
Tên miền có thể được mua trên các nền tảng như Porkbun, Namecheap, hoặc Cloudflare Registrar. Lần này mình dùng Porkbun, giá khoảng 11 đô một năm, giá bình thường.
Khi mua tên miền, bạn chỉ cần mua tên miền; không cần thêm dịch vụ web hosting. Sau đó, chúng ta sẽ tự cấu hình dịch vụ trên VPS, và chứng chỉ sẽ được xin bằng Let's Encrypt miễn phí.
Khi mua, nên xác nhận những mục này:
1Tên miền đã mua thành công2Bảo vệ quyền riêng tư Whois đã bật3Tự động gia hạn đã bật4Xác thực 2FA tài khoản đã bật5Không mua thêm Web Hosting6Không mua thêm SSL trả phí
Nhắc lại, mua tên miền không phải để tạo website, mà để cung cấp một điểm truy cập ổn định cho VPS.
Ví dụ, sau này chúng ta sẽ cấu hình một tên miền phụ:
Trỏ nó đến IP công cộng của VPS. Khi client kết nối, nó sẽ truy cập tên miền này thay vì ghi trực tiếp IP VPS.

2.2 Một Tài Khoản Cloudflare
Cloudflare chịu trách nhiệm quản lý DNS ở đây; bạn không cần phải mua tên miền tại Cloudflare.
Cách làm thực tế của mình là:
1Tên miền mua tại Porkbun2DNS quản lý bởi Cloudflare
Tức là, thay đổi Nameservers trong Porkbun thành hai Nameservers do Cloudflare cấp. Như vậy, tất cả các bản ghi DNS sẽ được cấu hình trong Cloudflare sau này.
Bước này sẽ được hướng dẫn chi tiết sau. Bây giờ, chỉ cần chuẩn bị một tài khoản Cloudflare và chọn gói miễn phí.
Mở https://dash.cloudflare.com/
Sau khi đăng ký/đăng nhập:
1Thêm tên miền2↓3Nhập tên miền của bạn (ví dụ: xxx.com), nhập tên miền gốc4↓5Chọn gói Free6↓7Cloudflare sẽ quét các bản ghi DNS hiện có8↓9Tiếp tục
Cloudflare cuối cùng sẽ cung cấp cho bạn hai nameservers, có định dạng như:
1xxxx.ns.cloudflare.com2yyyy.ns.cloudflare.com

2.3 Một VPS
VPS là máy thực sự chạy dịch vụ. Nó cần có IPv4 công cộng, quyền truy cập SSH, và các cổng 80, 443 phải có thể sử dụng được.
Mình mua từ Global Cloud, https://my.locvps.net/idcSystem.aspxhttps://my.locvps.net/idcSystem.aspx)?
Mình không quảng cáo. Nhu cầu mỗi người khác nhau; bạn có thể mua VPS bạn cần ở nơi khác dựa trên yêu cầu của mình.

2.4 Công Cụ Đăng Nhập SSH
Mình sử dụng terminal tích hợp trên Mac để đăng nhập vào VPS. macOS không cần công cụ SSH bổ sung; chỉ cần mở terminal.
Định dạng lệnh đăng nhập SSH là:
1ssh root@<IP_VPS> -p <CỔNG_SSH>2Ví dụ:3ssh root@203.0.113.10 -p 43781
2.5 Phần Mềm Client
Sau khi máy chủ được thiết lập, bạn cần import node trên máy tính hoặc điện thoại.
Mình chủ yếu sử dụng hai client lần này:
1Mac: Clash Verge2iPhone: Shadowrocket
Clash Verge phù hợp để import subscription. Sau đó, v2ray-agent sẽ tạo subscription định dạng ClashMeta, có thể thêm trực tiếp vào Clash Verge.
Shadowrocket phù hợp để kiểm tra một node đơn lẻ trên iPhone. Ngay cả khi không có định dạng Shadowrocket cụ thể trong subscription, bạn có thể copy link vless:// do script cài đặt xuất ra và import thủ công.
3. Kết Nối Tên Miền với Cloudflare
Sau khi mua tên miền, bước tiếp theo là giao quyền quản lý DNS cho Cloudflare.
Còn nhớ hai nameservers lúc trước không? Chúng ta sẽ cấu hình chúng.
Vai trò của hai Nameservers này là thông báo cho hệ thống DNS toàn cầu:
Tên miền này sẽ được Cloudflare quản lý các bản ghi phân giải từ bây giờ.
Nói cách khác, Porkbun vẫn là nhà đăng ký tên miền, nhưng các bản ghi DNS được chuyển sang quản lý bởi Cloudflare.
Mình sẽ dùng Porkbun làm ví dụ để minh họa cách sửa đổi. Nếu bạn mua từ các nền tảng khác, bạn có thể tự tìm cách sửa đổi.
Vào chi tiết tên miền và tìm cấu hình Nameservers.
Thay thế Nameservers gốc của Porkbun bằng hai nameservers do Cloudflare cung cấp.



Sau khi lưu, bạn sẽ thấy hai địa chỉ Cloudflare này trong khu vực Nameserver của Porkbun.
Lưu bước này không có nghĩa là nó có hiệu lực ngay lập tức trên toàn cầu. Các thay đổi DNS cần thời gian để lan truyền, thường từ vài phút đến vài giờ. Trang Cloudflare cũng sẽ hiển thị thông báo:
Đang xác minh xem tên miền của bạn đã trỏ đến Cloudflare hay chưa.
Điều này là bình thường. Thông báo chính thức có thể nói 1 đến 2 giờ, tối đa 24 giờ. Thực tế, lần này mình chỉ đợi một lúc.
Sau khi sửa đổi, quay lại Cloudflare và đợi xác minh.
Khi thành công, Cloudflare sẽ hiển thị nội dung như:
Tên miền của bạn hiện đã được Cloudflare bảo vệ.
Hoặc hiển thị trạng thái site là Active.
Trạng thái này có nghĩa là:
Tên miền đã trỏ đến Cloudflare thành công. Các bản ghi DNS tiếp theo có thể được cấu hình trong Cloudflare.
Trước khi bước này hoàn thành, không nên vội vàng chạy script cài đặt máy chủ. Bởi vì việc xin chứng chỉ và xác minh IP tên miền sau này phụ thuộc vào việc lan truyền DNS chính xác. Nếu DNS chưa chuyển đổi hoàn toàn, bạn rất có thể sẽ gặp lỗi xác minh tên miền sau này.
Sau khi trang Cloudflare hiển thị thành công, tốt nhất nên xác nhận lại một lần nữa bằng lệnh.
Trong terminal Mac, thực thi:
dig +short NS example.com
Bình thường, nó sẽ trả về Nameservers của Cloudflare.
Nếu nó vẫn trả về Nameservers của Porkbun, điều đó có nghĩa là quản lý DNS chưa chuyển hoàn toàn sang Cloudflare. Lúc này, đừng tiếp tục cấu hình node; hãy đợi một lúc và kiểm tra lại.
4. Cấu Hình DNS: Thêm Bản Ghi và Giữ Mây Xám
Sau khi tên miền được kết nối với Cloudflare, bước tiếp theo là thêm bản ghi DNS trong Cloudflare thực sự trỏ đến VPS.
Cách sử dụng thực tế ở đây là:
1Tên miền gốc: xxx.com2Tên miền Node: node.xxx.com3IPv4 VPS: xx.xx.xx.xx4Trạng thái bản ghi Cloudflare: DNS only
4.1 Vào Trang DNS của Cloudflare
Đăng nhập Cloudflare, vào site của bạn, sau đó mở:
1DNS → Records
Ở đây bạn sẽ thấy các bản ghi DNS đã được Cloudflare quét hoặc đã tồn tại.
Nếu tên miền của bạn vừa chuyển từ Porkbun sang, bạn có thể thấy một số bản ghi mặc định, chẳng hạn như:
1Bản ghi A2Bản ghi CNAME3Bản ghi MX4Bản ghi TXT
Bạn có thể xóa những bản ghi này trước; chúng ta sẽ tự cấu hình bản ghi mới.
Vì mình định dùng 'node' làm tên miền node, mình cần thêm một bản ghi cho 'node'.
4.2 Thêm Bản Ghi A
Nhấp vào:
1Add record
Sau đó điền:
1Type: A2Name: node3Content: IPv4 Công cộng của VPS4TTL: Auto5Proxy status: DNS only

4.3 Tại Sao Ở Đây Bạn Phải Chọn Mây Xám
Có hai trạng thái phổ biến cho Proxy status trong Cloudflare:
1Proxied: Mây cam2DNS only: Mây xám
Trong bài viết này, bạn phải chọn:
DNS only
Tức là mây xám.
Sự khác biệt có thể hiểu đơn giản là:
Mây xám: Cloudflare chỉ chịu trách nhiệm phân giải DNS; client kết nối trực tiếp.
Mây cam: Client kết nối đến Cloudflare trước, sau đó Cloudflare chuyển tiếp đến site gốc.
Đối với các trang web thông thường, như blog, trang chủ, hoặc trang tĩnh, sử dụng mây cam cho phép bạn sử dụng CDN, WAF, bộ nhớ đệm của Cloudflare và ẩn IP gốc.
Nhưng hướng dẫn này sử dụng:
VLESS + TCP + TLS + Vision
Đây không phải là kịch bản reverse proxy cho trang web HTTP thông thường. Để cho phép client thiết lập kết nối trực tiếp với dịch vụ Xray trên VPS, bản ghi 'node' này nên giữ nguyên mây xám.
4.4 Xác Minh DNS Phân Giải Ra VPS
Sau khi lưu bản ghi DNS, thực thi trong terminal Mac:
1dig @1.1.1.1 +short A [tên miền của bạn, ví dụ: node.example.com]2dig @8.8.8.8 +short A [tên miền của bạn, ví dụ: node.example.com]3dig @223.5.5.5 +short A [tên miền của bạn, ví dụ: node.example.com]
Kết quả bình thường sẽ trả về IP VPS của bạn.
Lưu ý: Nếu máy tính của bạn đang bật proxy và sử dụng chế độ TUN, nó có thể ảnh hưởng đến đầu ra terminal. Vui lòng tắt chế độ TUN trước khi thực hiện xác minh này.
5. Khởi Tạo Máy Chủ
Đầu tiên, đăng nhập vào máy chủ qua SSH:
1Ví dụ:2ssh root@203.0.113.10 -p 43781
Khi đăng nhập lần đầu, terminal có thể hỏi có tin tưởng dấu vân tay máy chủ hay không:
1Are you sure you want to continue connecting (yes/no/[fingerprint])?
Nhập: yes.
Sau đó nhập mật khẩu root.
Sau khi đăng nhập, trước tiên cập nhật danh sách gói:
1apt update2apt upgrade -y
Nếu nó bị kẹt ở giao diện cấu hình màu xanh hoặc tím, đừng đóng cửa sổ. Ubuntu sẽ hỏi có giữ lại tệp cấu hình cục bộ khi nâng cấp một số gói nhất định.
Mình đã gặp hai lời nhắc về tệp cấu hình lần này.
Lời nhắc đầu tiên là:

Lời nhắc thứ hai là:
1/etc/cloud/cloud.cfg
Lời nhắc trong terminal trông như sau:
1cloud.cfg (Y/I/N/O/D/Z) [default=N] ?
Nhấn Enter trực tiếp ở đây để sử dụng mặc định: N
Trước khi quá trình nâng cấp hoàn tất, Ubuntu có thể hiển thị giao diện:
1Daemons using outdated libraries2Which services should be restarted?
Nó hỏi: một số dịch vụ vẫn đang tải các phiên bản thư viện cũ; có nên khởi động lại các dịch vụ này không?
Thông thường, giữ các lựa chọn mặc định và chọn: OK
Sau khi cập nhật hệ thống hoàn tất, cài đặt một số công cụ sẽ được sử dụng sau:
1apt install -y curl wget sudo vim ufw lsof unzip socat jq qrencode dnsutils
Các công cụ này sẽ được sử dụng cho:
1curl / wget: Tải script, kiểm tra truy cập2ufw: Cấu hình tường lửa3lsof / ss: Kiểm tra cổng đang sử dụng4unzip: Giải nén tệp5socat: Có thể được sử dụng khi xin chứng chỉ6jq: Xử lý JSON7qrencode: Tạo mã QR8dnsutils: Cung cấp lệnh dig
Bước cuối cùng để kiểm tra xem tên miền có trỏ đến máy chủ không:
1curl -4 ifconfig.me2dig +short A [tên miền của bạn, ví dụ: node.example.com]
Hai kết quả này phải khớp nhau.
6. Cấu Hình Tường Lửa và Sao Lưu Trước Khi Cài Đặt
Sau khi khởi tạo VPS hoàn tất, đừng vội cài đặt v2ray-agent. Hãy làm hai việc trước:
Đầu tiên, cấu hình tường lửa và xác nhận rằng các cổng SSH, 80 và 443 có sẵn.
Thứ hai, sao lưu các cấu hình quan trọng hiện tại để dễ dàng khôi phục nếu xảy ra sự cố sau này.
Bước này trông không phức tạp, nhưng rất quan trọng. Đặc biệt là tường lửa; nếu sai thứ tự, bạn có thể tự khóa mình khỏi máy chủ.
6.1 Xác Nhận Cổng Đăng Nhập Hiện Tại Trước
Trước khi cấu hình tường lửa, hãy xác nhận cổng nào bạn đang sử dụng để đăng nhập vào VPS.
Nếu lệnh đăng nhập của bạn là:
ssh root@203.0.113.10 -p 43781
Thì cổng SSH của bạn là:
43781
Đừng đoán bước này. Nhiều nhà cung cấp VPS không sử dụng cổng mặc định 22 mà cấp cho bạn một cổng SSH tùy chỉnh. Lần này mình cũng được cấp một cổng tùy chỉnh.
Nếu sau này bạn bật tường lửa nhưng quên cho phép cổng này, bạn có thể thấy:
Phiên SSH hiện tại không bị ngắt kết nối, nhưng các cửa sổ mới không bao giờ kết nối lại được với máy chủ.
Vì vậy, quy tắc tường lửa đầu tiên phải là cho phép cổng SSH.
6.2 Cho Phép Các Cổng Cần Thiết
Ba cổng cần thiết sau này trong bài viết này:
1Cổng SSH: Dùng để đăng nhập từ xa vào VPS280/tcp: Dùng để xác minh chứng chỉ HTTP3443/tcp: Dùng cho dịch vụ proxy cuối cùng
Thực thi trên VPS:
1ufw allow 43781/tcp2ufw allow 80/tcp3ufw allow 443/tcp
Nếu cổng SSH của bạn không phải là 43781, hãy thay thế bằng cổng của bạn.
Sau khi thực thi, bạn có thể kiểm tra các quy tắc trước:
ufw status verbose
Nếu nó hiển thị:
Status: inactive
Không sao cả; điều đó có nghĩa là các quy tắc đã được thêm vào, nhưng tường lửa chưa được bật.
6.3 Bật Tường Lửa UFW
Sau khi xác nhận cổng SSH đã được cho phép, hãy bật UFW:
ufw enable
Hệ thống sẽ nhắc:
Nhập:
y
Sau đó kiểm tra lại:
ufw status verbose
Bình thường bạn sẽ thấy nội dung như:
1Status: active23To Action From4-- ------ ----543781/tcp ALLOW Anywhere680/tcp ALLOW Anywhere7443/tcp ALLOW Anywhere843781/tcp (v6) ALLOW Anywhere (v6)980/tcp (v6) ALLOW Anywhere (v6)10443/tcp (v6) ALLOW Anywhere (v6)
Nếu bạn không cần IPv6, bạn có thể bỏ qua các quy tắc v6. Điều quan trọng ở đây là IPv4 SSH, 80 và 443 phải ở trạng thái ALLOW.
6.4 Mở Terminal Mới Để Kiểm Tra SSH
Sau khi bật tường lửa, đừng đóng cửa sổ SSH hiện tại ngay lập tức.
Cách đúng là: giữ cửa sổ hiện tại mở, mở một cửa sổ terminal mới trên Mac và đăng nhập lại vào VPS.
Thực thi:
ssh root@203.0.113.10 -p 43781
Nếu cửa sổ mới có thể đăng nhập bình thường, điều đó có nghĩa là tường lửa không chặn SSH.
Sau khi xác nhận mọi thứ ổn, hãy tiếp tục các bước tiếp theo.
Nếu cửa sổ mới không thể đăng nhập nhưng cửa sổ cũ vẫn còn, bạn có thể kiểm tra ngay lập tức:
ufw status verbose
Xác nhận xem bạn có quên cho phép cổng SSH hay không. Nếu thực sự cấu hình sai, bạn có thể tạm thời tắt UFW:
ufw disable
Sau đó cấu hình lại.
6.5 Sao Lưu Trước Khi Cài Đặt
Sau khi xác nhận tường lửa ổn, hãy bắt đầu sao lưu.
Mục tiêu của bước này là lưu trạng thái quan trọng trước khi cài đặt v2ray-agent. Sau đó, script sẽ thay đổi Nginx, thư mục chứng chỉ, cấu hình Xray, v.v. Nếu cài đặt thất bại, ít nhất bạn biết nó trông như thế nào trước đó.
Thực thi:
mkdir -p /root/backup-before-v2ray-agent
Sao lưu cấu hình Nginx:
Sao lưu thư mục chứng chỉ Let's Encrypt:
Sao lưu cấu hình SSH:

Ghi lại các cổng đang sử dụng hiện tại:
ss -tulpn > /root/backup-before-v2ray-agent/ports-before.txt
Ghi lại trạng thái tường lửa hiện tại:
ufw status verbose > /root/backup-before-v2ray-agent/ufw-status.txt
Cuối cùng, kiểm tra kết quả sao lưu:
ls -lah /root/backup-before-v2ray-agent
Đầu ra của mình lúc đó tương tự như:
1total 28K2drwxr-xr-x 4 root root 4.0K May 2 08:02 .3drwx------ 6 root root 4.0K May 2 08:02 ..4drwxr-xr-x 9 root root 4.0K May 2 07:56 letsencrypt5drwxr-xr-x 8 root root 4.0K May 2 07:56 nginx6-rw-r--r-- 1 root root 1.1K May 2 08:02 ports-before.txt7-rw-r--r-- 1 root root 3.1K May 2 06:58 sshd_config8-rw-r--r-- 1 root root 600 May 2 08:02 ufw-status.txt
6.6 Kiểm Tra Cổng Đang Sử Dụng Hiện Tại
Trước khi cài đặt v2ray-agent, tốt nhất nên xem 80 và 443 đã bị chiếm dụng chưa.
Thực thi:
Nếu không có đầu ra, điều đó có nghĩa là không có tiến trình nào đang lắng nghe trên cổng 80 hoặc 443.
Nếu Nginx đã được cài đặt, bạn có thể thấy Nginx đang lắng nghe trên cổng 80 hoặc 443. Sau đó, script v2ray-agent thường sẽ xử lý cấu hình Nginx, nhưng ít nhất bạn nên biết trạng thái trước khi cài đặt.
7. Cài Đặt v2ray-agent và Chọn Xray + VLESS Vision
Sau khi máy chủ đã sẵn sàng, bạn có thể chính thức cài đặt chương trình máy chủ.
Những gì mình sử dụng lần này là:
1Script máy chủ: v2ray-agent2Lõi: Xray-core3Giao thức: VLESS + TCP + TLS + Vision4Cổng: 4435Tên miền: node.example.com6Chứng chỉ: Let's Encrypt
7.1 Tải và Chạy Script Cài Đặt
Thực thi trên VPS:
wget -P /root -N --no-check-certificate "https://raw.githubusercontent.com/mack-a/v2ray-agent/master/install.sh"; && chmod 700 /root/install.sh && /root/install.sh
Lệnh này thực hiện ba việc:
1Tải install.sh về /root2Thêm quyền thực thi cho install.sh3Chạy script cài đặt
Khi mình chạy, thông tin script hiển thị tương tự như:
1Tác giả: mack-a2Phiên bản hiện tại: v3.5.143Github: https://github.com/mack-a/v2ray-agent4Mô tả: Script đồng tồn tại tám trong một
Menu chính sẽ xuất hiện sau khi script cài đặt chạy:
11. Cài đặt22. Cài đặt kết hợp tùy chỉnh33. Một chạm không tên miền44. Quản lý Hysteria 255. Quản lý REALITY66. Quản lý Tuic77. Quản lý người dùng88. Quản lý trang giả99. Quản lý chứng chỉ1010. Quản lý CDN node11...
Chọn ở đây:
Cài đặt kết hợp tùy chỉnh
Lý do là chúng ta muốn chọn rõ ràng:
1Xray-core2VLESS + TLS_Vision + TCP
Đừng để script đưa chúng ta vào các đường dẫn không tên miền hoặc mặc định khác.
7.2 Chọn Lõi: Xray-core
Sau khi vào cài đặt kết hợp tùy chỉnh, script sẽ nhắc chọn lõi:
1Chức năng 1/1: Chọn cài đặt lõi231. Xray-core42. sing-box
Mình chọn ở đây:
Xray-core
Lý do là mình đi theo phương án cổ điển Xray + VLESS Vision, có khả năng tương thích trưởng thành, và các client như Clash Verge và Shadowrocket có thể hỗ trợ.
Nhập:
1
Sau đó nhấn Enter.
7.3 Chọn Giao Thức: VLESS + TLS Vision + TCP
Tiếp theo, script sẽ hiển thị danh sách các giao thức. Các tùy chọn mình thấy lúc đó tương tự như:
10. VLESS+TLS_Vision+TCP [Được khuyến nghị]21. VLESS+TLS+WS [Chỉ khuyến nghị cho CDN]33. VMess+TLS+WS [Chỉ khuyến nghị cho CDN]44. Trojan+TLS [Không khuyến nghị]57. VLESS+Reality+uTLS+Vision [Được khuyến nghị]612. VLESS+Reality+X_HTTP+TLS [Có thể dùng CDN]
Chọn ở đây:
VLESS+TLS_Vision+TCP [Được khuyến nghị]
Nhập:
0
Sau đó nhấn Enter.
7.4 Cài Đặt Các Thành Phần Cơ Bản
Sau khi chọn giao thức, script sẽ bắt đầu cài đặt các phụ thuộc.
Quá trình mình thấy tương tự như:
1Tiến độ 1/12: Cài đặt công cụ2---> Kiểm tra và cài đặt bản cập nhật3---> Cài đặt unzip4---> Cài đặt socat5---> Cài đặt crontabs6---> Cài đặt jq7---> Cài đặt ping68---> Cài đặt qrencode9---> Cài đặt nginx10---> Cài đặt acme.sh
Một số thành phần sẽ được sử dụng sau sẽ được cài đặt ở đây:
1nginx: Liên quan đến trang giả và chuyển tiếp cục bộ2acme.sh: Xin chứng chỉ TLS3jq: Xử lý cấu hình4qrencode: Tạo mã QR5socat: Có thể được sử dụng trong quá trình xin chứng chỉ
Bước này có thể chậm hơn trên máy mới. Nếu không có đầu ra trong một thời gian dài, hãy đợi một lúc; đừng ngắt quãng thường xuyên.
7.5 Nhập Tên Miền Node
Script sẽ sau đó vào quá trình khởi tạo Nginx và chứng chỉ, nhắc nhập tên miền:
Vui lòng nhập tên miền cần cấu hình Ví dụ: www.v2ray-agent.com --->
Nhập tên miền của bạn, chẳng hạn như:
Lưu ý rằng bạn nên nhập toàn bộ tên miền phụ (subdomain) tại đây, không phải tên miền gốc.
7.6 Nhập Cổng: Sử Dụng Mặc Định 443
Sau khi nhập tên miền, script sẽ yêu cầu nhập cổng:
Vui lòng nhập cổng [Mặc định: 443], có thể nhập cổng tùy chỉnh [Nhấn Enter để dùng mặc định]
Nhấn Enter trực tiếp tại đây để sử dụng mặc định:
443
Script của tôi hiển thị:
---> Cổng: 443
Tường lửa đã cho phép:
443/tcp
Vì vậy có thể dùng trực tiếp tại đây.
7.7 Chờ Xác Minh IP Tên Miền
Sau khi cổng được xác nhận, script sẽ kiểm tra xem phân giải tên miền có đúng không.
Thông thường bạn sẽ thấy nội dung như:
1---> Xác minh IP tên miền thành công2---> Đang xóa cấu hình mặc định của Nginx3---> Nginx đã khởi động thành công4---> Nginx đã đóng thành công5---> Phát hiện cổng 443 đang mở6---> Đang kiểm tra IP tên miền7---> IP tên miền hiện tại đúng
Nếu bước này thất bại, đừng ép buộc cài đặt. Hãy quay lại kiểm tra DNS trước:
dig @1.1.1.1 +short A node.example.com
dig @8.8.8.8 +short A node.example.com
Đảm bảo kết quả trả về IP của VPS.
Cũng hãy kiểm tra xem bản ghi này trên Cloudflare có phải là đám mây xám hay không:
Trạng thái Proxy: Chỉ DNS
Nếu được đặt thành đám mây cam, khả năng phát hiện của script và các kết nối sau đó có thể bất thường.
7.8 Xin Chứng Chỉ TLS
Tiếp theo, bước xin chứng chỉ:
Tiến trình 3/12: Đang xin chứng chỉ TLS
Script sẽ hỏi:
Bạn có muốn sử dụng DNS API để xin chứng chỉ [Hỗ trợ NAT]? [y/n]
Tôi chọn:
n
Lý do là VPS này có IPv4 công khai, và cổng 80 và 443 đã được cho phép, nên không cần dùng DNS API để xin chứng chỉ.
Sau đó script sẽ cho bạn chọn tổ chức cấp chứng chỉ:
11. letsencrypt [Mặc định]22. zerossl33. buypass [Không hỗ trợ đăng ký DNS]
Nhấn Enter trực tiếp tại đây để sử dụng mặc định:
letsencrypt
Let's Encrypt là chứng chỉ miễn phí, hoàn toàn đủ dùng cho cá nhân. Bản thân chứng chỉ không phải yếu tố chính gây ra bất thường node; điều thực sự cần đảm bảo là:
Phân giải tên miền chính xác
Xin chứng chỉ thành công
Tác vụ gia hạn bình thường
Cấu hình máy chủ chính xác
7.9 UUID và Tên Người Dùng
Sau đó, script sẽ yêu cầu UUID:
Vui lòng nhập UUID tùy chỉnh [phải hợp lệ], [Nhấn Enter] để tạo UUID ngẫu nhiên
Khuyến nghị nhấn Enter trực tiếp để script tự động tạo ngẫu nhiên.
Tiếp theo là yêu cầu tên người dùng:
Vui lòng nhập tên người dùng tùy chỉnh [phải hợp lệ], [Nhấn Enter] để tạo tên ngẫu nhiên
Bạn cũng có thể nhấn Enter trực tiếp để tạo ngẫu nhiên. Bạn cũng có thể nhập tên dễ nhận biết cho mình, nhưng đừng dùng tên thật, số điện thoại, email hoặc thông tin cá nhân khác.
7.10 Xuất Tài Khoản Sau Khi Cài Đặt
Sau khi cài đặt hoàn tất, script sẽ bước vào bước cuối cùng:
Tiến trình 12/12: Tài khoản
Kết quả của tôi lúc đó là:
1VLESS TCP TLS_Vision [Khuyến nghị]2Định dạng chung (VLESS+TCP+TLS_Vision)3vless://...4Văn bản thuần đã định dạng (VLESS+TCP+TLS_Vision)5Loại giao thức: VLESS6Địa chỉ: node.example.com7Cổng: 4438ID người dùng: ...9Bảo mật: tls10client-fingerprint: chrome11Phương thức truyền: tcp12flow: xtls-rprx-vision13Tên tài khoản: ...14Mã QR VLESS
Điều này cho thấy máy chủ đã tạo một node VLESS Vision.
7.11 Kiểm Tra Trạng Thái Xray và Nginx
Sau khi cài đặt, đừng vội import vào client. Hãy kiểm tra trạng thái dịch vụ trên VPS trước:
1systemctl status xray --no-pager2systemctl status nginx --no-pager3ss -tulpn | grep -E '(:443|:80|xray|nginx)'
Kết quả chính tôi đã kiểm tra:
1xray.service active (running)2nginx.service active (running)3xray listening on public *:4434nginx listening on 127.0.0.1:31300 and 127.0.0.1:31302
Điều này có nghĩa là:
Cổng 443 công khai được Xray tiếp quản, Nginx cung cấp trang web giả hoặc dịch vụ phụ trợ trên các cổng nội bộ, và các dịch vụ đã khởi động bình thường.
Nếu xray.service không active (running), bạn cần xem log trước; đừng tiếp tục import vào client.
Bạn có thể thực thi:
journalctl -u xray --no-pager -n 80
8. Tạo Liên Kết Đăng Ký và Chuẩn Bị cho Clash Verge
Sau khi cài đặt ở phần trước, script đã xuất ra một liên kết node vless:// đơn lẻ. Liên kết này có thể import trực tiếp vào các client như Shadowrocket.
Nhưng nếu bạn đang sử dụng Clash Verge trên Mac, khuyến nghị nên tạo một liên kết đăng ký (subscription link).
Lợi ích của liên kết đăng ký là:
1Client chỉ cần thêm đăng ký một lần2Làm mới đăng ký khi thông tin node thay đổi3Quản lý dễ dàng hơn cho nhiều người dùng hoặc nhiều node4Clash Verge có thể sử dụng trực tiếp định dạng ClashMeta
Khi tôi thực sự tạo đăng ký, tôi đã sử dụng chức năng quản lý người dùng của v2ray-agent:
1vasma2→ 7. Quản lý người dùng3→ 2. Xem đăng ký4→ Chọn định dạng ClashMeta
8.1 Mở Lại Menu v2ray-agent
Sau khi script cài đặt kết thúc, nó sẽ tự động tạo một lệnh tắt:
vasma
Thực thi trên VPS:
vasma
Điều này sẽ mở lại menu chính của v2ray-agent.
Trong menu, bạn có thể thấy:
11. Cài đặt22. Cài đặt kết hợp tùy chỉnh33. Một chạy không tên miền44. Quản lý Hysteria 255. Quản lý REALITY66. Quản lý Tuic77. Quản lý người dùng88. Quản lý trang web giả99. Quản lý chứng chỉ1010. Quản lý node CDN11...
Chọn tại đây:
Quản lý người dùng
8.2 Vào Xem Đăng Ký
Sau khi vào quản lý người dùng, bạn sẽ thấy menu như:
1Chức năng 1/1: Quản lý tài khoản231. Xem tài khoản42. Xem đăng ký53. Quản lý đăng ký khác64. Thêm người dùng75. Xóa người dùng
Chọn tại đây:
Xem đăng ký
Bước này sẽ tạo lại nội dung đăng ký cho tài khoản cục bộ.
Script cũng sẽ nhắc nhở điều gì đó như:
Xem đăng ký sẽ tạo lại đăng ký cho tài khoản cục bộ. Bạn cần nhập thủ công giá trị muối (salt) đã mã hóa md5. Nếu không biết, chỉ cần dùng một giá trị ngẫu nhiên. Nó không ảnh hưởng đến nội dung của các đăng ký từ xa đã được thêm.
Nếu bạn chỉ dùng cho riêng mình, chỉ cần dùng giá trị ngẫu nhiên mặc định.
8.3 Nhập Cổng Đăng Ký
Script sẽ nhắc:
1Bắt đầu cấu hình đăng ký, vui lòng nhập cổng đăng ký23Vui lòng nhập cổng tùy chỉnh [phải hợp lệ], các cổng không được trùng lặp, [Nhấn Enter] để lấy cổng ngẫu nhiên
Có hai lựa chọn tại đây:
Nhấn Enter trực tiếp: Script tạo một cổng ngẫu nhiên
Nhập thủ công một cổng: Dễ nhớ cho bạn, nhưng không được xung đột với các cổng hiện có
Tôi khuyên người mới bắt đầu nên nhấn Enter trực tiếp để script tạo cổng ngẫu nhiên.
Nếu bạn chọn cổng tùy chỉnh, bạn cần xác nhận thêm:
Cổng không bị chiếm dụng
Tường lửa đã cho phép cổng này
Nhóm bảo mật của nhà cung cấp cũng cho phép cổng này
Để giảm biến số, sử dụng cổng ngẫu nhiên cho lần cấu hình đầu tiên sẽ dễ dàng hơn.
8.4 Nhắc Trang Web Giả
Script có thể nhắc:
Bắt đầu thêm trang web giả
Phát hiện đã cài đặt trang web giả, bạn có muốn cài đặt lại không [y/n]
Nếu bạn đã cấu hình trang web giả khi cài đặt VLESS Vision trước đó, thường chọn:
n
Có nghĩa là không cài đặt lại.
Cài đặt lại cũng không sao, nhưng không cần thêm biến số trong hướng dẫn cho người mới bắt đầu. Mục tiêu hiện tại của chúng ta chỉ là tạo một liên kết đăng ký, không phải cấu hình lại trang web giả.
8.5 Cách Chọn Giá Trị Muối (Salt)
Sau đó, script sẽ yêu cầu một muối:
Vui lòng nhập giá trị muối, [Nhấn Enter] để sử dụng ngẫu nhiên
Chỉ cần nhấn Enter tại đây.
Vai trò của muối có thể hiểu đơn giản là:
Một giá trị ngẫu nhiên dùng để tạo nội dung liên quan đến đăng ký
Không cần chỉ định thủ công cho mục đích cá nhân. Một giá trị ngẫu nhiên thực sự an toàn hơn và tránh việc sử dụng lại các chuỗi cố định.
8.6 Chọn Định Dạng Đăng Ký ClashMeta
Sau khi đăng ký được tạo, script sẽ hiển thị nhiều định dạng.
Bạn sẽ thấy:
Default
ClashMeta
sing-box
Đối với việc sử dụng Clash Verge trên Mac, khuyến nghị chọn:
ClashMeta
Lý do là Clash Verge hỗ trợ cấu hình ClashMeta tốt hơn, và các trường như VLESS Vision, fingerprint, flow cũng phù hợp hơn với định dạng ClashMeta.
Nếu bạn sử dụng client khác, bạn có thể chọn dựa trên hỗ trợ của client:
Clash Verge: ClashMeta
sing-box: sing-box
Shadowrocket: Thường có thể import trực tiếp liên kết vless:// đơn lẻ
Đừng chỉ copy định dạng "Default" vào Clash Verge. Hãy sử dụng ClashMeta nếu có.
8.7 Lưu Liên Kết Đăng Ký
Sau khi script xuất ra liên kết đăng ký, hãy copy liên kết đăng ký ClashMeta và lưu nó ở một nơi an toàn trên máy tính trước.
Lưu ý: Không lưu nó trong các kho lưu trữ công khai, không đăng nó trong bài viết, và không hiển thị toàn bộ liên kết trong ảnh chụp màn hình.
Lý do đơn giản: nếu người khác có được liên kết đăng ký của bạn, họ có thể sử dụng node của bạn, tiêu tốn băng thông VPS của bạn, và thậm chí khiến node bị lạm dụng.
9. Import Đăng Ký vào Clash Verge và Kiểm Tra
Máy chủ đã được cài đặt và liên kết đăng ký đã được tạo. Tiếp theo, cấu hình client trên Mac.
9.1 Thêm Đăng Ký
Mở Clash Verge và vào trang cấu hình. Các phiên bản khác nhau có thể có văn bản giao diện khác nhau một chút, thường gọi là:
Profiles
Hoặc:
Configuration
Nhấp để thêm đăng ký mới và điền liên kết đăng ký ClashMeta đã tạo ở bước trước.
Thông thường bạn cần điền:
Name: Tùy chỉnh, ví dụ: My VPS
Type: Remote
URL: Liên kết đăng ký ClashMeta
Đừng đặt toàn bộ liên kết đăng ký vào tên.
Sau khi điền xong, lưu lại, sau đó nhấp để cập nhật đăng ký.
Nếu đăng ký bình thường, Clash Verge sẽ kéo cấu hình node và hiển thị node VLESS Vision vừa tạo trong danh sách node.
9.2 Chọn Node
Sau khi đăng ký được cập nhật thành công, vào trang chọn node.
Thông thường, bạn sẽ thấy một hoặc nhiều nhóm chính sách, ví dụ:
ProxyAutoGlobalNodeName
Chọn node vừa tạo.
9.3 Bật System Proxy hoặc TUN
Clash Verge thường có hai công tắc phổ biến:
System Proxy
TUN Mode
Hiểu đơn giản:
System Proxy: Cho phép hầu hết các ứng dụng tuân theo cài đặt proxy hệ thống đi qua Clash
TUN Mode: Ở cấp độ thấp hơn, chiếm nhiều lưu lượng hơn, bao gồm một số ứng dụng không tuân theo proxy hệ thống
Khi kiểm tra lần đầu, bạn có thể bật:
System Proxy
Sau đó sử dụng trình duyệt để truy cập một trang web kiểm tra.
Nếu một số ứng dụng không tuân theo proxy hệ thống, thì hãy xem xét bật TUN.
9.4 Kiểm Tra IP Thoát
Mở trình duyệt và truy cập:
Nếu proxy đang hoạt động, IP hiển thị trên trang sẽ là IP thoát của VPS, không phải IP băng thông rộng cục bộ hoặc IP nhà mạng di động của bạn.
Bạn cũng có thể thực thi trong terminal:
curl https://ifconfig.me
Nếu system proxy của Clash Verge không hoạt động với terminal, hãy sử dụng kết quả trang trình duyệt làm tiêu chuẩn.
9.5 Kiểm Tra Các Trang Web Bên Ngoài và Video
Sau khi IP thoát bình thường, bạn có thể tiếp tục kiểm tra một số trang web:
1Google2YouTube3GitHub4Telegram5Các trang web bạn thực sự cần truy cập
Khi kiểm tra, đừng chỉ kiểm tra xem trang chủ có mở được không, mà hãy kiểm tra:
Trang web có tải bình thường không
1Trang web có tải bình thường không2Video có phát được không3Có ổn định trong vài phút không4Có thường xuyên mất kết nối không5Tốc độ có đáp ứng kỳ vọng không
Nếu YouTube có thể mở nhưng video rất lag, không nhất thiết là lỗi cấu hình; có thể là:
1Chất lượng đường truyền VPS trung bình2Tắc nghẽn giờ cao điểm3Giới hạn băng thông hàng tháng4Quy tắc client chưa được đặt đúng
Nếu một trang web cụ thể báo lỗi nhưng các trang web khác bình thường, đừng vội cài đặt lại máy chủ. Bạn có thể đánh giá theo các ý tưởng sau:
1Chỉ một trang web bất thường: Ưu tiên kiểm tra quy tắc, DNS và hạn chế của trang web đích2Tất cả các trang web đều bất thường: Ưu tiên kiểm tra kết nối node, đăng ký và trạng thái máy chủ3Điện thoại có thể truy cập nhưng Mac không thể: Ưu tiên kiểm tra Clash Verge / TUN / Fake-IP4VPS có thể truy cập qua curl nhưng client không thể: Ưu tiên kiểm tra cấu hình client
Lời Kết
Khi tất cả các bước trên đã hoàn thành, xin chúc mừng, bạn đã có proxy riêng của mình!
Hãy cực kỳ cẩn thận không chia sẻ nó với người khác, và đặc biệt không liên quan đến giao dịch tiền bạc, vì điều đó có thể rất nguy hiểm~
Ngoài ra, xin nhắc lại, hướng dẫn này chỉ dành cho mục đích bắt đầu. Nhiều chuyên gia sẽ thực hiện thêm nhiều cấu hình bổ sung hoặc sử dụng các giao thức khác; hãy tự khám phá thêm nhé!
Bài viết này được tự động chuyển đổi và định dạng từ Markdown bởi YouMind.





