Vừa rồi mình có triển khai ứng dụng VPN cho một công ty nhỏ để nhân viên kết nối vào VPN và truy cập vào hệ thống. Vì vậy mình quyết định việt lại hướng dẫn này, sẽ giúp bạn triển khai WireGuard UI trên máy chủ Linux bằng Docker Compose. WireGuard UI là một giao diện web thân thiện, cho phép bạn dễ dàng quản lý và cấu hình hệ thống VPN WireGuard của mình một cách hiệu quả.
Điều kiện
- Máy chủ Linux (ưu tiên Ubuntu 22.04 / 24.04) network tương đối tốt một chút.
- Docker và Docker Compose đã được cài đặt
- Địa chỉ IPv4 công cộng Để đảm bảo Docker Compose được cài đặt đúng, sử dụng lệnh:

Cài đặt WireGuard UI bằng Docker Compose
Bước 1: Cập nhật máy chủ
Trước khi cài đặt, bạn hãy cập nhật máy chủ lên phiên bản mới nhé.
apt update && apt upgrade
Bước 2 – Thiết lập tệp .YML
Tệp .yml chứa tất cả thông tin cần thiết để tạo các container Docker cho WireGuard UI.
mkdir /opt/wg-ui
nano /opt/wg-ui/docker-compose.yml
Dán cấu hình sau vào tệp
services:
wireguard:
image: linuxserver/wireguard:v1.0.20210914-ls7
container_name: wireguard
cap_add:
- NET_ADMIN
volumes:
- ./config:/config
ports:
- "5000:5000"
- "51820:51820/udp"
restart: unless-stopped
wireguard-ui:
image: ngoduykhanh/wireguard-ui:latest
container_name: wireguard-ui
depends_on:
- wireguard
cap_add:
- NET_ADMIN
# sử dụng mạng của dịch vụ 'wireguard'. điều này cho phép hiển thị các client đang hoạt động trên trang trạng thái
network_mode: service:wireguard
environment:
- SENDGRID_API_KEY
- EMAIL_FROM_ADDRESS
- EMAIL_FROM_NAME
- SESSION_SECRET
- WGUI_USERNAME=admin
- WGUI_PASSWORD=admin
- WG_CONF_TEMPLATE
- WGUI_MANAGE_START=true
- WGUI_MANAGE_RESTART=true
logging:
driver: json-file
options:
max-size: 50m
volumes:
- ./db:/app/db
- ./config:/etc/wireguard
restart: unless-stopped
Thay đổi mật khẩu mặc định WGUI_PASSWORD thành một mật khẩu bảo mật hơn.
Bước 3 – Khởi động Container và truy cập giao diện GUI
Để khởi động container, nhập lệnh:
docker compose -f /opt/wg-ui/docker-compose.yml up -d
Kết quả đầu ra sẽ trông như sau:

Sử dụng trình duyệt, truy cập: http://123.123.123.123:5000
Thay 123.123.123.123 bằng địa chỉ IP của máy chủ của bạn. Nếu thành công, bạn sẽ thấy trang đăng nhập WireGuard UI. Thông tin đăng nhập mặc định là:
- Tên người dùng mặc định: admin
- Mật khẩu mặc định: admin

Hãy thay đổi mật khẩu ngay sau khi đăng nhập lần đầu nhé.

Bước 4 – Cấu hình định tuyến
Trong phần “WireGuard Server“, nhập các đoạn script dưới đây và nhấn “Apply Config“.
- Post Up Script
iptables -A FORWARD -i %1 -j ACCEPT; iptables -A FORWARD -o wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth+ -j MASQUERADE
- Post Down Script
iptables -D FORWARD -i %1 -j ACCEPT; iptables -D FORWARD -o wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth+ -j MASQUERADE

Bước 5 – Tạo cấu hình Client mới
Bây giờ bạn hãy tạo 1 Client mới để kết nối.
- Wireguard Clients
- New Client
- Nhập vào tên user và email
- Submit

Sau khi tạo xong bạn bấm vào tiếp Apply Config để áp dụng cấu hình. Bây giờ bạn có thể tải cấu hình Client xuống và kết nối vào thiết bị rồi nhé.

Thiết lập sử dụng WireGuard
1. Thiết lập sử dụng WireGuard trên máy tính
Trước khi thiết lập thì bạn cần phải có ứng dụng WireGuard. Và bạn có thể tải WireGuard từ trang chủ của WireGuard về với các nền tảng hệ điều hành.
Sau khi tải và cài đặt ứng dụng phần mền WireGuard trên máy client xong. bạn click vào dấu + sau đó chọn Import Tunnel(s) from File để thêm cấu hình.

2. Thiết lập sử dụng WireGuard trên di động
WireGuard hỗ trợ cả trên các thiết bị di động. Để tải về bạn truy cập vào link tương ứng bên dưới nhé.

Sau đó bạn mở ứng dụng WireGuard trên di động và chọn vào dấu +. Sau đó bạn chọn các lựa chọn cấu hình như:
- Create from QR code: Quét mã QR
- Create from file or archive: Nhập file cấu hình

Sau khi kết nối hoàn tất. Bây giờ mình sẽ truy cập vào Internet để kiểm tra thử có hoạt động hay không. Và mình kiểm tra xem IP có chính xác hay không.
Tham khảo thêm trên blog Sysadmin Skills – Nơi chia sẻ kiến thức thực chiến cho quản trị hệ thống.
