[Update]Experience Gateway Manager
<routingtoanotherlocate/>
![[Update] Experience Gateway Manager](/uploads/1786728098254-image20260815002124004.png)
Overview
Hệ thống quản lý gateway gọn nhẹ và tối ưu dành cho thiết bị tài nguyên thấp. Cung cấp WebUI trực quan để quản lý Reverse Proxy, Port Forwarding, OpenVPN và Firewall mà không cần sử dụng Docker.
Development Process
Bài toán cần giải quyết
Hiện tại, hệ thống server chính của tôi đặt tại Hà Nội và sử dụng mạng dùng chung nên không thể NAT port. Ban đầu, tôi sử dụng Cloudflare Tunnel để giải quyết, tuy nhiên giải pháp này bộc lộ hai nhược điểm chí mạng:
- Phụ thuộc cáp quang biển: Traffic từ Việt Nam đi qua Cloudflare thường bị điều hướng vòng sang Singapore hoặc Taiwan. Khi đứt cáp, truy cập bị gián đoạn và tốc độ giảm sút nghiêm trọng.
- Giới hạn giao thức: Cloudflare Tunnel không hỗ trợ tốt các giao thức ngoại lai (như UDP), gây cản trở cho nhiều services đặc thù.
Mục tiêu đặt ra là tạo ra một hệ thống Gateway quản lý mạng để cài đặt trên một thiết bị siêu nhỏ gọn (như Wyse 3040 với cấu hình thấp), đặt tại một địa điểm khác có khả năng mở port. Thiết bị Gateway này sẽ đón luồng truy cập và định tuyến (routing) luồng dữ liệu ngược về server chính ở Hà Nội. Nhờ việc kết nối giữa Gateway và Server hoàn toàn là đường truyền trong nước, tốc độ và độ ổn định được đảm bảo tuyệt đối, không còn lo ngại đứt cáp quốc tế, đồng thời tự do sử dụng mọi loại giao thức (TCP, UDP).
Kiến trúc & Thiết kế
Dự án được phát triển theo triết lý "SQLite là nguồn chân lý" (Desired State). Hệ thống được chia làm 2 thành phần chính để đảm bảo bảo mật và giới hạn đặc quyền:
- WebUI (PHP Slim & SQLite): Chạy trên Nginx/Caddy với quyền hạn thấp, cung cấp giao diện quản lý Bootstrap + Alpine.js nhanh chóng, hỗ trợ quản lý Proxy, Forwarding, VPN, thiết bị, và Health Check.
- Local Agent (Golang): Một agent siêu nhẹ chạy ngầm ở port
9090với quyền root. Agent này chỉ giao tiếp với localhost để nhận lệnh từ WebUI, chịu trách nhiệm áp dụng cấu hình thực tế cho Caddy, Nftables và thao tác với OpenVPN.
Thách thức & Giải pháp
- Quản lý cấu hình mạng an toàn: Can thiệp trực tiếp vào
nftableshoặc cấu hìnhCaddyrất dễ làm sập kết nối. EGM giải quyết bằng cách sinh ra file cấu hình (Generate), kiểm tra tính hợp lệ (Validate) trước khi áp dụng (Apply), đồng thời hỗ trợ cơ chế lưu nhiều bản Revisions để Rollback nhanh chóng khi có sự cố. - Luồng xử lý bất đồng bộ không cần Redis: Để hệ thống nhẹ nhất có thể, tôi đã thiết kế một FIFO queue ngay trên SQLite với kĩ thuật row-level locking (bảng
app_locks) để quản lý các tiến trình tốn thời gian (như System Update/Upgrade package Debian) mà không cần đến Redis hay worker node phức tạp.
How to Use
Hiện tại đang phát triển nội bộ thế nên chưa công bố cách sử dụng
Architecture

Home Screen
Recent Activity
[Update] Ignore AGENTS.md and PRD.md
8/14/2026by Furuhonya
f7532fd[Update] Add junk files to .gitignore
8/14/2026by Furuhonya
991122e[Feature] Auto-Save Settings and Backup Download/Restore
8/14/2026by Furuhonya
59117fd[Feature] Adapt App Settings to F37 global unapplied changes workflow
8/5/2026by Furuhonya
074abd2[Fix] Settings UI block formatting
8/5/2026by Furuhonya
fe58bab