내 두 번째 Cloudflare Tunnel
Source: Dev.to

문제
관련된 프라이버시 및 보안 문제를 간단히 정리하면 다음과 같습니다:
- 포트 포워딩은 집 IP 주소를 노출합니다
- 동적 DNS는 지속적인 업데이트가 필요합니다
- 포트를 여는 것은 보안 위험이 됩니다
- SSL 인증서를 관리하는 것이 번거롭습니다
제가 원했던 해결책은 다음과 같았습니다:
- 집 네트워크를 안전하게 유지
- HTTPS를 자동으로 제공
- 인증 추가
- 유지 관리가 간단
Cloudflare Tunnel 등장
Cloudflare Tunnel은 네트워크에서 Cloudflare 엣지로의 안전한 아웃바운드 연결을 생성합니다. 도메인에 대한 요청은 이 터널을 통해 애플리케이션으로 라우팅되며, 인바운드 포트가 전혀 필요하지 않습니다.
흐름:
Internet → Cloudflare Edge → Tunnel → NAS → Application
모든 연결은 NAS에서 아웃바운드로 이루어지므로 방화벽을 건드리지 않습니다.
터널 설정
사전 요구 사항
- Cloudflare에서 관리되는 도메인
- NAS에서 실행 중인 Docker 서비스
- Docker 컨테이너로 실행되는 애플리케이션
이름이 지정된 터널 만들기
- Cloudflare Zero Trust 대시보드에서 Access > Tunnels 로 이동합니다.
- Create a tunnel 을 클릭하고 Cloudflared 를 선택합니다.
- 터널 이름을 지정합니다 (예:
nas). - 생성된 터널 토큰을 복사합니다 – 곧 필요합니다.
토큰은 터널을 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)
이렇게 하면 cloudflared 가 http://myapp: 로 앱에 접근할 수 있게 되며, 포트를 노출하지 않습니다.
퍼블릭 호스트네임 구성
- Cloudflare 대시보드에서 터널 설정을 엽니다.
- Public Hostname 탭으로 이동해 Add a public hostname 을 클릭합니다.
- 서브도메인, 도메인, 서비스 경로를 설정합니다 (예:
http://myapp:).
호스트네임은 Docker 링크 별칭과 일치해야 합니다. 다음과 같은 오류가 발생하면:
dial tcp: lookup wrongname on 192.168.1.254:53: no such host
링크 이름과 호스트네임이 맞는지 확인하세요.
인증 추가
추가 보호가 없으면 URL만 알고 있어도 누구든 앱에 접근할 수 있습니다. Cloudflare Access는 코드 변경 없이 내장 인증을 제공합니다.
- Access > Applications 로 이동합니다.
- Add an application > Self‑hosted 를 클릭합니다.
- 애플리케이션 이름, 도메인, 서브도메인을 입력하고 Next 를 클릭합니다.
- 정책을 생성합니다:
- Policy name: “Allow myself”
- Action: Allow
- Include rule: Emails →
john@doe.it
- 애플리케이션 추가를 완료합니다.

정책이 터널에 연결되어 있는지 확인하세요. 그렇지 않으면 Cloudflare 가 인증을 적용하지 않습니다.
결과
외부에서 애플리케이션에 접근할 때:
- Cloudflare 가 인증 페이지를 표시합니다.
- 이메일을 입력합니다.
- Cloudflare 가 일회용 코드를 전송합니다.
- 코드를 입력하면 인증이 완료됩니다.
- 요청이 터널을 통해 애플리케이션으로 프록시됩니다.
이제 어디서든 게시물을 예약할 수 있습니다.
결론
Cloudflare Tunnel 은 자체 호스팅을 위한 우아하고 비용이 들지 않는 솔루션을 제공합니다:
- 자동 HTTPS
- Cloudflare Access 를 통한 내장 인증
- 인바운드 포트가 없어 집 네트워크가 안전
전체 설정은 약 30분 정도 걸렸으며, 대부분은 컨테이너 이름과 정책 할당을 수정하는 데 사용되었습니다. 이 가이드가 비슷한 문제에 직면한 분들에게 도움이 되길 바랍니다.
추가 자료
- Home Assistant 용 Cloudflare Tunnel
- Cloudflare Access controls
- Cloudflare Policies
- Cloudflare Zero Trust 터널을 드디어 이해했다
원본은 A Java Geek에 2025년 11월 30일에 게시되었습니다.