블로그Cloudflare Tunnel 설치 가이드 – Windows에서 내 PC를 안전하게 외부 공개하기

Cloudflare Tunnel 설치 가이드 – Windows에서 내 PC를 안전하게 외부 공개하기

집이나 사무실의 PC에서 실행 중인 서비스를 외부에서 접근할 수 있게 하려면 보통 포트포워딩이나 VPN이 필요합니다. 하지만 Cloudflare Tunnel을 사용하면 포트포워딩 없이, VPN 없이, 무료로 안전하게 내 PC의 서비스를 인터넷에 공개할 수 있습니다.

이 글에서는 Windows 환경에서 Cloudflare Tunnel을 설치하고 설정하는 방법을 처음부터 끝까지 자세히 안내합니다.

Cloudflare Tunnel이란?

Cloudflare Tunnel(구 Argo Tunnel)은 내 PC에서 Cloudflare 서버로 아웃바운드 연결을 만들어, 외부에서 내 PC의 서비스에 접근할 수 있게 해주는 기술입니다.

항목포트포워딩VPNCloudflare Tunnel
공유기 설정 변경필요불필요불필요
고정 IP 필요아니오아니오
HTTPS직접 설정해당없음자동 적용
보안포트 노출 위험안전매우 안전
비용무료무료~유료무료
설정 난이도중간쉬움쉬움

사전 준비

  • Cloudflare 계정: cloudflare.com에서 무료 회원가입
  • 내 도메인: Cloudflare에 등록된 도메인이 필요합니다 (네임서버가 Cloudflare를 가리켜야 함)
  • Windows PC: Windows 10 이상
  • 내 PC에서 실행 중인 서비스: 예) 웹서버(localhost:3000), Ollama(localhost:11434) 등

1단계: cloudflared 설치

cloudflared는 Cloudflare Tunnel을 실행하는 클라이언트 프로그램입니다.

방법 A: 설치 파일 다운로드 (가장 쉬움)

  1. Cloudflare Tunnel 다운로드 페이지 접속
  2. Windows 64-bit 파일 다운로드 (cloudflared-windows-amd64.msi)
  3. 다운로드된 MSI 파일 실행 → 설치 완료
  4. 설치 후 명령 프롬프트(cmd)에서 확인:
    cloudflared --version
    cloudflared version 2024.x.x 같은 버전이 출력되면 성공

방법 B: winget으로 설치

PowerShell 또는 Windows Terminal에서:

winget install --id Cloudflare.cloudflared

2단계: Cloudflare 로그인

명령 프롬프트(cmd)를 관리자 권한으로 열고 실행합니다:

cloudflared tunnel login

실행하면 브라우저가 자동으로 열립니다:

  1. Cloudflare 계정으로 로그인
  2. 터널에 사용할 도메인 선택 (예: nalkkul.com)
  3. “Authorize” 클릭
  4. “You have successfully logged in” 메시지 확인

이 과정에서 인증 파일이 C:\Users\사용자명\.cloudflared\cert.pem에 자동 저장됩니다.

3단계: 터널 생성

cloudflared tunnel create my-tunnel

my-tunnel은 원하는 이름으로 변경 가능합니다. 실행 결과:

Created tunnel my-tunnel with id a1b2c3d4-e5f6-7890-abcd-ef1234567890

⚠️ 이 터널 ID를 메모해두세요! 다음 단계에서 사용합니다.

생성된 파일 위치: C:\Users\사용자명\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json

4단계: DNS 레코드 추가

터널에 사용할 서브도메인을 DNS에 등록합니다:

cloudflared tunnel route dns my-tunnel myservice.nalkkul.com

myservice.nalkkul.com은 원하는 서브도메인으로 변경하세요. 예시:

  • ollama.nalkkul.com — AI 모델 서비스용
  • home.nalkkul.com — 홈서버용
  • dev.nalkkul.com — 개발 서버용

이 명령은 Cloudflare DNS에 자동으로 CNAME 레코드를 추가합니다.

5단계: 설정 파일 생성

메모장으로 C:\Users\사용자명\.cloudflared\config.yml 파일을 생성합니다:

tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: C:\Users\사용자명\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json

ingress:
  - hostname: myservice.nalkkul.com
    service: http://localhost:11434
  - service: http_status:404

수정해야 할 부분:

  • tunnel: → 3단계에서 메모한 터널 ID
  • credentials-file: → 실제 JSON 파일 경로 (사용자명 수정)
  • hostname: → 4단계에서 설정한 서브도메인
  • service: → 내 PC에서 실행 중인 서비스 주소와 포트

여러 서비스를 동시에 연결하기

하나의 터널로 여러 서브도메인을 연결할 수 있습니다:

tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: C:\Users\사용자명\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json

ingress:
  - hostname: ollama.nalkkul.com
    service: http://localhost:11434
  - hostname: web.nalkkul.com
    service: http://localhost:3000
  - hostname: jupyter.nalkkul.com
    service: http://localhost:8888
  - service: http_status:404

각 hostname에 대해 cloudflared tunnel route dns my-tunnel 서브도메인을 먼저 실행해야 합니다.

6단계: 터널 실행

cloudflared tunnel run my-tunnel

정상 실행되면 아래와 같은 로그가 출력됩니다:

INF Starting tunnel
INF Connection established connIndex=0
INF Connection established connIndex=1
INF Connection established connIndex=2
INF Connection established connIndex=3

이제 브라우저에서 https://myservice.nalkkul.com에 접속하면 내 PC의 서비스에 연결됩니다!

7단계: Windows 서비스로 등록 (자동 시작)

PC가 재부팅되어도 터널이 자동으로 시작되게 하려면:

cloudflared service install

이 명령은 Windows 서비스에 cloudflared를 등록합니다. 이후:

  • PC 부팅 시 자동으로 터널 시작
  • cmd 창을 닫아도 터널 유지
  • 서비스 관리: services.msc에서 “Cloudflared agent” 확인

서비스 제거 (필요시):

cloudflared service uninstall

8단계: 접속 테스트

다른 기기(핸드폰, 다른 PC 등)에서 브라우저로 접속:

https://myservice.nalkkul.com

또는 터미널에서:

curl https://myservice.nalkkul.com

응답이 정상적으로 오면 설정 완료입니다! 🎉

보안 강화 (선택사항)

Cloudflare Access로 인증 추가

터널에 접근할 수 있는 사람을 제한하고 싶다면 Cloudflare Access를 설정합니다:

  1. Cloudflare Zero Trust 대시보드 접속
  2. Access → Applications → Add an application
  3. Self-hosted 선택
  4. 도메인 입력 (예: myservice.nalkkul.com)
  5. Policy 설정: 이메일 인증, IP 제한 등

이렇게 하면 허가된 사용자만 서비스에 접근할 수 있습니다.

config.yml에서 보안 헤더 추가

tunnel: a1b2c3d4-e5f6-7890-abcd-ef1234567890
credentials-file: C:\Users\사용자명\.cloudflared\a1b2c3d4-e5f6-7890-abcd-ef1234567890.json

ingress:
  - hostname: myservice.nalkkul.com
    service: http://localhost:11434
    originRequest:
      noTLSVerify: true
      connectTimeout: 30s
  - service: http_status:404

실전 활용 예시

예시 1: Ollama (로컬 AI) 외부 공개

# Ollama 설치 후
set OLLAMA_HOST=0.0.0.0
ollama serve

# config.yml
ingress:
  - hostname: ollama.nalkkul.com
    service: http://localhost:11434
  - service: http_status:404

이제 외부에서 https://ollama.nalkkul.com/api/chat으로 AI 모델에 접근 가능!

예시 2: 개발 서버 외부 공유

# React/Next.js 개발 서버
npm run dev  # localhost:3000

# config.yml
ingress:
  - hostname: dev.nalkkul.com
    service: http://localhost:3000
  - service: http_status:404

예시 3: 임시 터널 (Quick Tunnel)

설정 파일 없이 바로 터널을 만들 수도 있습니다:

cloudflared tunnel --url http://localhost:3000

임시 URL이 자동 생성됩니다 (예: https://random-name.trycloudflare.com). 테스트용으로 유용하지만, URL이 매번 바뀌므로 정식 서비스에는 적합하지 않습니다.

문제 해결 (트러블슈팅)

Q. “failed to connect” 오류가 나요

  • 내 PC의 서비스가 실행 중인지 확인 (localhost:포트로 직접 접속 테스트)
  • 방화벽에서 해당 포트가 차단되어 있지 않은지 확인
  • config.yml의 포트 번호가 실제 서비스 포트와 일치하는지 확인

Q. 502 Bad Gateway 오류

  • 서비스가 아직 시작되지 않았을 수 있습니다. 서비스를 먼저 시작하세요.
  • 서비스의 주소가 http://localhost:포트가 맞는지 확인

Q. 터널이 자꾸 끊겨요

  • 인터넷 연결 상태를 확인하세요
  • Windows 서비스로 등록하면 자동 재연결됩니다: cloudflared service install

Q. config.yml 경로를 못 찾아요

  • 기본 경로: C:\Users\사용자명\.cloudflared\config.yml
  • 또는 실행 시 직접 지정: cloudflared tunnel --config C:\경로\config.yml run my-tunnel

유용한 명령어 모음

명령어설명
cloudflared tunnel list생성된 터널 목록 확인
cloudflared tunnel info my-tunnel터널 상세 정보
cloudflared tunnel run my-tunnel터널 실행
cloudflared tunnel delete my-tunnel터널 삭제
cloudflared tunnel route dns my-tunnel 서브도메인DNS 레코드 추가
cloudflared service installWindows 서비스 등록
cloudflared service uninstallWindows 서비스 제거
cloudflared updatecloudflared 업데이트

자주 묻는 질문 (FAQ)

Q. 무료인가요?

네, Cloudflare Tunnel은 완전 무료입니다. Cloudflare의 무료 플랜에 포함되어 있습니다.

Q. 속도는 어떤가요?

Cloudflare의 글로벌 CDN을 경유하므로, 일반적인 포트포워딩과 비슷하거나 더 빠를 수 있습니다. 다만 내 PC의 업로드 속도가 병목이 될 수 있습니다.

Q. PC가 꺼지면 어떻게 되나요?

PC가 꺼지면 터널도 끊어집니다. PC가 다시 켜지면 Windows 서비스로 등록했다면 자동으로 다시 연결됩니다.

Q. 보안은 안전한가요?

매우 안전합니다. 포트포워딩과 달리 내 PC의 포트를 직접 노출하지 않으며, 모든 트래픽은 Cloudflare를 경유하고 HTTPS가 자동 적용됩니다. 추가로 Cloudflare Access를 설정하면 인증까지 가능합니다.

Q. 동시에 여러 서비스를 연결할 수 있나요?

네, 하나의 터널에 여러 서브도메인을 연결할 수 있습니다. config.yml의 ingress 섹션에 여러 hostname을 추가하면 됩니다.

마무리

Cloudflare Tunnel은 내 PC의 서비스를 안전하고 무료로 외부에 공개할 수 있는 최고의 방법입니다. 포트포워딩의 보안 위험도 없고, VPN의 복잡한 설정도 필요 없습니다. 특히 Ollama 같은 로컬 AI 서비스를 외부에서 사용하고 싶을 때 매우 유용합니다.

설정이 완료되면 어디서든 내 PC의 서비스에 접근할 수 있습니다! 🚀

이 글이 도움이 되셨다면 공유해주세요!

댓글 남기기

무엇이든 물어보세요! 💬