집이나 사무실의 PC에서 실행 중인 서비스를 외부에서 접근할 수 있게 하려면 보통 포트포워딩이나 VPN이 필요합니다. 하지만 Cloudflare Tunnel을 사용하면 포트포워딩 없이, VPN 없이, 무료로 안전하게 내 PC의 서비스를 인터넷에 공개할 수 있습니다.
이 글에서는 Windows 환경에서 Cloudflare Tunnel을 설치하고 설정하는 방법을 처음부터 끝까지 자세히 안내합니다.
Cloudflare Tunnel이란?
Cloudflare Tunnel(구 Argo Tunnel)은 내 PC에서 Cloudflare 서버로 아웃바운드 연결을 만들어, 외부에서 내 PC의 서비스에 접근할 수 있게 해주는 기술입니다.
| 항목 | 포트포워딩 | VPN | Cloudflare Tunnel |
|---|---|---|---|
| 공유기 설정 변경 | 필요 | 불필요 | 불필요 |
| 고정 IP 필요 | 예 | 아니오 | 아니오 |
| HTTPS | 직접 설정 | 해당없음 | 자동 적용 |
| 보안 | 포트 노출 위험 | 안전 | 매우 안전 |
| 비용 | 무료 | 무료~유료 | 무료 |
| 설정 난이도 | 중간 | 쉬움 | 쉬움 |
사전 준비
- Cloudflare 계정: cloudflare.com에서 무료 회원가입
- 내 도메인: Cloudflare에 등록된 도메인이 필요합니다 (네임서버가 Cloudflare를 가리켜야 함)
- Windows PC: Windows 10 이상
- 내 PC에서 실행 중인 서비스: 예) 웹서버(localhost:3000), Ollama(localhost:11434) 등
1단계: cloudflared 설치
cloudflared는 Cloudflare Tunnel을 실행하는 클라이언트 프로그램입니다.
방법 A: 설치 파일 다운로드 (가장 쉬움)
- Cloudflare Tunnel 다운로드 페이지 접속
- Windows 64-bit 파일 다운로드 (
cloudflared-windows-amd64.msi) - 다운로드된 MSI 파일 실행 → 설치 완료
- 설치 후 명령 프롬프트(cmd)에서 확인:
cloudflared --versioncloudflared version 2024.x.x같은 버전이 출력되면 성공
방법 B: winget으로 설치
PowerShell 또는 Windows Terminal에서:
winget install --id Cloudflare.cloudflared
2단계: Cloudflare 로그인
명령 프롬프트(cmd)를 관리자 권한으로 열고 실행합니다:
cloudflared tunnel login
실행하면 브라우저가 자동으로 열립니다:
- Cloudflare 계정으로 로그인
- 터널에 사용할 도메인 선택 (예: nalkkul.com)
- “Authorize” 클릭
- “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단계에서 메모한 터널 IDcredentials-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를 설정합니다:
- Cloudflare Zero Trust 대시보드 접속
- Access → Applications → Add an application
- Self-hosted 선택
- 도메인 입력 (예: myservice.nalkkul.com)
- 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 install | Windows 서비스 등록 |
cloudflared service uninstall | Windows 서비스 제거 |
cloudflared update | cloudflared 업데이트 |
자주 묻는 질문 (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의 서비스에 접근할 수 있습니다! 🚀