🔌도구

Portless: 포트 번호 대신 안정적인 .localhost URL 사용하기

로컬 개발 환경에서 포트 충돌과 혼란을 해결하는 도구, 각 앱에 안정적인 이름 기반 URL 제공

원본 링크
#개발도구#로컬개발#프록시#localhost

Portless란?

로컬 개발 환경에서 포트 번호 대신 이름 기반의 안정적인 .localhost URL을 사용할 수 있게 해주는 도구입니다.

기존: http://localhost:3000

개선: http://myapp.localhost:1355

해결하는 문제들

포트 충돌

여러 프로젝트가 같은 포트를 사용하면 `EADDRINUSE` 에러 발생
포트 번호를 일일이 기억해야 하는 불편함

혼란스러운 개발 경험

같은 포트에서 다른 앱을 실행하면 브라우저 탭이 엉뚱한 앱을 보여줌
브라우저 히스토리가 여러 프로젝트로 뒤섞임
쿠키와 localStorage가 포트별로 충돌

설정 문제

CORS, OAuth 리다이렉트 URI 등에 하드코딩된 포트
AI 에이전트가 잘못된 포트로 테스트 시도

빠른 시작

bash
# 전역 설치
npm install -g portless

# 프록시 시작 (한 번만, sudo 불필요)
portless proxy start

# 앱 실행
portless myapp next dev
# -> http://myapp.localhost:1355

사용 예시

기본 사용

bash
portless myapp next dev
# -> http://myapp.localhost:1355

서브도메인 지원

bash
portless api.myapp pnpm start
# -> http://api.myapp.localhost:1355

portless docs.myapp next dev
# -> http://docs.myapp.localhost:1355

package.json에 통합

json
{
  "scripts": {
    "dev": "portless myapp next dev"
  }
}

작동 원리

1.프록시 시작: 앱 실행 시 자동으로 시작되거나 수동으로 시작
2.앱 실행: portless <이름> <명령어> 형식으로 실행
3.요청 라우팅: 브라우저가 myapp.localhost:1355 접속 → 프록시가 실제 포트로 전달

주요 장점

안정적인 URL: 프로젝트마다 고유한 이름으로 접근

포트 충돌 해결: 자동으로 사용 가능한 포트 할당

쿠키/저장소 분리: 각 앱이 독립적인 도메인 사용

팀 협업 개선: "몇 번 포트?" 질문 불필요

AI 에이전트 친화적: 안정적인 URL로 테스트 가능

모노레포 환경이나 여러 서비스를 동시에 개발할 때 특히 유용합니다.