내 두 번째 Cloudflare Tunnel

발행: (2025년 12월 4일 오후 06:02 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

My second Cloudflare Tunnel 표지 이미지

문제

관련된 프라이버시 및 보안 문제를 간단히 정리하면 다음과 같습니다:

  • 포트 포워딩은 집 IP 주소를 노출합니다
  • 동적 DNS는 지속적인 업데이트가 필요합니다
  • 포트를 여는 것은 보안 위험이 됩니다
  • SSL 인증서를 관리하는 것이 번거롭습니다

제가 원했던 해결책은 다음과 같았습니다:

  • 집 네트워크를 안전하게 유지
  • HTTPS를 자동으로 제공
  • 인증 추가
  • 유지 관리가 간단

Cloudflare Tunnel 등장

Cloudflare Tunnel은 네트워크에서 Cloudflare 엣지로의 안전한 아웃바운드 연결을 생성합니다. 도메인에 대한 요청은 이 터널을 통해 애플리케이션으로 라우팅되며, 인바운드 포트가 전혀 필요하지 않습니다.

흐름:
Internet → Cloudflare Edge → Tunnel → NAS → Application

모든 연결은 NAS에서 아웃바운드로 이루어지므로 방화벽을 건드리지 않습니다.

터널 설정

사전 요구 사항

  • Cloudflare에서 관리되는 도메인
  • NAS에서 실행 중인 Docker 서비스
  • Docker 컨테이너로 실행되는 애플리케이션

이름이 지정된 터널 만들기

  1. Cloudflare Zero Trust 대시보드에서 Access > Tunnels 로 이동합니다.
  2. Create a tunnel 을 클릭하고 Cloudflared 를 선택합니다.
  3. 터널 이름을 지정합니다 (예: nas).
  4. 생성된 터널 토큰을 복사합니다 – 곧 필요합니다.

토큰은 터널을 Cloudflare에 인증하는 역할을 합니다.

NAS에서 cloudflared 실행

공식 Docker 이미지를 가져옵니다:

docker pull cloudflare/cloudflared:2025.9.1

Synology Docker UI를 사용해 다음 설정으로 컨테이너를 생성합니다:

  • Container name: cloudflared
  • Command: tunnel --no-autoupdate run
  • Environment variable: TUNNEL_TOKEN= (여기에 토큰을 붙여넣기)
  • Network: 애플리케이션과 동일한 네트워크 (예: bridge)

cloudflared 컨테이너와 애플리케이션 컨테이너를 연결합니다:

  • Link container: 애플리케이션 컨테이너 이름 (예: myapp)
  • Alias: 동일한 이름 (myapp)

이렇게 하면 cloudflaredhttp://myapp: 로 앱에 접근할 수 있게 되며, 포트를 노출하지 않습니다.

퍼블릭 호스트네임 구성

  1. Cloudflare 대시보드에서 터널 설정을 엽니다.
  2. Public Hostname 탭으로 이동해 Add a public hostname 을 클릭합니다.
  3. 서브도메인, 도메인, 서비스 경로를 설정합니다 (예: http://myapp:).

호스트네임은 Docker 링크 별칭과 일치해야 합니다. 다음과 같은 오류가 발생하면:

dial tcp: lookup wrongname on 192.168.1.254:53: no such host

링크 이름과 호스트네임이 맞는지 확인하세요.

인증 추가

추가 보호가 없으면 URL만 알고 있어도 누구든 앱에 접근할 수 있습니다. Cloudflare Access는 코드 변경 없이 내장 인증을 제공합니다.

  1. Access > Applications 로 이동합니다.
  2. Add an application > Self‑hosted 를 클릭합니다.
  3. 애플리케이션 이름, 도메인, 서브도메인을 입력하고 Next 를 클릭합니다.
  4. 정책을 생성합니다:
    • Policy name: “Allow myself”
    • Action: Allow
    • Include rule: Emails → john@doe.it
  5. 애플리케이션 추가를 완료합니다.

정책 생성됨

정책이 터널에 연결되어 있는지 확인하세요. 그렇지 않으면 Cloudflare 가 인증을 적용하지 않습니다.

결과

외부에서 애플리케이션에 접근할 때:

  1. Cloudflare 가 인증 페이지를 표시합니다.
  2. 이메일을 입력합니다.
  3. Cloudflare 가 일회용 코드를 전송합니다.
  4. 코드를 입력하면 인증이 완료됩니다.
  5. 요청이 터널을 통해 애플리케이션으로 프록시됩니다.

이제 어디서든 게시물을 예약할 수 있습니다.

결론

Cloudflare Tunnel 은 자체 호스팅을 위한 우아하고 비용이 들지 않는 솔루션을 제공합니다:

  • 자동 HTTPS
  • Cloudflare Access 를 통한 내장 인증
  • 인바운드 포트가 없어 집 네트워크가 안전

전체 설정은 약 30분 정도 걸렸으며, 대부분은 컨테이너 이름과 정책 할당을 수정하는 데 사용되었습니다. 이 가이드가 비슷한 문제에 직면한 분들에게 도움이 되길 바랍니다.

추가 자료

원본은 A Java Geek에 2025년 11월 30일에 게시되었습니다.

Back to Blog

관련 글

더 보기 »