Portless — mỗi app local một địa chỉ có tên

4 phút đọccập nhật 9/10/2026
Mở trên GitHub: vercel-labs/portless ↗

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)

terminal · gõ vào 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:

terminal · gõ vào máy
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:

terminal · gõ vào máy
portless run npm run dev
Mẹo

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

Lưu ý

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:3000 vẫ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