Portless — mỗi app local một địa chỉ có tên
Khi để AI dựng nhiều dự án cùng lúc, bạn sẽ gặp cảnh này: app này chạy ở localhost:3000, app kia 3001, app nọ 5173… vài hôm sau không nhớ cổng nào là app nào, và có lúc hai app giành cùng một cổng. Portless giải quyết đúng chuyện đó: mỗi app có một địa chỉ có tên, ví dụ https://myapp.localhost
Dùng để làm gì
- Thay số cổng bằng tên dễ nhớ (
myapp.localhost), không phải nhớ hay đoán cổng - Có HTTPS sẵn trên máy bạn: portless tạo chứng chỉ riêng và thêm vào kho tin cậy của hệ điều hành, nên trình duyệt không cảnh báo
- Hữu ích khi thử các tính năng đòi HTTPS (đăng nhập, cookie bảo mật…) mà vẫn chạy local
- Dùng với git worktree: tên nhánh thành tên miền phụ, nên mỗi nhánh có địa chỉ riêng, không đụng nhau
Cài đặt
Cần Node.js 24 trở lên (bạn đã cài ở bài chuẩn bị máy)
npm install -g portless
Dùng thử
Đặt tên app rồi theo sau là lệnh chạy bình thường của dự án:
portless myapp npm run dev
Mở https://myapp.localhost trong trình duyệt là thấy app. Muốn portless tự đoán tên theo thư mục dự án thì dùng:
portless run npm run dev
Nhờ AI cài giúp: dán cho Claude Code câu "Cài portless theo README của vercel-labs/portless rồi chạy dự án này qua nó". Nhớ đọc lệnh nó định chạy, nhất là lệnh có sudo
Lưu ý trước khi dùng
Portless cần quyền quản trị (sudo) trên macOS/Linux để dùng cổng 443, và thêm một chứng chỉ vào hệ thống. Chỉ làm khi bạn hiểu mình đang cho phép điều gì
- Công cụ còn ở bản trước 1.0, cách hoạt động có thể thay đổi giữa các bản; nếu làm việc nhóm, nên thống nhất cùng một bản
- Trình duyệt Safari đôi khi cần chỉnh thêm tệp
/etc/hostsđể nhận tên.localhost - Chưa cần thiết nếu bạn chỉ chạy một app: lúc đó
localhost:3000vẫn ổn
Chi tiết đầy đủ và các tuỳ chọn (tên miền phụ, chia sẻ qua Tailscale/ngrok, monorepo) có trong README chính thức