[[부록12_Cloudflare_Tunnel_로컬_n8n_외부_공개_가이드|부록 12]]. Cloudflare Tunnel로 로컬 n8n 외부 공개하기
[!abstract] cloudflared 설치부터 Quick Tunnel(임시), Named Tunnel(영구), n8n WEBHOOK_URL 설정까지 안내합니다. 이 가이드를 따라하면 포트 포워딩이나 고정 IP 없이도 로컬 n8n을 외부 인터넷에서 안전하게 접근할 수 있게 되거든요.
로컬 컴퓨터에서 실행 중인 n8n을 외부 인터넷에서 접근 가능하게 만드는 방법을 안내합니다. Cloudflare Tunnel은 무료로 사용할 수 있으며, 별도의 포트 포워딩이나 고정 IP 없이도 로컬 서비스를 안전하게 외부에 공개할 수 있습니다.
이 부록은 다음 내용을 다룹니다.
- Cloudflare Tunnel이 필요한 이유
cloudflaredCLI 설치 (macOS / Windows / Linux)- 임시 터널로 빠르게 테스트 (Quick Tunnel)
- 영구 터널로 안정적 운영 (Named Tunnel)
- n8n
WEBHOOK_URL환경변수 설정 - 시스템 서비스 등록으로 자동 실행
[!tip] 6.1.3 FAQ 챗봇 실습에서 오셨나요? 로컬 n8n에 만든 챗봇을 외부 웹페이지에서 사용하기 위해 이 가이드를 보고 계신다면, **Quick Tunnel(임시 터널)**만으로도 테스트가 가능합니다. 아래 STEP 1~2를 완료한 뒤 [[Day26_06.1.3_Supabase_RAG로_사내_FAQ_챗봇_만들기]]로 돌아가세요.
왜 Cloudflare Tunnel이 필요한가?
n8n을 localhost:5678에서 실행하면 같은 컴퓨터에서만 접근할 수 있죠. 하지만 다음과 같은 상황에서는 외부에서도 n8n에 접근해야 합니다.
| 상황 | 이유 |
|---|---|
| 채팅 위젯을 외부 웹사이트에 삽입 | 외부 사용자 브라우저 → n8n Production URL 접근 |
| Webhook을 외부 서비스에서 호출 | Slack, Telegram, GitHub 등 → n8n Webhook URL 호출 |
| 모바일이나 다른 기기에서 테스트 | 같은 네트워크가 아닌 환경에서 접근 |
일반적으로 이를 해결하려면 공인 IP, 포트 포워딩, SSL 인증서 등 복잡한 설정이 필요합니다. ==Cloudflare Tunnel은 이 모든 과정을 자동으로 처리합니다.==
![[그림부록12-1.png]] [그림부록12-1] Cloudflare Tunnel 동작 원리 — 로컬 n8n이 Cloudflare 네트워크를 통해 외부에 안전하게 공개되는 구조
[!info] Cloudflare Tunnel은 어떻게 작동하나요? 로컬 컴퓨터에서 Cloudflare 쪽으로 아웃바운드(나가는) 연결만 사용합니다. 즉 공유기의 포트 포워딩이나 방화벽 설정이 전혀 필요 없습니다. HTTPS도 자동으로 적용되어 SSL 인증서를 직접 발급하거나 갱신할 필요가 없죠. 그리고 이 모든 기능이 무료 플랜으로 제한 없이 사용 가능합니다.
STEP 1. cloudflared 설치하기
cloudflared는 Cloudflare Tunnel을 실행하는 CLI(명령줄) 도구입니다. 운영체제에 맞는 방법으로 설치합니다.
macOS
Homebrew가 설치되어 있다면 터미널에서 한 줄로 설치할 수 있습니다.
brew install cloudflare/cloudflare/cloudflared
실행 결과 예시:
==> Fetching cloudflare/cloudflare/cloudflared
==> Downloading https://github.com/cloudflare/cloudflared/releases/download/2025.2.1/cloudflared-darwin-amd64.tgz
==> Installing cloudflared from cloudflare/cloudflare
🍺 /opt/homebrew/Cellar/cloudflared/2025.2.1: 5 files, 54.3MB, built in 5 seconds
![[그림부록12-2.png]] [그림부록12-2] macOS에서 Homebrew로 cloudflared를 설치하는 모습
[!tip] Homebrew가 없으신가요? macOS 터미널에서
brew --version을 입력했을 때command not found가 나온다면, 먼저 brew.sh에 접속하여 Homebrew를 설치하세요. 설치 명령어가 홈페이지에 안내되어 있습니다.
Windows
두 가지 방법 중 편한 것을 선택합니다.
방법 1: winget (권장)
Windows 10/11에 기본 내장된 winget 패키지 관리자를 사용합니다. PowerShell 또는 명령 프롬프트에서 실행합니다.
winget install --id Cloudflare.cloudflared
실행 결과 예시:
Found Cloudflare Tunnel [Cloudflare.cloudflared] Version 2025.2.1
Starting package install...
Successfully installed
![[그림부록12-3.png]] [그림부록12-3] Windows PowerShell에서 winget으로 cloudflared를 설치하는 모습
방법 2: 설치 파일 다운로드
Cloudflare 공식 다운로드 페이지에서 Windows 64-bit 설치 파일(.msi)을 다운로드하여 실행합니다.
![[그림부록12-4.png]] [그림부록12-4] Cloudflare 공식 다운로드 페이지 — Windows 설치 파일을 받을 수 있는 화면
Linux (Ubuntu / Debian)
터미널에서 다음 두 줄을 순서대로 실행합니다.
# 최신 릴리스 다운로드
curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb -o cloudflared.deb
# 패키지 설치
sudo dpkg -i cloudflared.deb
실행 결과 예시:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54.3M 100 54.3M 0 0 15.2M 0 0:00:03 0:00:03 --:--:-- 15.2M
Selecting previously unselected package cloudflared.
(Reading database ... 76543 files and directories currently installed.)
Preparing to unpack cloudflared.deb ...
Unpacking cloudflared (2025.2.1) ...
Setting up cloudflared (2025.2.1) ...
![[그림부록12-5.png]] [그림부록12-5] Linux(Ubuntu)에서 cloudflared를 다운로드하고 설치하는 모습
[!info] ARM 프로세서(Raspberry Pi 등)를 사용하시나요? 파일명에서
amd64를arm64로 바꿔 주세요.curl -L https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb -o cloudflared.deb
설치 확인
어떤 OS든 설치가 끝나면 다음 명령으로 확인합니다.
cloudflared --version
아래와 같이 버전 정보가 출력되면 성공입니다.
cloudflared version 2025.2.1 (built 2025-02-15-1043 UTC)
![[그림부록12-6.png]] [그림부록12-6] cloudflared 버전 확인 — 정상 설치 후 버전 정보가 출력된 모습
[!warning]
cloudflared: command not found오류가 발생한다면?
- macOS: 터미널을 닫고 새로 여세요. Homebrew 경로가 적용되지 않은 경우입니다.
- Windows: PowerShell을 닫고 새로 여세요. 설치 직후에는 PATH가 갱신되지 않을 수 있습니다.
- Linux:
sudo dpkg -i cloudflared.deb를 다시 한번 실행해 보세요.
STEP 2. Quick Tunnel로 빠르게 테스트하기
Quick Tunnel은 Cloudflare 계정 없이, 명령어 한 줄로 임시 URL을 받을 수 있는 방법입니다. 테스트나 데모 시연 용도에 적합합니다.
2-1. n8n 실행 확인
먼저 n8n이 실행 중인지 확인합니다. 브라우저에서 http://localhost:5678에 접속하여 n8n 화면이 보이면 준비 완료입니다.
![[그림부록12-7.png]] [그림부록12-7] n8n 실행 확인 — 브라우저에서 localhost:5678에 접속한 모습
2-2. Quick Tunnel 실행
새 터미널(또는 명령 프롬프트)을 열고 다음 명령을 실행합니다. n8n을 실행 중인 터미널과는 별도의 창이어야 합니다.
cloudflared tunnel --url http://localhost:5678
실행하면 다음과 같은 메시지가 출력됩니다.
2026-03-12T06:55:35Z INF Starting tunnel
2026-03-12T06:55:35Z INF Version: 2025.2.1
2026-03-12T06:55:35Z INF ICMP proxy will use 192.168.0.1 as source for packets
2026-03-12T06:55:35Z INF +--------------------------------------------------------------------------------------------+
2026-03-12T06:55:35Z INF | Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): |
2026-03-12T06:55:35Z INF | https://random-words-here.trycloudflare.com |
2026-03-12T06:55:35Z INF +--------------------------------------------------------------------------------------------+
2026-03-12T06:55:35Z INF Connection registered connIndex=0 connection=xxxxx
2026-03-12T06:55:36Z INF Connection registered connIndex=1 connection=yyyyy
출력된 https://random-words-here.trycloudflare.com URL이 외부에서 접근 가능한 주소입니다. 이 URL을 브라우저에 입력하면 어디서든 n8n에 접속할 수 있습니다.
![[그림부록12-8.png]] [그림부록12-8] Quick Tunnel 실행 결과 — 터미널에서 임시 URL이 생성된 모습 (빨간 박스로 URL 강조)
[!warning] Quick Tunnel 주의사항
cloudflared를 종료하면(터미널을 닫거나Ctrl + C를 누르면) URL도 즉시 사라집니다.- 다시 실행하면 매번 새로운 URL이 생성됩니다.
- 따라서 테스트가 끝나면 반드시
Ctrl + C로 터널을 종료하세요. 불필요하게 열어 두면 보안상 좋지 않습니다.
2-3. n8n에 WEBHOOK_URL 환경변수 설정하기
Quick Tunnel URL을 n8n의 Webhook URL로 사용하려면, n8n에 외부 URL을 알려줘야 합니다. WEBHOOK_URL 환경변수를 설정하면 n8n의 Webhook 노드, Chat Trigger 노드 등에서 표시되는 Production URL이 로컬 주소 대신 터널 URL로 바뀝니다.
[!info] WEBHOOK_URL은 왜 필요한가요? n8n은 기본적으로
http://localhost:5678을 Webhook URL로 사용합니다. 이 주소는 외부에서 접근할 수 없죠.WEBHOOK_URL을 터널 URL로 설정하면, n8n이 만드는 모든 Webhook·Chat Trigger의 Production URL이 외부 접근 가능한 터널 URL로 바뀝니다.
npx로 n8n을 실행하는 경우:
n8n을 종료(Ctrl + C)한 뒤, 환경변수를 설정하고 다시 시작합니다.
# macOS / Linux
export WEBHOOK_URL=https://random-words-here.trycloudflare.com/
npx n8n start
# Windows PowerShell
$env:WEBHOOK_URL="https://random-words-here.trycloudflare.com/"
npx n8n start
![[그림부록12-9.png]] [그림부록12-9] 환경변수 설정 후 n8n 재시작 — WEBHOOK_URL을 설정하고 n8n을 실행하는 모습
Docker로 n8n을 실행하는 경우:
docker-compose.yml의 environment 섹션에 WEBHOOK_URL을 추가하고 컨테이너를 재시작합니다.
services:
n8n:
image: n8nio/n8n
ports:
- "5678:5678"
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- WEBHOOK_URL=https://random-words-here.trycloudflare.com/ # ← 이 줄 추가
volumes:
- n8n_data:/home/node/.n8n
# 변경사항 적용
docker compose down && docker compose up -d
![[그림부록12-10.png]] [그림부록12-10] Docker Compose 환경변수 설정 — docker-compose.yml에 WEBHOOK_URL을 추가한 모습
💡 팁: 실습자료 페이지(books.dante-labs.com)에서 n8n + Cloudflare Tunnel docker-compose.yml 파일을 다운로드하면,
WEBHOOK_URL이 미리 포함된 완성된 설정 파일을 받을 수 있습니다.WEBHOOK_URL값만 본인의 터널 URL로 교체하세요.
2-4. 설정 후 확인 포인트
WEBHOOK_URL 환경변수가 정상 적용되면 다음 두 가지가 바뀝니다.
| 확인 항목 | 변경 내용 |
|---|---|
| 터널 URL로 n8n 접속 | 외부 브라우저에서 https://random-words-here.trycloudflare.com 접속 시 n8n 화면 표시 |
| Webhook Production URL | Webhook·Chat Trigger 노드의 Production URL이 https://localhost:5678/... → 터널 URL로 자동 변경 |
![[그림부록12-12.png]] [그림부록12-12] Webhook Production URL — 환경변수 설정 후 터널 URL로 표시된 모습
[!tip] Quick Tunnel만으로 충분한 경우 개인 프로젝트 테스트, 데모 시연, 학습 목적이라면 Quick Tunnel만으로도 충분합니다. 아래의 Named Tunnel 설정은 고정 도메인이 필요한 안정적 운영 환경에서만 진행하세요.
STEP 3. Named Tunnel로 안정적 운영하기 (선택사항)
Named Tunnel은 고정된 도메인(예: n8n.yourdomain.com)을 사용하며, 시스템 부팅 시 자동 실행되도록 설정할 수 있습니다. Quick Tunnel과 달리 URL이 바뀌지 않으므로, Webhook URL을 한 번만 설정하면 계속 유지됩니다.
[!warning] 사전 요구사항 Named Tunnel을 사용하려면 다음 두 가지가 필요합니다.
- Cloudflare 계정 (무료 플랜으로 충분)
- 자신의 도메인 (Cloudflare DNS에 등록된 도메인)
도메인이 없다면 STEP 2의 Quick Tunnel을 사용하세요.
3-1. Cloudflare 로그인
터미널에서 Cloudflare 인증을 진행합니다.
cloudflared tunnel login
이 명령을 실행하면 브라우저가 자동으로 열리며 Cloudflare 로그인 페이지가 나타납니다.
![[그림부록12-14.png]] [그림부록12-14] cloudflared tunnel login 실행 — 터미널에서 로그인 명령을 실행한 모습
![[그림부록12-15.png]] [그림부록12-15] Cloudflare 로그인 화면 — 브라우저에서 Cloudflare 계정으로 로그인하는 화면
로그인 후 터널에 사용할 도메인을 선택하는 화면이 나타납니다. 본인이 Cloudflare에 등록한 도메인 중 하나를 클릭합니다.
![[그림부록12-16.png]] [그림부록12-16] 도메인 선택 화면 — 터널에 사용할 도메인을 선택하는 화면 (Authorize 버튼 클릭)
인증이 완료되면 터미널에 다음과 같은 메시지가 출력됩니다.
You have successfully logged in.
If you wish to copy your credentials to a server, they have been saved to:
/Users/사용자/.cloudflared/cert.pem
![[그림부록12-17.png]] [그림부록12-17] 로그인 성공 — 터미널에 인증 완료 메시지와 cert.pem 저장 경로가 표시된 모습
[!info] cert.pem 파일은 무엇인가요?
cert.pem은 Cloudflare가 발급한 인증서 파일입니다. 이 파일이 있어야 터널을 생성하고 DNS 레코드를 설정할 수 있습니다. 경로를 기억해 두세요. (보통~/.cloudflared/cert.pem에 저장됩니다.)
3-2. 터널 생성
이제 터널을 만들겠습니다. my-n8n 자리에 원하는 터널 이름을 넣으면 됩니다.
cloudflared tunnel create my-n8n
터널이 생성되면 Tunnel ID와 credentials 파일 경로가 출력됩니다. 이 두 정보를 메모해 두세요.
Created tunnel my-n8n with id abcd1234-5678-90ab-cdef-1234567890ab
Tunnel credentials written to /Users/사용자/.cloudflared/abcd1234-5678-90ab-cdef-1234567890ab.json
![[그림부록12-18.png]] [그림부록12-18] 터널 생성 완료 — Tunnel ID와 credentials 파일 경로가 출력된 모습
💡 팁: 생성된 터널 목록을 확인하려면
cloudflared tunnel list를 실행하세요.ID NAME CREATED abcd1234-5678-90ab-cdef-1234567890ab my-n8n 2026-03-12T07:00:00Z
3-3. DNS 레코드 설정
터널을 만들었으니, 이 터널과 도메인을 연결합니다. n8n.yourdomain.com 부분을 본인의 서브도메인으로 바꿔 주세요.
cloudflared tunnel route dns my-n8n n8n.yourdomain.com
실행 결과:
Added CNAME n8n.yourdomain.com which will route to this tunnel
tunnelID=abcd1234-5678-90ab-cdef-1234567890ab
이 명령은 Cloudflare DNS에 CNAME 레코드를 자동으로 추가합니다. n8n.yourdomain.com으로 접속하면 터널을 통해 로컬 n8n으로 연결됩니다.
![[그림부록12-19.png]] [그림부록12-19] DNS 레코드 설정 — CNAME 레코드가 자동으로 추가된 모습
![[그림부록12-20.png]] [그림부록12-20] Cloudflare DNS 대시보드 확인 — 추가된 CNAME 레코드를 Cloudflare 대시보드에서 확인하는 화면
3-4. 설정 파일(config.yml) 작성
터널의 동작 방식을 정의하는 설정 파일을 작성합니다. 다음 경로에 config.yml 파일을 생성합니다.
| OS | 설정 파일 경로 |
|---|---|
| macOS / Linux | ~/.cloudflared/config.yml |
| Windows | C:\Users\사용자\.cloudflared\config.yml |
파일 내용은 다음과 같습니다. 3곳을 본인 값으로 교체하세요.
# Cloudflare Tunnel 설정 파일
tunnel: abcd1234-5678-90ab-cdef-1234567890ab # ① Tunnel ID (3-2에서 메모한 값)
credentials-file: /Users/사용자/.cloudflared/abcd1234-5678-90ab-cdef-1234567890ab.json # ② credentials 경로
ingress:
- hostname: n8n.yourdomain.com # ③ 사용할 도메인
service: http://localhost:5678
- service: http_status:404 # 매칭되지 않는 요청은 404
![[그림부록12-21.png]] [그림부록12-21] config.yml 작성 — 텍스트 에디터에서 설정 파일을 작성하는 모습
[!info] ingress의 마지막 줄은 왜 필요한가요?
- service: http_status:404는 catch-all 규칙입니다. 설정한hostname과 일치하지 않는 요청이 들어왔을 때 404 에러를 반환합니다. cloudflared는 이 규칙이 없으면 실행 시 오류를 표시합니다.
💡 팁: 실습자료 페이지(books.dante-labs.com)에서 cloudflared Named Tunnel config.yml 템플릿 파일을 다운로드하면,
tunnel,credentials-file,hostname세 곳만 본인 값으로 교체하여 바로 사용할 수 있습니다.
3-5. 설정 파일 검증
작성한 설정 파일에 오류가 없는지 확인합니다.
cloudflared tunnel ingress validate
설정이 올바르면 다음과 같이 출력됩니다.
Validating rules from /Users/사용자/.cloudflared/config.yml
OK
![[그림부록12-22.png]] [그림부록12-22] 설정 파일 검증 — ingress validate 명령으로 config.yml 설정을 확인한 모습
[!warning]
Validation failed오류가 나온다면?
tunnel값이 3-2에서 출력된 Tunnel ID와 일치하는지 확인하세요.credentials-file경로에.json파일이 실제로 존재하는지 확인하세요.ingress마지막에- service: http_status:404catch-all 규칙이 있는지 확인하세요.
3-6. 터널 실행
설정이 완료되었으니 터널을 실행합니다.
cloudflared tunnel run my-n8n
실행 결과:
2026-03-12T07:10:00Z INF Starting tunnel tunnelID=abcd1234-5678-90ab-cdef-1234567890ab
2026-03-12T07:10:00Z INF Version 2025.2.1
2026-03-12T07:10:00Z INF ICMP proxy will use 192.168.0.1 as source for packets
2026-03-12T07:10:01Z INF Connection registered connIndex=0 connection=xxxxx location=ICN
2026-03-12T07:10:01Z INF Connection registered connIndex=1 connection=yyyyy location=NRT
2026-03-12T07:10:02Z INF Connection registered connIndex=2 connection=zzzzz location=ICN
2026-03-12T07:10:02Z INF Connection registered connIndex=3 connection=wwwww location=NRT
Connection registered가 4개 표시되면 터널이 정상적으로 연결된 것입니다. 이제 https://n8n.yourdomain.com으로 어디서든 n8n에 접속할 수 있습니다.
![[그림부록12-23.png]] [그림부록12-23] Named Tunnel 실행 — 터미널에서 4개의 Connection이 정상 등록된 모습
![[그림부록12-24.png]] [그림부록12-24] 고정 도메인으로 n8n 접속 — 브라우저에서 n8n.yourdomain.com으로 접속한 모습
3-7. n8n에 WEBHOOK_URL 환경변수 설정하기
Quick Tunnel 때와 마찬가지로, n8n에 고정 도메인을 알려줘야 합니다. Named Tunnel은 URL이 바뀌지 않으므로 한 번만 설정하면 됩니다.
# macOS / Linux
export WEBHOOK_URL=https://n8n.yourdomain.com/
npx n8n start
# Windows PowerShell
$env:WEBHOOK_URL="https://n8n.yourdomain.com/"
npx n8n start
Docker 사용 시:
environment:
- WEBHOOK_URL=https://n8n.yourdomain.com/
![[그림부록12-25.png]] [그림부록12-25] Named Tunnel WEBHOOK_URL 설정 — 고정 도메인으로 환경변수를 설정하는 모습
💡 팁: n8n에서 Webhook 노드를 열었을 때 Production URL이
https://n8n.yourdomain.com/webhook/...형태로 표시되면 정상입니다.
3-8. 시스템 서비스로 등록하기 (자동 시작)
지금까지는 터미널에서 cloudflared tunnel run을 직접 실행했습니다. 하지만 이렇게 하면 터미널을 닫으면 터널도 종료되죠. 시스템 서비스로 등록하면 컴퓨터가 재부팅되어도 터널이 자동으로 시작됩니다.
macOS:
sudo cloudflared service install
설치 후 확인:
# 서비스 상태 확인
sudo launchctl list | grep cloudflared
![[그림부록12-26.png]] [그림부록12-26] macOS 서비스 등록 — launchctl에서 cloudflared 서비스가 등록된 모습
Linux (systemd):
sudo cloudflared service install
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
설치 후 확인:
# 서비스 상태 확인
sudo systemctl status cloudflared
● cloudflared.service - cloudflared
Loaded: loaded (/etc/systemd/system/cloudflared.service; enabled)
Active: active (running) since Thu 2026-03-12 16:10:00 KST
Main PID: 12345 (cloudflared)
CGroup: /system.slice/cloudflared.service
└─12345 /usr/bin/cloudflared --no-autoupdate tunnel run
![[그림부록12-27.png]] [그림부록12-27] Linux 서비스 등록 — systemctl status에서 active (running) 상태 확인
Windows (관리자 권한 필요):
PowerShell을 관리자 권한으로 열고 실행합니다.
cloudflared service install
설치 후 확인:
# 서비스 상태 확인
Get-Service cloudflared
Status Name DisplayName
------ ---- -----------
Running cloudflared Cloudflare Tunnel
![[그림부록12-28.png]] [그림부록12-28] Windows 서비스 등록 — PowerShell(관리자)에서 서비스를 설치하는 모습
![[그림부록12-29.png]] [그림부록12-29] Windows 서비스 확인 — services.msc에서 Cloudflare Tunnel 서비스가 Running 상태인 모습
[!tip] 서비스를 제거하려면?
# macOS / Linux sudo cloudflared service uninstall # Windows PowerShell (관리자) cloudflared service uninstall
Quick Tunnel vs Named Tunnel 비교
| 항목 | Quick Tunnel | Named Tunnel |
|---|---|---|
| Cloudflare 계정 | 불필요 | 필요 (무료) |
| 자체 도메인 | 불필요 | 필요 |
| URL 고정 | X (매번 변경) | O (영구 고정) |
| 설정 파일 | 없음 | config.yml 필요 |
| 자동 시작 | X | O (서비스 등록 시) |
| SSL (HTTPS) | 자동 | 자동 |
| 적합한 용도 | 테스트, 데모, 학습 | 운영, 실무, 장기 사용 |
![[그림부록12-30.png]] [그림부록12-30] Quick Tunnel vs Named Tunnel 비교 — 두 방식의 차이를 시각적으로 정리한 개념도
정리하며
이 부록의 핵심을 정리하면 다음과 같습니다.
- 포트 포워딩·고정 IP 불필요: Cloudflare Tunnel은 로컬에서 Cloudflare로 향하는 아웃바운드 연결만 사용하므로, 공유기·방화벽 설정을 건드리지 않아도 됩니다. HTTPS도 자동 적용됩니다.
- 용도별 두 가지 방식: 테스트·데모는 Quick Tunnel(계정·도메인 불필요, URL 매번 변경), 운영·장기 사용은 Named Tunnel(Cloudflare 계정 + 도메인 필요, URL 영구 고정).
WEBHOOK_URL환경변수는 필수: 설정하지 않으면 n8n이 만드는 Webhook·Chat Trigger Production URL이 여전히localhost:5678로 표시되어 외부에서 호출할 수 없습니다.- Named Tunnel은 시스템 서비스 등록 권장:
sudo cloudflared service install로 등록해 두면 컴퓨터 재부팅 시에도 터널이 자동 시작됩니다. - catch-all 규칙 누락 주의: config.yml의 ingress 마지막에
- service: http_status:404가 없으면 검증 단계에서 실패합니다.
자주 하는 실수와 해결법
| 증상 | 원인 | 해결법 |
|---|---|---|
cloudflared: command not found | CLI가 설치되지 않았거나 PATH 미적용 | STEP 1의 설치 명령을 다시 실행. 터미널을 새로 열어 보세요 |
Quick Tunnel URL에서 Bad Gateway | n8n이 실행 중이 아님 | http://localhost:5678 접속을 먼저 확인 |
채팅 위젯에서 Connection refused | WEBHOOK_URL 미설정 | n8n 환경변수에 터널 URL을 설정하고 n8n을 재시작 |
Named Tunnel에서 failed to connect | config.yml의 Tunnel ID 불일치 | cloudflared tunnel list로 ID를 확인하고 config.yml을 수정 |
Validation failed: no ingress rules | config.yml에 catch-all 규칙 누락 | ingress 마지막에 - service: http_status:404를 추가 |
| 터널 URL에서 n8n 화면이 안 뜸 | 포트 번호가 다름 | n8n 실행 포트를 확인하고 --url http://localhost:포트번호로 지정 |
error parsing config | config.yml YAML 문법 오류 | 들여쓰기를 **스페이스(공백)**으로 통일. 탭은 사용 불가 |
failed to fetch quick Tunnel | 네트워크 차단 또는 방화벽 | 회사·학교 네트워크에서는 아웃바운드 연결이 차단될 수 있음. 다른 네트워크에서 시도 |
💡 다음 단계: 워크플로에서 웹페이지 콘텐츠를 마크다운 형태로 수집하고 싶다면 Firecrawl이 유용합니다. 다음으로 [[부록13_Firecrawl_회원가입_및_API_키_발급_가이드|부록 13. Firecrawl 회원가입 및 API 키 발급 가이드]]를 참고하세요.
