WireHole UI là một dự án mã nguồn mở triển khai hệ thống VPN bảo mật cá nhân bằng WireGuard, đồng thời tích hợp khả năng chặn quảng cáo nhờ Pi-hole và Unbound. Tất cả chạy trong các container được quản lý bởi Docker Compose, đơn giản hóa việc cài đặt và vận hành.
- 🔐 VPN cá nhân với
wg-easygiúp tạo và quản lý cấu hình WireGuard qua giao diện web. - 🚫 Chặn quảng cáo toàn hệ thống bằng
Pi-hole. - 🛡️ DNS Resolver riêng tư với
Unbound, tránh rò rỉ DNS và không phụ thuộc bên thứ ba. - 📊 Giao diện trực quan để theo dõi kết nối và hoạt động chặn quảng cáo.
- 🐳 Triển khai đơn giản bằng
Docker Compose.
- Hệ điều hành: Linux (Ubuntu/Debian/CentOS...), đã cài đặt Docker và Docker Compose.
- Port mở:
51820/UDP,51821/TCP,80/TCP,443/TCP. - Quyền root hoặc user thuộc nhóm
docker.
git clone https://github.com/hoangsystem/wirehole.git
cd wirehole- Mở và chỉnh sửa
docker-compose.yml - Thay đổi thông tin sau theo nhu cầu:
environment:
- WG_HOST=my.ddns.net # Địa chỉ IP public hoặc tên miền DDNS của VPS
- PASSWORD_HASH=BCRYPT_HASH # Mật khẩu đăng nhập UI wg-easy được băm bởi thuật toán Bcrypt
⚠️ Nếu bạn dùng Cloudflare DNS, hãy chắc chắn rằng DNS proxy đang tắt cho subdomain VPN.
Đường dẫn: ./unbound/unbound.conf
Bạn có thể sử dụng mẫu cấu hình tại:
https://github.com/MatthewVance/unbound-docker/blob/master/unbound.conf
docker-compose up -dĐợi khoảng 1-2 phút, sau đó truy cập:
- Giao diện quản lý wg-easy: http://:51821
- Giao diện quản lý Pi-hole: http:// (hoặc qua port 80)
Truy cập http://:51821 và đăng nhập bằng mật khẩu đã đặt.
Tại đây bạn có thể:
- Tạo cấu hình mới cho client
- Xem QR code
- Kích hoạt/tắt user
- Tải file
.confđể sử dụng trên máy tính/điện thoại
Từ client Windows/Linux/macOS đã kết nối VPN:
nslookup google.comKết quả sẽ hiển thị server DNS là 10.2.0.100 (Pi-hole).
Tại web UI của Pi-hole bạn có thể xác minh truy vấn được gửi về và truy ngược đến Unbound.
Để dừng toàn bộ container và xóa:
docker-compose downNếu bạn muốn xóa toàn bộ volume và dữ liệu:
docker-compose down -vXóa luôn image (tuỳ chọn):
docker image rm pihole/pihole klutchell/unbound ghcr.io/wg-easy/wg-easy[Client] <== WireGuard ==> [wg-easy] --> [Pi-hole] --> [Unbound] --> [Internet]
Mỗi dịch vụ đều chạy trong container riêng và kết nối qua một mạng Docker ảo private_network.
- Không sử dụng mật khẩu mặc định.
- Chỉ mở port cần thiết ra internet.
- Cập nhật image thường xuyên (
latest) để tránh lỗ hổng bảo mật.
- Tác giả: Hoàng
- Giấy phép: MIT License
- Dựa trên các dự án mã nguồn mở tuyệt vời:
Nếu bạn gặp lỗi, vui lòng mở issue tại repo hoặc liên hệ qua Telegram.