이런 게 무료라고? 로컬 서버를 1초 만에 외부 공개하는 숨은 보물, Portal-Tunnel
개발하다가 이런 상황, 한 번쯤 겪어보셨죠? 로컬에서 열심히 만든 기능을 클라이언트나 팀원에게 빠르게 보여주고 싶은데, 배포하자니 시간이 걸리고, 화면을 공유하자니 인터랙션이 안 되는 그 답답함. 아니면 외부 서비스의 웹훅(Webhook)을 테스트하려는데 로컬 서버가 공개 URL이 없어서 막힌 경험.
바로 이 문제를 해결해주는 도구가 있습니다. Portal-Tunnel입니다. GeekNews에 "Show GN: 로컬에서 퍼블릭으로"라는 제목으로 등장하자마자 개발자 커뮤니티에서 빠르게 퍼진 이 도구, 저도 처음엔 '설마 진짜로 되겠어?'라는 반신반의로 썼다가 지금은 웹훅 테스트할 때마다 꺼내 쓰고 있습니다.
Portal-Tunnel이 뭔가요? 왜 주목받나요?
Portal-Tunnel은 로컬 개발 서버를 공개 URL로 즉시 노출해주는 터널링 도구입니다. 쉽게 말해, 내 컴퓨터의 localhost:3000 같은 주소를 외부에서 접근 가능한 https://xxxx.portal-tunnel.dev 형태의 URL로 바꿔주는 것이죠.
이 분야에서 가장 유명한 도구는 ngrok입니다. 그런데 ngrok의 무료 플랜은 세션당 연결 수 제한, 속도 제한, 고정 도메인 사용 불가 등 제약이 꽤 많습니다. 팀에서 함께 쓰려면 유료 플랜이 사실상 필수고, 월 요금이 생각보다 만만치 않습니다. Portal-Tunnel은 바로 이 지점을 파고듭니다. 무료이면서 실용적인 기능을 갖춘 대안으로 포지셔닝하고 있는 것입니다.
오픈소스 프로젝트이기 때문에 코드를 직접 살펴볼 수 있고, 원한다면 자체 서버에 셀프호스팅도 가능합니다. 신뢰할 수 없는 외부 서비스에 트래픽을 넘기기 꺼려지는 기업 환경에서도 쓸 수 있다는 뜻입니다.
핵심 기능 3가지
첫째, 즉시 퍼블릭 URL 발급. 명령어 한 줄이면 수 초 안에 외부 접근 가능한 HTTPS URL이 생성됩니다. SSL 인증서 설정이나 포트 포워딩 같은 복잡한 네트워크 작업이 전혀 필요 없습니다. Stripe, GitHub, Kakao 같은 외부 서비스의 웹훅을 로컬에서 바로 수신해서 테스트할 수 있습니다.
둘째, 셀프호스팅 지원. 공개 서버를 거치는 것이 불안하다면 직접 서버를 운영할 수 있습니다. 오픈소스이기 때문에 VPS 하나만 있으면 나만의 터널 서버를 구축할 수 있습니다. 팀 전용 인프라로 활용하면 비용도 아끼고 보안도 챙길 수 있습니다.
셋째, 간결한 CLI 인터페이스. 복잡한 설정 파일이 필요 없습니다. 포트 번호 하나만 넘기면 됩니다. 명령어를 외울 필요도 없이 직관적으로 사용할 수 있어서, 개발 흐름이 끊기지 않습니다.
설치 및 사용 방법 (단계별)
Node.js가 설치된 환경이라면 npm으로 전역 설치할 수 있습니다.
npm install -g portal-tunnel
설치가 끝나면 사용법은 이게 전부입니다.
portal-tunnel --port 3000
명령을 실행하면 터미널에 공개 URL이 출력됩니다. 예를 들면 이런 식입니다.
Tunnel established!
Public URL: https://abc123.portal-tunnel.dev
Forwarding to: http://localhost:3000
이 URL을 클라이언트에게 슬랙으로 보내거나, 웹훅 설정에 붙여넣으면 됩니다. 터미널 창을 닫으면 터널도 자동으로 종료됩니다. 별도의 계정 가입 없이도 기본 기능은 바로 쓸 수 있는 점도 장점입니다.
셀프호스팅을 원한다면 GitHub에서 저장소를 클론한 뒤, 서버 컴포넌트를 본인 VPS에 올리면 됩니다. 클라이언트 측에서 서버 주소를 지정하는 옵션을 제공하고 있어 연동도 어렵지 않습니다.
실제로 이렇게 씁니다 — 활용 예시
웹훅 개발 및 디버깅. Stripe 결제 연동을 개발할 때, 결제 완료 이벤트를 로컬 서버에서 직접 받아보는 것은 개발 속도를 크게 높여줍니다. Portal-Tunnel로 로컬 서버를 공개한 뒤 Stripe 대시보드에 웹훅 URL을 등록하면 실제 이벤트를 즉시 테스트할 수 있습니다. 배포 사이클을 기다릴 필요가 없습니다.
프로토타입 빠른 공유. 디자이너나 기획자에게 개발 중인 기능을 보여줄 때, 화면 공유보다 직접 URL을 넘겨서 본인 디바이스로 접속하게 하는 편이 훨씬 자연스럽습니다. "지금 이 URL로 들어가보세요"라는 말 한마디면 충분합니다.
모바일 디바이스 테스트. 반응형 웹을 개발할 때 실제 스마트폰으로 확인하고 싶어도 같은 와이파이가 아니면 접속이 안 됩니다. 터널 URL 하나면 어디서든 실제 기기로 테스트할 수 있습니다.
IoT·로컬 서버 임시 공개. 라즈베리파이나 홈 서버에서 돌아가는 서비스를 잠깐 외부에 열어줘야 할 때도 유용합니다. 공유기 포트 포워딩 설정을 건드리지 않아도 됩니다.
ngrok, cloudflared와 비교하면?
터널링 도구 시장에는 이미 선택지가 여럿 있습니다. 각각의 특성을 비교해보겠습니다.
ngrok은 가장 널리 쓰이는 도구입니다. UI가 잘 되어 있고 문서도 풍부합니다. 단점은 무료 플랜의 제약이 많고, 팀 사용이나 고정 도메인은 유료입니다. 이미 생태계가 큰 만큼 타 서비스와의 연동 가이드가 많다는 것은 장점입니다.
Cloudflare Tunnel (cloudflared)은 성능과 안정성 면에서 최상위권입니다. 무료로 커스텀 도메인까지 연결할 수 있습니다. 다만 Cloudflare 계정 생성과 초기 설정이 필요하고, DNS 설정이 익숙하지 않은 분들에게는 진입 장벽이 있습니다.
localtunnel은 npm으로 바로 쓸 수 있는 오픈소스 도구입니다. 설정이 매우 간단하지만, 공개 서버의 안정성이 들쭉날쭉하고 연결이 자주 끊기는 편이라 프로덕션에 가까운 테스트에는 적합하지 않습니다.
Portal-Tunnel은 이 중 어디에 위치하냐면, localtunnel처럼 간단한 사용성을 유지하면서 셀프호스팅으로 안정성을 직접 챙길 수 있다는 점이 차별점입니다. 공개 서버에 의존하고 싶지 않은 개발자, 혹은 팀 내부에서 비용 없이 공유하고 싶은 팀에게 가장 잘 맞는 선택입니다.
결국 "편한 것"을 원하면 ngrok, "무료 + 안정"을 원하면 cloudflared, "심플 + 오픈소스 + 셀프호스팅"을 원하면 Portal-Tunnel이 정답입니다.
이 도구를 처음 써보고 드는 생각이 딱 하나였습니다. "이게 왜 유명하지 않지?" 개발 커뮤니티에서 조용히 퍼져가고 있지만, 아직 국내에서는 많이 알려지지 않은 상태입니다. 웹훅 테스트 때마다 번거로운 배포를 반복하고 있다면, 오늘 한번 설치해보시기를 추천합니다. 명령어 한 줄의 차이가 개발 흐름을 얼마나 바꾸는지 금방 느끼실 겁니다.
⚠️ 이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
댓글