Đây là bộ tài liệu kỹ thuật tổng hợp, được chuẩn hóa để bạn lưu trữ và áp dụng cho mọi dự án sau này.
TÀI LIỆU KỸ THUẬT: TRIỂN KHAI HOME SERVER VỚI CLOUDFLARE TUNNEL (WINDOWS)
Mục tiêu: Biến máy tính cá nhân (Windows) thành Server chuyên nghiệp.
Nguyên tắc:
* Không mở Port trên Router (Bảo mật tuyệt đối).
* Không cần IP tĩnh (Bỏ qua vấn đề Dynamic IP).
* Mỗi ứng dụng chạy trên một Port nội bộ riêng biệt.
* Tự động khởi động khi bật máy.
PHẦN 1: THIẾT LẬP KẾT NỐI (CLOUDFLARE SIDE)
Bước này tạo ra "đường hầm" kết nối máy tính của bạn với mạng lưới Cloudflare.
* Truy cập Cloudflare Zero Trust \rightarrow Networks \rightarrow Tunnels.
* Chọn Create a tunnel \rightarrow Chọn Cloudflared \rightarrow Đặt tên (VD: Home-PC-Master).
* Tại màn hình Install connector:
* Chọn hệ điều hành Windows.
* Copy câu lệnh cài đặt (bắt đầu bằng cloudflared.exe service install...).
* Trên máy tính Windows:
* Mở PowerShell với quyền Administrator.
* Dán câu lệnh và Enter.
* Chờ thông báo: Cloudflared Agent installed successfully.
Kết quả: Trên Dashboard Cloudflare, trạng thái Tunnel chuyển sang Healthy (Xanh lá).
PHẦN 2: CHUẨN BỊ ỨNG DỤNG WEB (LOCAL SIDE)
Bạn cần cấu hình để ứng dụng (Web/API) tự chạy trên một Port cố định ngay khi bật máy. Có 2 cách phổ biến:
CÁCH A: Sử dụng IIS (Khuyên dùng vì có giao diện quản lý)
Dùng cách này nếu bạn quen quản lý bằng IIS Manager.
* Publish Code:
* Trong Visual Studio, Publish dự án ra thư mục (Folder Profile).
* Add Website trong IIS:
* Chuột phải Sites \rightarrow Add Website.
* Site name: Đặt tên tùy ý (VD: MyWebApp).
* Physical path: Trỏ về thư mục vừa Publish.
* Cấu hình Binding (QUAN TRỌNG):
* IP Address: All Unassigned.
* Port: Đặt một số riêng biệt (VD: 8080).
* Hostname: ĐỂ TRỐNG (Không điền gì cả).
* Lưu ý: Nếu có Web thứ 2, hãy đặt Port là 8081, Web thứ 3 là 8082...
CÁCH B: Sử dụng Windows Service (Không cần IIS)
Dùng cách này nếu muốn nhẹ máy hoặc chạy các app không phải .NET (như Node.js, Python).
* Cố định Port trong Code:
* Với .NET, mở appsettings.json thêm:
"Kestrel": { "Endpoints": { "Http": { "Url": "http://localhost:5000" } } }
* Tạo Service:
* Tải công cụ NSSM.
* Mở CMD (Admin), gõ: nssm install TenServiceCuaBan
* Path: Chọn file .exe của ứng dụng.
* Nhấn Install Service.
* Bật Service:
* Vào services.msc, tìm service vừa tạo \rightarrow Start.
PHẦN 3: ĐẤU NỐI RA INTERNET (ROUTING)
Bước này thực hiện map Tên miền \rightarrow Port nội bộ tương ứng.
Truy cập lại cấu hình Tunnel trên Cloudflare \rightarrow Tab Public Hostname \rightarrow Add a public hostname.
Ví dụ cấu hình thực tế:
1. Cấu hình cho Web App chính (chạy IIS port 8080)
* Subdomain: www (hoặc để trống nếu dùng root domain).
* Domain: tenmiencuaban.com.
* Service:
* Type: HTTP
* URL: localhost:8080
2. Cấu hình cho API Backend (chạy Service port 5000)
* Subdomain: api.
* Domain: tenmiencuaban.com.
* Service:
* Type: HTTP
* URL: localhost:5000
3. Cấu hình cho Web Admin (chạy IIS port 8081)
* Subdomain: admin.
* Domain: tenmiencuaban.com.
* Service:
* Type: HTTP
* URL: localhost:8081
PHẦN 4: THIẾT LẬP MÔI TRƯỜNG "SERVER"
Để PC hoạt động ổn định 24/7 như Server thật:
* Chống ngủ (Sleep Mode) - BẮT BUỘC:
* Vào Power & sleep settings.
* Mục Sleep (When plugged in): Chọn Never.
* Mẹo: Có thể chọn "Turn off screen" sau 10 phút để tiết kiệm điện màn hình, nhưng máy tính thì không được ngủ.
* Tự động cập nhật (Windows Update):
* Nên vào Advanced options của Windows Update, chọn Pause updates hoặc thiết lập giờ update vào ban đêm để tránh máy tự restart lúc đang demo.
* Tường lửa (Firewall):
* Không cần tắt Windows Firewall.
* Không cần mở Port (Inbound Rules).
* Cloudflared sử dụng kết nối Outbound nên mặc định sẽ hoạt động tốt.
TÓM TẮT QUY TRÌNH TRIỂN KHAI DỰ ÁN MỚI
Khi bạn có thêm một dự án mới:
* Local: Publish code \rightarrow Mở IIS \rightarrow Tạo Site mới với Port mới (VD: 8090).
* Cloudflare: Vào Tunnel \rightarrow Public Hostname \rightarrow Thêm tên miền mới trỏ về localhost:8090.
* Xong. Không cần đụng vào Router hay cấu hình lại mạng.
Số dòng: 88