AI

Cloudflare 터널을 이용한 n8n 접근 설정 가이드

hmk run dev 2025. 5. 11. 22:06

안녕하세요! 지난 포스팅에서 도커를 이용한 n8n 셀프호스팅 설정 방법에 대해 알아보았는데요. 이번에는 Cloudflare 터널(Cloudflare Tunnel)을 이용하여 더 안전하고 간편하게 n8n에 접근하는 방법을 알아보겠습니다.

목차

  1. Cloudflare 터널이란?
  2. Cloudflare 터널의 장점
  3. 사전 준비 사항
  4. Cloudflare 터널 설정 단계
  5. 도커 자동 실행 설정
  6. 문제 해결 및 팁
  7. 마치며

 

Cloudflare 터널이란?

Cloudflare 터널은 공개 IP 주소 없이도 로컬 서버를 인터넷에 안전하게 노출시킬 수 있는 서비스입니다. 기존 방식에서는 방화벽 포트 개방, IP 화이트리스팅, 복잡한 VPN 설정 등이 필요했지만, Cloudflare 터널을 사용하면 이러한 설정 없이도 외부에서 로컬 서버에 접근할 수 있습니다.

 

작동 원리

Cloudflare 터널은 cloudflared라는 경량 소프트웨어를 사용합니다. 이 소프트웨어는 로컬 머신에서 실행되며, Cloudflare 네트워크와 암호화된 아웃바운드 연결을 만듭니다. 이 연결을 통해 트래픽이 로컬 서비스로 전달됩니다.

쉽게 설명하면:

  1. 사용자가 도메인(예: n8n.example.site)에 접속
  2. Cloudflare 서버가 요청을 수신
  3. Cloudflare는 cloudflared 클라이언트(터널)를 통해 요청을 로컬 서버에 전달
  4. 로컬 서버가 응답을 다시 터널을 통해 Cloudflare로 보냄
  5. Cloudflare가 사용자에게 응답 전달

Cloudflare 터널의 장점

  1. 보안 강화:
    • 외부에서 직접 서버에 접근할 수 없어 DDoS나 직접적인 공격 위험이 감소
    • 방화벽 포트를 열 필요가 없음
  2. 간편한 설정:
    • 복잡한 네트워크 설정이나 포트 포워딩 없이 빠르게 구축 가능
    • 도메인 관리와 터널 설정을 한 곳에서 처리
  3. 무료 SSL/TLS 인증서:
    • Cloudflare에서 자동으로 SSL/TLS 인증서를 제공
  4. 로컬 개발 환경에서도 사용 가능:
    • 개발 중인 웹 애플리케이션을 외부에 공개 가능
    • 고정 IP 없이도 사용 가능

Cloudflare 터널 vs 단순 포트포워딩: 간단 비교

Cloudflare 터널의 장점

  • 더 안전함: 서버 IP가 노출되지 않고, Cloudflare의 보안 기능(DDoS 보호, WAF 등) 활용 가능
  • 설정 편리: 공유기 설정 변경 불필요, IP 변경에도 영향 없음
  • 자동 SSL: 인증서 자동 발급 및 갱신
  • 특수 환경 지원: CGNAT, 공유 네트워크, 동적 IP 환경에서도 사용 가능
  • 글로벌 성능: Cloudflare 네트워크를 통한 속도 개선 가능성

포트포워딩의 단점

  • 보안 취약: 서버 IP와 포트가 직접 노출되어 공격 위험 증가
  • 관리 번거로움: 동적 IP 사용 시 지속적 관리 필요
  • 제한된 환경: ISP나 공유 네트워크에서 포트포워딩이 막혀있을 수 있음
  • SSL 설정 필요: 인증서를 직접 설정하고 갱신해야 함

사전 준비 사항

  1. Cloudflare 계정:
    • Cloudflare 계정을 생성하고 도메인을 연결해야 합니다.
    • 이전 포스팅에서 설명한 "가비아 도메인을 Cloudflare로 연결하기" 부분을 참고하세요.
  2. 도커로 실행 중인 n8n:
    • n8n이 도커를 통해 로컬에서 실행되고 있어야 합니다.
    • 기본적으로 포트 5678에서 실행됩니다.
  3. cloudflared 설치:

Cloudflare 터널 설정 단계

1. Cloudflare 로그인 및 인증

첫 번째 단계는 cloudflared 클라이언트를 Cloudflare 계정에 연결하는 것입니다. 터미널을 열고 다음 명령어를 실행합니다:

cloudflared login

이 명령어를 실행하면 브라우저가 열리고 Cloudflare 로그인 페이지가 나타납니다. 로그인 후 권한을 부여하면 터널 사용 권한이 cloudflared 클라이언트에 부여됩니다.

2. 터널 생성

이제 n8n용 터널을 생성합니다:

cloudflared tunnel create n8n-tunnel

이 명령어는 n8n-tunnel이라는 이름의 새 터널을 생성합니다. 터널이 생성되면 인증서 파일이 자동으로 ~/.cloudflared 디렉토리에 저장됩니다. 이 인증서는 터널의 고유 ID를 포함하고 있습니다.

3. 터널 구성 파일 설정

다음으로, 터널 구성 파일을 생성합니다. 이 파일은 트래픽을 어떻게 라우팅할지 정의합니다:

cat <<EOF > ~/.cloudflared/config.yml
tunnel: n8n-tunnel
credentials-file: /Users/example/.cloudflared/2312442-7c232-49f4-852b-12323421.json

ingress:
  - hostname: n8n.example.site     
    service: http://localhost:5678
  - service: http_status:404
EOF

이 구성 파일에서:

  • tunnel: 사용할 터널의 이름
  • credentials-file: 터널 인증 파일의 경로 (파일명은 실제 생성된 터널의 ID로 변경해야 합니다)
  • ingress: 트래픽 라우팅 규칙
    • hostname: 접속할 도메인 이름
    • service: 트래픽을 전달할 로컬 서비스 주소 (n8n이 실행 중인 주소)
    • 마지막 규칙은 일치하는 규칙이 없을 때 404 에러를 반환합니다

참고: credentials-file 경로는 본인의 시스템 경로에 맞게 조정해야 합니다.

4. DNS 레코드 생성

터널과 도메인을 연결하기 위해 DNS 레코드를 생성합니다:

cloudflared tunnel route dns n8n-tunnel n8n.example.site

이 명령어는 Cloudflare DNS에 n8n.example.site가 n8n-tunnel을 통해 접근 가능하도록 CNAME 레코드를 자동으로 생성합니다.

5. 터널 실행

이제 터널을 실행합니다:

cloudflared tunnel run n8n-tunnel

 

이 명령어를 실행하면 터널이 활성화되고, 설정한 도메인(n8n.example.site)을 통해 로컬에서 실행 중인 n8n에 외부에서 접근할 수 있게 됩니다.

 

터널이 실행되는 동안 로그가 표시되며, CTRL+C를 누르면 터널이 중지됩니다.


도커 자동 실행 설정

컴퓨터를 재부팅해도 도커와 n8n이 자동으로 실행되도록 설정하는 방법입니다.

도커 데스크톱 자동 실행 설정 (Mac/Windows 사용자)

  1. Docker Desktop 실행
  2. 설정(Settings) 메뉴 열기
  3. General 탭에서 "Start Docker Desktop when you sign in to your computer" 옵션 체크

터널 자동 실행 설정

아쉽게도 터널은 컴퓨터 재부팅 시 수동으로 다시 실행해야 합니다:

cloudflared tunnel run n8n-tunnel

리눅스에서 systemd를 이용한 자동 실행 설정

리눅스 서버를 사용하는 경우 systemd 서비스를 생성하여 터널을 자동으로 실행할 수 있습니다:

  1. 서비스 파일 생성:
sudo nano /etc/systemd/system/cloudflared.service
  1. 다음 내용 추가:
[Unit]
Description=Cloudflare Tunnel
After=network.target

[Service]
User=<your-username>
ExecStart=/usr/local/bin/cloudflared tunnel run n8n-tunnel
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
  1. 서비스 활성화 및 시작:
sudo systemctl enable cloudflared
sudo systemctl start cloudflared

macOS에서 launchd를 이용한 자동 실행 설정

macOS에서는 launchd를 사용하여 자동 실행을 설정할 수 있습니다:

  1. plist 파일 생성:
nano ~/Library/LaunchAgents/com.cloudflare.tunnel.plist
  1. 다음 내용 추가:

http://www.apple.com/DTDs/PropertyList-1.0.dtd">


    Label
    com.cloudflare.tunnel
    ProgramArguments
    
        /usr/local/bin/cloudflared
        tunnel
        run
        n8n-tunnel
    
    RunAtLoad
    
    KeepAlive
    


  1. plist 파일 로드:
launchctl load ~/Library/LaunchAgents/com.cloudflare.tunnel.plist

문제 해결 및 팁

1. 터널 연결 문제

터널 연결에 문제가 있는 경우:

# 터널 상태 확인
cloudflared tunnel info n8n-tunnel

# 로그 확인
cloudflared tunnel run n8n-tunnel --loglevel debug

2. n8n 설정 조정

n8n에서 웹훅을 사용할 때는 WEBHOOK_URL 환경 변수를 설정해야 합니다. docker-compose.yml 파일에 다음과 같이 추가합니다:

environment:
  - N8N_HOST=n8n.example.site
  - N8N_PROTOCOL=https
  - WEBHOOK_URL=https://n8n.example.site

3. 여러 서비스 연결

하나의 터널로 여러 서비스를 연결할 수 있습니다. config.yml 파일에 여러 서비스를 추가하면 됩니다:

ingress:
  - hostname: n8n.example.site
    service: http://localhost:5678
  - hostname: dashboard.example.site
    service: http://localhost:3000
  - service: http_status:404

 

마치며

Cloudflare 터널을 이용하면 복잡한 네트워크 설정 없이도 로컬에서 실행 중인 n8n에 안전하게 접근할 수 있습니다. 특히 개발 환경이나 홈 서버에서 실행 중인 서비스에 접근할 때 유용합니다.

이 방법의 장점은:

  • 복잡한 포트 포워딩 설정이 필요 없음
  • SSL/TLS 자동 설정으로 안전한 접속
  • Cloudflare의 보안 기능을 활용할 수 있음
  • 고정 IP가 없어도 언제든지 접근 가능

 

 

다음 포스팅에서는 n8n에서 실제 워크플로우를 만들고 자동화하는 방법에 대해 알아보겠습니다. 혹시 질문이나 문제가 있으시면 댓글로 남겨주세요!

 

참고 자료: