Trong trường hợp bạn có sẵn router OpenWRT và chạy được Docker thì có thể làm theo hướng dẫn này để cài 3x-ui trên Docker để sử dụng.
Bạn nên tham khảo 2 bài viết này , vì sử dụng 3x-ui trên router của bạn sẽ cần tên miền riêng và cài Docker trước..
Hướng dẫn cấu hình tên miền riêng cho IP động (Dynamic IP) trên OpenWRT và bật HTTPS
Hướng dẫn cài đặt & sử dụng Docker trên OpenWRT
Ok, khi đã cài đặt tên miền riêng và Docker thành công rồi ta tiến hành cài 3x-ui như sau:
Mục lục nội dung
Pull Image
Đầu tiền bạn cần vào Docker -> Images trên router để Pull Image 3x-ui về. Bạn có thể tìm rất nhiều phiên bản Image trên Docker Hub. Trong hướng dẫn này mình dùng:
bigbugcc/3x-ui:v2.3.9
Bản này tuy không phải là bản mới nhất nhưng mình thấy chạy ổn định và cũng đầy đủ tính năng. Bạn có thể test thêm các bản khác. Nhưng theo mình bản này chạy ổn và đủ rồi.

Tạo Containers
Sau khi đã có Image rồi ta tiến hành tạo Containers mới với Image này. Bạn vào phần Docker -> Containers chọn Add để thêm Containers mới.

Có một vài Setting quan trọng mà bạn cần lưu ý dưới đây, các Setting khác không được thống kê dưới đây bạn để mặc định hoặc tùy chỉnh theo ý bạn.
Container Name: Bạn điền gì cũng được.
Docker Image: Bạn chọn Image 3x-ui vừa Pull về ở bước trên.
Networks: Bạn chọn giao diện mạng là brigde để containers được cấp một địa chỉ IP nội bộ riêng, sau này khi bạn mở port sẽ dễ dàng hơn, tránh lỗi.
Set custom DNS servers: Tại đây bạn có thể thay đổi DNS của containers này, nếu bạn không điền gì cả thì DNS mặc định sẽ là DNS của Google (8.8.8.8).
Environmental Variable(-e): Tại đây bạn phải điền 2 trường.
XRAY_VMESS_AEAD_FORCED=false
TZ=Asia/Ho_Chi_Minh
Ở đây mình dùng múi giờ VN nên để là Ho_Chi_Minh nếu bạn dùng múi giờ khác hãy thay đổi cho phù hợp.
Bind Mount(-v): Bạn cũng phải điền thêm 2 đường dẫn thư mục sau
/etc/x-ui/
/root/cert/
Exposed Ports(-p): Đây là nơi bạn sẽ set Port truy cập vào Panel của 3x-ui, mặc định của Image này là 2053, bạn cũng có thể sử dụng port khác nếu muốn. Ở ví dụ này mình sử dụng port 2053.
Sau khi cấu hình xong hết trông nó sẽ như ảnh dưới, bạn nhấn vào Submit để tạo Containers.


Sau khi Submit tạo mới Containers xong bạn tích chọn vào Containers mới tạo và ấn Start.

Khi Containers đã chạy rồi bạn tới phần Network -> Firewall -> Port Forwards chọn Add và tiến hành mở Port 2053 cho địa chỉ IP nội bộ của Containers (Địa chỉ nội bộ của Containers chính là địa chỉ nằm ở phần Network hiện ra khi bạn nhấn Start Containers, ở đây là 172.17.0.2). Sau này khi bạn mở thêm bất kì Port nào khác cho 3x-ui cũng sẽ làm tương tự.

Name: Bạn điền tên gì cũng được.
External port: Bạn điền port mà bạn đã set trước đó ở Containers, ở đây là 2053
Internal IP address: Bạn điền chính xác IP nội của Containers, ở đây là 172.17.0.2
Internal port: Bạn điền port đã set trước đó ở Containers, ở trong ví dụ này là 2053.
Khi đã mở port thành công, bạn tiến hành truy cập vào Panel của 3x-ui. Bạn có thể dùng IP router:2053 hoặc Public IP của router:2053 truy cập vào đều được.
Tài khoản đăng nhập và mật khẩu mặc định là admin/admin
Đến đây là bạn đã có thể sử dụng panel của 3x-ui rồi, các setting khác trong 3x-ui bạn có thể tùy chỉnh sử dụng theo nhu cầu, nếu còn phần nào trong setting mà chưa hiểu bạn có thể để lại comment bên dưới mình sẽ hướng dẫn thêm.
Cài đặt HTTPS cho 3x-ui
Đối với 3x-ui chạy trên Docker + OpenWRT bạn sẽ không thể cài đặt HTTPS bằng giao diện quản trị SSH của 3x-ui như khi cài trên VPS hoặc ARMBIAN được. Bạn sẽ cần cài HTTPS cho OpenWTR trước theo hướng dẫn của bài viết này.
Khi đã có file chứng chỉ bạn sẽ cần lấy 2 file certificate.crt và private.key sau đó upload nó vào thư mục /root/cert/ của Containers 3x-ui.

Bạn sẽ cần truy cập vào phần Network -> Docker -> Containers -> Container Detail.

Sau đó bạn qua tab file, vào thư mục root -> cert và upload 2 file certificate.crt và private.key lên.

Sau đó bạn vào Panel của 3x-ui chọn phần Panel Settings và điền 2 đường dẫn file này lần lượt vào Public Key Path và Private Key Path.
/root/cert/certificate.crt
/root/cert/private.key

Lưu lại rồi khởi động lại Panel là 3x-ui của bạn sẽ có thể truy cập bằng HTTPS. Với cách này thì sau này khi chứng chỉ hết hạn bạn chỉ việc upload đè file chứng chỉ mới lên là xong.
Cấu hình để chơi 4G/5G cho 3x-ui
Đối với 3x-ui chạy trên Docker + OpenWRT nếu bạn là người muốn chơi hệ 4G/5G VPN thì bạn cần phải chạy Port 80 hoặc 443. Mặc định giao diện Panel của OpenWRT đang chạy port 80 và 443 rồi nên bạn cần phải đổi Port Panel của OpenWRT sang port khác thì bạn mới có thể sử dụng port 80 với 443 cho 3x-ui, để làm được điều đó bạn cần phải đổi port trong uhttpd.
Bạn sẽ cần chỉnh sửa file uhttpd trong ssh của router như sau. Ở đây mình sẽ dùng nano để edit file.
nano /etc/config/uhttpd
Bạn sẽ cần đổi Port trong phần list listen_http và list listen_https bằng port mà đang không sử dụng trên hệ thống, như ví dụ ở đây port 80 mình đổi thành 8888 và 443 thành 4443

Đổi xong bạn sẽ cần khởi động lại uhttpd để thay đổi có hiệu lực, lưu ý là từ giờ khi truy cập vào panel của openwrt bạn sẽ cần IP hoặc domain:port bạn đã đổi thì mới vào được lại giao diện panel của openwrt nhé.
/etc/init.d/uhttpd restart
Ok, như vậy là port 80 và 443 đã được tự do, bây giờ bạn chỉ cần tạo cấu hình vmess, vless hoặc trojan trên Panel của 3x-ui và sử dụng port 80 hoặc 443 là đã có thể chơi 4G/5G được rồi. Nhớ là phải mở port 80 hoặc 443 ra ngoài internet ở firewall nhé. Mở port tương tự với cách mà bạn mở port panel 3x-ui bên trên.

Ok, vậy là xong rồi đó, nếu có bất cứ câu hỏi và thắc mắc nào đừng ngại comment tại bài viết này để chúng ta cùng nhau tìm cách xử lí nhé, cảm ơn các bạn.