Slim: tunnel HTTPS localhost cho local development
Slim cung cấp domain HTTPS sạch cho local dev mà không phải đau đầu với certificate. Nó tự tạo CA local, cài vào trust store của OS, và bật HTTPS trên bất kỳ domain .test nào bạn chọn. Tính năng chia sẻ public qua slim.show tiện lợi, nhưng phụ thuộc infrastructure của họ. Nếu bạn thường xuyên đánh nhau với cảnh báo trình duyệt hoặc cần test auth flow đòi hỏi HTTPS, Slim loại bỏ hoàn toàn rắc rối đó.
Slim là gì?
Slim là tunnel HTTPS cục bộ và reverse proxy dành cho developer. Nó tạo các domain HTTPS đáng tin (myapp.test, app.loc) trỏ về server local, xử lý định tuyến theo path tới các port khác nhau, và có chế độ chia sẻ URL public. Cốt lõi là một CLI bao gồm CA generator, certificate provisioner, và reverse proxy.
Tính năng chính
- ✓Tự tạo CA cục bộ và certificate đáng tin — trình duyệt chấp nhận HTTPS ngay, không cảnh báo nào xuất hiện
- ✓Ánh xạ domain .test hoặc TLD tùy chọn tới cổng local với mTLS giữa client và proxy
- ✓Định tuyến các path khác nhau trên cùng một domain tới các upstream port riêng biệt
- ✓File config .slim.yaml định nghĩa toàn bộ services và options cho project — chạy `slim up` là lên tất
- ✓Chia sẻ URL public qua slim.show với password bảo vệ, TTL hết hạn, và subdomain tùy chỉnh
- ✓Lệnh chẩn đoán tích hợp (`slim doctor`), xem log theo thời gian thực, và liệt kê services đang chạy
Khi nào nên dùng Slim
- •Test OAuth flows, secure cookies, và webhook integrations đòi hỏi HTTPS
- •Chia sẻ project local với đồng nghiệp bên ngoài qua URL public tạm thời
- •Chạy nhiều services trên các port khác nhau dưới một domain sạch trong quá trình phát triển
- •Định nghĩa toàn bộ services trong config file rồi khởi động bằng một lệnh duy nhất
Cài đặt Slim
Chạy script cài đặt trực tiếp: `curl -sL https://slim.sh/install.sh | sh`. Để build từ source, clone repo, chạy `make build`, rồi `make install`. Yêu cầu Go 1.25 trở lên.
Chạy domain HTTPS local với Slim
Domain local cơ bản: `slim start myapp --port 3000` tạo https://myapp.test trỏ về localhost:3000. Chia sẻ public: `slim share --port 3000` cho URL ngẫu nhiên trên slim.show. Quản lý services qua config: đặt .slim.yaml ở project root, rồi chạy `slim up` và `slim down`. Kiểm tra services đang chạy bằng `slim list` và chẩn đoán bằng `slim doctor`.
Điểm mạnh
- ✓HTTPS hoạt động local không cảnh báo trình duyệt — tự tạo CA certificate và đăng ký vào OS trust store, kiểm tra bằng `slim doctor`
- ✓File `.slim.yaml` định nghĩa toàn bộ services cho project; `slim up` khởi động tất cả cùng lúc với CORS và routing tùy chỉnh đã cấu hình sẵn
- ✓Định tuyến theo path xử lý `/api=8080` và `/ws=9000` trên cùng một domain, để multi-service frontends và backends chia sẻ hostname trong quá trình phát triển
- ✓Chia sẻ public qua `slim.show` hỗ trợ password bảo vệ, TTL hết hạn, và domain tùy chỉnh — tiện cho preview nhanh cho stakeholder mà không cần push code
- ✓Port forwarding (80→10080, 443→10443), host file entries, và gia hạn cert đều tự động; `slim uninstall` xóa sạch mọi dấu vết
Nhược điểm và những điều cần lưu ý
- △Chia sẻ public qua slim.show không thể tự host — bạn phụ thuộc vào infrastructure của họ
- △README cảnh báo tránh TLD .local vì DNS resolution chậm trên macOS và Linux do mDNS
- △Mỗi lần chạy lệnh đều phải truyền --port trừ khi định nghĩa services trong config file
Các lựa chọn thay thế cho Slim
Câu hỏi thường gặp
Chạy `curl -sL https://slim.sh/install.sh | sh` để cài qua script chính thức. Cách khác là clone repo, chạy `make build`, rồi `make install`. Build từ source yêu cầu Go 1.25 trở lên.
Có. Slim dùng license PolyForm Shield 1.0.0, README cho biết license này cho phép sử dụng cả cá nhân lẫn thương mại.
Chạy `slim uninstall` — lệnh này xóa CA certificate, toàn bộ host entries, port-forward rules, và config files. Hệ thống được khôi phục về trạng thái sạch.
README ghi lệnh cho macOS và Linux. README cũng đề cập .local TLD gây DNS resolution chậm trên macOS và Linux do mDNS, implying Windows được hỗ trợ nhưng trải nghiệm khác biệt. Windows compatibility không được ghi rõ.
Dùng `slim share --port 3000` để nhận URL public ngẫu nhiên như https://cheeky-panda.slim.show. Thêm `--subdomain demo` cho subdomain cụ thể, `--password secret` để bảo vệ bằng mật khẩu, hoặc `--ttl 30m` để đặt thời gian hết hạn.
Được. Truyền domain đầy đủ vào `slim start`, ví dụ `slim start app.loc --port 3000`. Tránh .local — nó được dùng cho mDNS và gây DNS resolution chậm trên macOS và Linux.
Vấn đề Slim giải quyết
Trình duyệt chặn self-signed certificate, nên test các tính năng phụ thuộc HTTPS như OAuth callbacks, secure cookies, hay webhook integrations trên local có nghĩa là phải trust cert thủ công hoặc click qua cảnh báo bảo mật mỗi lần. Nhiều tổ chức có chính sách trình duyệt nghiêm ngặt không cho phép cách này. Slim giải quyết bằng cách provision một CA certificate đáng tin và cài đặt system-wide, để bạn có HTTPS sạch mà không cần đụng đến settings trình duyệt.
Ai nên thử — và ai nên bỏ qua
Dùng Slim khi test bất cứ thứ gì đòi hỏi HTTPS trên domain tùy chỉnh: OAuth callbacks, secure cookies, CSP headers, hoặc browser APIs yêu cầu HTTPS. Cũng hữu ích khi chia sẻ công việc đang tiến hành với khách hàng hoặc cộng tác viên bên ngoài mà không cần deploy. Bỏ qua nếu ngrok đã đáp ứng đủ nhu cầu tunnel hoặc nếu bạn chỉ cần truy cập HTTP localhost.
Chưa chắc slim có hợp với bạn?
Để ChatGPT, Claude hoặc Perplexity tìm hiểu giúp — bấm bên dưới và xem AI nói gì về slim.
