IoT, 스마트홈, 홈서버

[홈서버 만들기 #3] Cloudflare 연결하기

Dr CK 2025. 12. 17. 00:22

이전에 홈서버를 duckDNS에 연결하여 이를 Nginx Proxy Manager를 이용하여 관리하였었다. 이전포스트 참고

2025.01.23 - [IoT, 스마트홈, 홈서버] - Nginx Proxy Manager 설정기 (feat. Proxmox)

 

이 방법도 크게 문제가 없었으나, 보안을 강화하는 방법을 찾다보니 Cloudflare 가 그러한 기능을 제공하고, 또한 많은 업체들에서 이용하고 있다는것을 알았다. OpenAI, Spotify 등등 많은 유명한 업체에서도 이용하고 있고, 한번 cloudflare 가 장애가 생기면 여러 서비스들이 오류를 일으키기도 한다. 

 

홈서버 보안에서 VPN 이나 NPM 등 여러 서비스를 복합적으로 이용하면 더 좋을수도 있고, VPN이 보안에 있어 더 좋을수도 있지만 사용이 복잡한데, cloudflare는 상대적으로 쉽게 이용이 가능해 보여 이 서비스를 이용해보고자 한다. 무엇보다 무료로 이용해도 충분한 서비스를 제공받을 수 있기 때문에 장점이 많아 보인다. 

 

 

1. Cloudflare란?

Cloudflare는 인터넷을 더 빠르고 안전하게 연결하고 보호해 주는 기술 회사이자 서비스 플랫폼이다. 쉽게 말해서 웹사이트와 인터넷 서비스가 빠르게 열리고 공격으로부터 안전하게 동작하도록 돕는 중간 역할을 한다. 웹사이트와 사용자 사이에 위치해 보안과 성능을 개선해 준다.

 

Connect, protect, and build everywhere

Make employees, applications and networks faster and more secure everywhere, while reducing complexity and cost.

www.cloudflare.com

 

여기서 제공하는 서비스 중에서 도메인 구입, Cloudflare tunnel, zero trust access 이 내가 사용할 서비스 들이다.

 

Cloudflare의 단점이라고 한다면 도메인이 있어야 한다는 것이다. DuckDNS에서 제공하는 서비스는 name.duckdns.org 처럼 뒤에 duckdns.org 의 도메인은 고정하면서 내 홈서버와 연결시켜주는 서브도메인을 제공한다. 따라서 도메인이 내것이 아니라는 점에서 이것으로 cloudflare를 이용하기에는 제한이 따른다.

 

아무래도 home.com, home.io, home.xyz 와 같은 도메인을 가지고 있어야 cloudflare를 이용할 수 있다보니 도메인 구입비용이 발생한다는것이 단점일 수 있겠다.

 

2. cloudflare 에서 도메인 구입

도메인은 cloudflare에서 구입할 필요는 없지만, 결국 사용할 서비스는 cloudflare라서 여기서 도메인을 구입하고자 한다. 여기서 도메인을 구입하게 되면 도메인 관리도 cloudflare에서 할 수 있어 편의성이 있다.

 

cloudflare에 가입을 하고 나면 도메인 구입하는 곳에 원하는 도메인 이름을 넣고 search 하게 되면 여러가지 가능한 도메인들이 나오게 된다. 표시되는 비용은 연간 비용이니 아무거나 마음에 드는 도메인을 선택한뒤 구입하면 바로 내 계정에 구입한 도메인이 표시가 된다.

 

 

 

이제 저 도메인이 내 도메인이 된다. 이제부터 내 홈서버를 여기에 연결시킬것이다.

(혹시 가입하다보면 플랜을 선택하라는 것이 나올수도 있는데, 그냥 무료 플랜으로도 충분하다.)

 

3. Cloudflare tunnel 설정

Cloudflare tunnel이란 말 그대로 구입한 도메인을 통하여 내 홈서버로 통하는 터널을 뚫는다는 것이다. 이전에 duckDNS + NPM을 쓸때처럼 domain.com 앞에 어떤 subdomain을 붙여서 그 서비스로 접속할 수 있게 만들수 있다. 예를들어 Homeassistant에 접속을 하기위한 터널을 만들면 HA.domain.com 을 통해서 외부에서 접속이 가능해진다.

 

Cloudflare tunnel의 장점은 이것을 통해서 내 공유기에서 포트포워딩이 필요가 없어진다는 점이다. 공유기에서 포트를 오픈하지 않음으로 인해서 보안성이 강화되는 것이고, 설정이 쉬워질 수 있다.

 

Network - Connectors 에서 create a tunnel 을 눌러서 터널을 뚫자. 도메인은 미리 준비하자

 

 

이후에 Couldflared - Select Cloudflared 를 선택한다.

 

 

터널의 이름은 적당히 짓는다. 이 이름은 Home assistant 와 같은 개별서비스로 통하는게 아니라 내 서버 (proxmox) 로 통하는것으로 보고 맞춰서 적당히 입력하면 된다.

 

 

이후가 중요한데, 내 proxmox에 있는 Docker에 cloudflare 터널의 출구를 설치해서 연결할 예정으로 Choose your enviroment에서 Docker을 선택한다. 그러면 아래처럼 명령어가 나온다. 

 

 

이 명령어에는 cloudflare의 터널을 확인하는 토큰이 포함되어 있다. 이 토큰을 통해서 내 홈서버를 특정하고 도메인을 연결시켜 주는 것이다.

이 명령어를 proxmox의 docker에 입력해서 설치해도 되지만, 나의 경우에는 오류가 발생하였다.

따라서 이 명령어를 그대로 쓰기보다, 메모장같은데 붙여넣기하여 명령어 안의 토큰만 따로 추출한다.

 

docker run -d \
  --name cloudflared \
  --restart unless-stopped \
  cloudflare/cloudflared:latest \
  tunnel --no-autoupdate run --token 토큰을여기에

 

그리고 대신 위의 명령어를 사용해서 docker에 설치를 한다.

설치는 금방 끝나고, (만약 오래걸린다면 오류를 의심하여야 한다) portainer에서 설치가 되었는지 확인이 가능할 것이다.

 

 

이후 연결할 목적지를 적어주면 된다.

Subdomain에는 이름을, Domain에는 구입한 도메인을, Service Type는 HTTPS, URL에는 내부 ip 주소를 쓰면 된다.

(아래 예시로 proxmox 홈을 적긴 했는데, 이건 좋지 못한 선택이다. 예시로 보여주기 위해서 적은것이지, 아무리 cloudflare 서비스를 사용한다고 하더라도 proxmox 홈을 외부로 노출시키는것은 좋지못한 선택이다)

 

 

이제 외부에서 name.domain.com 과 같은 방법을 통해서 내 홈서버에 (포트 오픈없이) 접속이 가능해진다.

 

 

4. Cloudflare Zero trust access

반응형