Post

Pi-Server 만들기 3편: Cloudflare Tunnel 연결

Pi-Server 만들기 3편: Cloudflare Tunnel 연결

🌐 Pi-Server 구축기 3편: Cloudflare Tunnel 연결

1. Cloudflare로 Tunnel을 선택한 이유

처음에는 그냥 직접 열어보고 싶었다. 포트포워딩이니, 방화벽이니 하는 걸 직접 만져보면 재밌을 줄 알았는데, 찾다 보니 구조가 이렇더라.

브라우저 → DNS → IP → 우리 집 라우터 → 포트포워딩 → 로컬서버

이걸 전부 손으로 세팅해야 했다. 그 과정에서 부모님 와이파이 라우터를 만지다가 망치면 집안이 정전 나는 꼴이 될 수도 있어서, 깔끔하게 포기했다. 게다가 내가 사용 중인 ttyd 자체에 보안 이슈가 좀 있고, 네트워크 구조에 대한 지식이 아직 부족하다는 것도 이유였다.

그 뒤로는 “로컬이 아닌 다른 장소에서도 내 서버에 접속할 방법”을 찾아봤다. 그때 GPT와 얘기하다가 Cloudflare Tunnel이라는 걸 알게 됐다.

Cloudflare는 역방향 프록시(reverse proxy) 방식을 사용한다. 정확한 동작 원리는 다 이해 못했지만, 요지는 이거다:

내 서버(IP, 포트 등)을 외부에 직접 노출하지 않고, Cloudflare가 대신 중계해준다.

즉, 내 집 네트워크를 직접 까발릴 필요가 없다. 이게 나에게는 매력적으로 다가왔다.

다른 선택지도 검토해봤다.

  • LocalTunnel → 연결 불안정, 신뢰성 떨어짐 (패스)
  • ngrok → 무료 플랜은 고정 URL 미지원 (패스)

결국 Cloudflare Tunnel을 선택했다. 결정적 이유는 다음 세 가지였다:

  1. 안정성 높음
  2. 도메인 연동 가능 (URL 고정)
  3. Zero Trust로 계정 인증 보안 추가 가능

무료로 이 모든 걸 제공한다는 게 아직도 좀 믿기지 않는다.


2. 내가 직접 서버를 띄우려 했던 사소한 노력들…

사실 Cloudflare를 알기 전에는 “DNS”부터 직접 건드려볼 생각이었다. DNS는 쉽게 말해 인터넷 주소록이다. 사람은 example.com을 기억하지만, 컴퓨터는 우리집 IP (예시: 123.123.12.12)로 통신한다. DNS가 그 둘을 연결해주는 셈이다.

그래서 처음에는 “우리 집 라우터의 IP를 직접 올리면 되지 않나?” 하고 단순하게 생각했다. 하지만 그건 곧장 보안 재앙의 지름길이었다.

왜냐면, 집 라우터를 포트포워딩으로 열어두면, 외부에서 그 IP로 직접 접근이 가능해진다. 만약 설정이 허술하면, 진짜로 누가 우리집 와이파이를 털 수도 있다. 특히 나는 부모님 댁 공유기를 쓰고 있었기 때문에… 말 그대로 가족 네트워크 전체가 위험해질 수 있었다.

“호기심은 좋지만, 가정망은 실험실이 아니다.” 결국 여기서 Cloudflare 쪽으로 방향을 바꿨다.


3. Cloudflare Tunnel로 임시 서버 띄워보기

이제 실습이다. 우선 Raspberry Pi에 Cloudflare 클라이언트를 설치했다.

1
2
3
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm64.deb
sudo dpkg -i cloudflared-linux-arm64.deb
cloudflared --version

설치가 끝나면 임시로 터널을 생성해 내 로컬 ttyd 서버(localhost:3000)를 외부로 연결해볼 수 있다.

1
cloudflared tunnel --url http://localhost:3000

Cloudflare에서 테스트용으로 자동 발급해주는 임시 URL이 뜬다. 그 URL로 접속하면 브라우저에서 내 ttyd가 그대로 열린다. 정말 그 순간은 짜릿했다.

하지만 바로 한계도 느꼈다.

  • URL 주소가 매번 바뀐다.
  • Pi가 재부팅되면 링크도 새로 생김.
  • 결국 자동으로 URL을 받아서 내 메일로 보내는 스크립트를 짜야 하나 고민함.

그러다 알게 됐다 — Zero Trust 보안 설정을 하려면 고정 도메인이 필요하다. 결국 도메인 없이 임시로 여는 건 실험용 그 이상이 되기 힘들었다.


4. 다음 이야기 예고

이제 다음 단계는 명확하다. 도메인을 직접 구매하고, Cloudflare에 등록해서 URL을 고정시키는 것. 그래서 4편에서는 Squarespace에서 .dev 도메인을 구매하고, Cloudflare DNS와 연결해서 고정 주소를 만드는 과정을 다룬다.

🧠 다음 글: [Pi-Server 만들기 4편 — 도메인 구매와 URL 고정 (예정)]


← 이전 글: Pi-Server 만들기 2편: ttyd로 웹 Bash 띄우기 → 다음 글: Pi-Server 구축기 4편: 도메인 구매와 DNS 설정

This post is licensed under CC BY 4.0 by the author.