원문 캡처 · github.com
원문 캡처 · github.com

Portr는 로컬의 HTTP, TCP, WebSocket 서비스를 공개 인터넷에서 접속할 수 있도록 터널을 만드는 도구다. 공개 URL이 필요한 개발 서버를 운영하는 소규모 팀을 대상으로 하며, 제작자는 프로덕션 서버와 함께 사용하는 것을 권장하지 않는다.

서버와 클라이언트 사이의 터널 전송에는 SSH 또는 WebSocket을 사용할 수 있고, 생성된 클라이언트 설정이 사용할 전송 방식을 지정한다. 시작하려면 Portr 서버를 직접 설정하거나 기존 서버를 이용하고, 컴퓨터에 클라이언트를 설치한 뒤 로컬 서비스의 포트를 지정한다.

sh
portr http 9000

하위 도메인을 지정하려면 다음처럼 실행한다.

sh
portr http 9000 -s amal-test
# or
portr http 9000 --subdomain amal-test

HTTP 터널을 시작하면 로컬 서비스로 요청을 전달하는 공개 HTTPS URL이 만들어지고, http://localhost:7777에서 요청 검사기가 실행된다. HTTP 요청 기록도 로컬에 저장돼 CLI에서 조회할 수 있다. HTTP 터널은 WebSocket 업그레이드도 지원하며, 기본적으로 터널 작업자 두 개를 실행한다. 다른 작업자 수가 필요하면 클라이언트 설정에서 pool_size를 지정한다.

요청 검사기에서는 들어온 요청과 응답, 헤더와 페이로드를 확인할 수 있다. 저장된 요청을 그대로 재전송하거나 메서드, 경로, 헤더, 본문을 수정해 재전송할 수도 있고, 업그레이드된 WebSocket 세션과 캡처된 프레임도 살펴볼 수 있다. CLI에서는 하위 도메인별 기록을 조회하고 URL 일부로 필터링하거나 전체 기록을 JSON으로 출력한다. 기록은 ~/.portr/db.sqlite에 저장된다.

sh
# Show the latest logs for a subdomain
portr logs amal-test

# Filter by URL substring
portr logs amal-test /api/

# Emit the full stored records as JSON
portr logs amal-test --json

Docker Compose 서비스는 portr.enable 레이블을 추가해 터널링할 수 있다. Portr에는 팀·사용자·연결을 관리하는 관리자 대시보드도 포함된다. 자세한 내용은 Docker Compose 안내, 서버 설정 안내, 클라이언트 설치 안내, HTTP 터널 안내, 시작 안내에서 확인할 수 있다.

검사기와 대시보드 사용 영상은 요청 검사기 영상과 관리자 대시보드 영상에서 볼 수 있다. 저장소에는 Claude Code와 Codex용 portr-cli 스킬도 포함돼 있다. 프로젝트는 GNU Affero General Public License v3.0(AGPL-3.0)으로 배포된다.