ngrok에 좌절하고 직접 Self-Hosted 터널링 툴을 만들었다

발행: (2026년 3월 8일 PM 07:10 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

저는 수년간 사이드 프로젝트와 로컬 개발 환경을 운영해 왔습니다. 로컬 서비스를 외부에 노출해야 할 때마다—웹훅을 테스트하거나, 팀원과 진행 중인 작업을 공유하거나, 클라이언트에게 데모를 보여줄 때마다—ngrok을 사용했습니다. 그리고 매번 같은 문제에 부딪혔습니다.

무료 티어는 1 GB의 대역폭, 하나의 활성 터널, 그리고 매 세션마다 바뀌는 무작위 서브도메인만 제공합니다. 안정적인 URL이 필요하나요? 월 $10입니다. 터널을 하나 이상 원하나요? 더 많은 비용을 내야 합니다. 자체 도메인을 사용하고 싶나요? 엔터프라이즈 티어가 필요합니다. 기본적으로 TCP 패킷을 제 머신으로 전달하는 것뿐인 이 서비스를 위해, 스스로 해결할 수 있는 문제에 대해 타인의 인프라를 임대하는 느낌이었습니다.

대안들도 그리 좋지 않았어요

frp는 GitHub 스타가 10만 개가 넘을 정도라서 먼저 시도해봤습니다. 기술적으로는 탄탄하지만, TOML 설정이 정말 고통스러웠습니다. 실제로 터널을 연결하기보다 설정 파일을 디버깅하는 데 더 많은 시간을 보냈습니다. 동작은 하지만, 여러분의 시간을 존중하지는 않죠.

Cloudflare Tunnel은 무료이고 강력하지만, Cloudflare 생태계에 묶이게 됩니다. 서비스 약관(ToS)에서 라우팅할 수 있는 트래픽을 제한하고, 2025년 6월에 있었던 2.5시간 정전 사태 때 많은 사람들(저 포함)이 단일 제공업체에 서비스 접근을 의존하는 것이 큰 위험이라는 것을 깨달았습니다.

borechisel은 깔끔하고 최소한이지만, 기능이 기본에 불과합니다—맞춤 도메인, 다중 터널 관리, 대시보드가 없습니다.

Pangolin(YC 2025)은 처음엔 기대됐지만, 점점 범위가 확대돼 완전한 제로 트러스트 네트워크 접근 플랫폼이 되었습니다—WireGuard, OIDC, RBAC, 다중 사이트 관리 등을 포함합니다. 기업 인프라를 구축하는 시스템 관리자라면 좋겠지만, 도메인에 포트 3000만 노출하고 싶다면 과도한 기능입니다.

제가 원했던 건 간단했습니다: 명령 하나만 실행하면 내 도메인에 터널이 생기고, 끝.

그래서 나는 Proxly를 만들었습니다

Proxly는 자체 호스팅 터널링 도구로, 여러분의 VPS에서 서브도메인을 통해 로컬 서비스를 외부에 노출할 수 있게 해줍니다. npm으로 설치하고 인터랙티브 마법사가 모든 과정을 안내합니다:

npm install -g @a1tem/proxly
proxly

첫 실행 시 Proxly는 사용자 이름, 릴레이 호스트, 비밀 토큰을 입력하라는 프롬프트를 보여준 뒤, 첫 번째 프로젝트와 터널을 설정하도록 요청합니다. 이름을 정하고 포트(또는 전체 URL)를 지정하면 yourname‑myapp.yourdomain.com 주소로 바로 서비스가 시작됩니다.

나중에 프로젝트를 관리해야 할까요? CLI가 간단하게 처리해 줍니다:

proxly add      # 새 프로젝트 생성
proxly delete   # 프로젝트 삭제
proxly reset    # 초기화

proxly를 다시 실행하면 프로젝트가 하나만 있을 경우 자동으로 시작되고, 여러 개가 있을 경우 선택 화면을 표시합니다.

The Architecture: Keep It Stupid Simple

The request flow is straightforward:

Browser → Nginx (TLS on your VPS) → Relay server → WebSocket → Proxly CLI on your machine → your local dev server

The wire protocol uses JSON messages over WebSocket, supporting HTTP requests, WebSocket connections, and binary data.

You need three things on the server side:

  1. A VPS with a public IP.
  2. A domain with wildcard DNS (*.yourdomain.com) pointing at the VPS.
  3. Node.js 18+ (and Nginx for TLS termination).

On your local machine you only need Node.js and the Proxly CLI.

Each tunnel maps a subdomain to a local port or target URL. Your config stays on your machine — set up once, and proxly just works every time you run it. If you’re on a team, everyone gets their own username namespace, so multiple developers can tunnel the same project without stepping on each other.

What Makes It Different

FeatureProxlyngrokfrpCloudflare TunnelPangolin
Self‑hosted❌ (cloud)❌ (cloud)✅ (enterprise‑focused)
Custom domain✅ (paid)✅ (via Cloudflare)
No bandwidth caps❌ (free tier)
Setup time~60 sminutes + loginminutes + TOMLminutes + Cloudflare accounthours (enterprise)
Vendor lock‑in
Multi‑tunnel UISimple CLIDashboardConfig filesDashboardFull portal

Proxly는 플랫폼이 되려는 것이 아니라, 개발자 경험에 초점을 맞춘 터널링 도구입니다.

다음은 무엇인가

Proxly는 오픈‑소스이며 자체‑호스팅 버전은 언제나 무료입니다. 저는 자체 VPS를 관리하지 않고 터널링을 원하는 사람들을 위한 호스팅 플랜을 작업 중입니다 — 관심이 있다면, 대기자 명단에 가입하세요.

현재 초점은 개발자 경험을 완벽히 다지는 것입니다: 한 명령어 설치, 1분 이내에 첫 터널 가동, 그리고 질문하기 전에 답을 제공하는 문서.

ngrok의 제한, frp의 설정 파일, 혹은 다른 사람의 인프라에 의존해 자신의 서비스에 접근하는 것이 지겹다면 — Proxly를 사용해 보고 어떤 문제가 발생하는지 알려 주세요.

GitHub:

0 조회
Back to Blog

관련 글

더 보기 »

당신의 에이전트는 작고 저위험인 HAL

개요 나는 code를 검토하고, architecture를 설계하며, faults를 찾고, designs를 비평하는 멀티‑에이전트 시스템과 작업한다. 이러한 시스템은 조용하고 … 방식으로 실패한다.