본문 바로가기

라즈베리파이 5

라즈베리파이와 클라우드플레어 터널을 이용한 호스팅

반응형

라즈베리파이와 클라우드플레어 터널을 이용해 안전하게 웹사이트를 자체 호스팅하세요

 

집에서 나만의 웹사이트를 운영하는 건 언제나 꿈꿔왔던 일이지만, 공유기 설정을 건드리고 IP 주소를 노출하는 건 정말 싫었어요. 그래서 라즈베리 파이에 클라우드플레어 터널을 설치해 봤습니다. 솔직히 생각보다 훨씬 쉽고 안전하더라고요. 어떻게 작동하는지 보여드릴게요!

 

집에서 라즈베리 파이에 로컬 웹 서버를 실행하고 클라우드플레어 터널을 통해 노출시키면 안전하게 웹사이트를 호스팅할 수 있습니다. 이렇게 하면 클라우드플레어 네트워크에 암호화된 연결이 설정되어 라우터 포트를 열거나 집의 IP 주소를 노출하지 않고도 전 세계 어디에서든 접속할 수 있습니다.

 

 

출처: https://raspberrytips.com/cloudflare-selfhosted-website/

 

 

이 튜토리얼에서는 필요한 소프트웨어 설치부터 웹사이트 설정까지 모든 단계를 안내해 드립니다. 간단한 워드프레스 블로그든, 모든 기능을 갖춘 전자상거래 시스템이든, 어떤 웹사이트든 호스팅 과정은 동일합니다.

 

목차

Cloudflare Tunnel을 이용한 자체 호스팅 개요

웹사이트를 설정하세요

클라우드플레어 계정 만들기

Cloudflare 터널 설치 및 구성

Cloudflare Tunnel을 사용하여 웹사이트를 테스트하세요

자주 묻는 질문

 

Cloudflare Tunnel을 이용한 자체 호스팅 개요

 

셀프 호스팅이란 온라인 호스팅 서비스를 이용하지 않고 라즈베리 파이에서 직접 웹사이트를 운영하는 것을 의미합니다. 일반적으로 사용자들이 웹사이트에 접속하려면 GoDaddy, Namecheap 또는 기타 기존 웹 호스팅 플랫폼에 웹사이트를 호스팅해야 합니다.

 

셀프 호스팅을 사용하면 모든 것을 직접 제어하고 자신의 하드웨어에서 사이트를 직접 제공할 수 있습니다. 저는 예전에 Ngrok을 사용했었 습니다. Ngrok은 잘 작동하고 간단한 데모에는 좋지만, 가장 큰 단점은 기기에 직접 외부 터널을 생성한다는 것입니다. 이는 마치 노출된 포트처럼 작동하여 보안 위험을 증가시킬 수 있습니다. 특히 장기간 호스팅을 계획하는 경우에는 더욱 그렇습니다.

 

하지만 최근에 클라우드플레어 터널을 발견했는데, 훨씬 더 나은 해결책이라고 생각합니다.

 

Cloudflare Tunnel이 판도를 바꾸는 이유

 

이 모든 것이 어떻게 작동하는지 더 잘 이해하려면 Cloudflare를 Raspberry Pi를 공용 인터넷으로부터 숨겨주는 "중간자"라고 생각하면 됩니다.

 

그리고 이게 가장 흥미로운 부분입니다. Cloudflare Tunnel은 라우터 포트 포워딩이 전혀 필요하지 않습니다. 홈 네트워크에서 80번 포트, 443번 포트 또는 다른 어떤 포트도 열 필요가 없습니다. 라즈베리 파이는 항상 라우터와 방화벽 뒤에 안전하게 유지됩니다.

 

대신 Cloudflare는 Raspberry Pi에서 Cloudflare의 글로벌 네트워크로 바로 연결되는 안전하고 암호화된 터널을 생성합니다. 따라서 장치는 방화벽 뒤에 안전하게 유지됩니다.

 

 

실제로 어떤 일이 일어나는지 설명드리겠습니다. 누군가가 여러분의 사이트(예: testsite.raspberrytips.com)를 방문하면, 해당 요청은 여러분의 집으로 직접 전달되지 않습니다. 먼저 클라우드플레어(Cloudflare) 네트워크를 거칩니다. 그런 다음 클라우드플레어가 암호화된 터널을 통해 해당 요청을 라즈베리 파이로 전송합니다.

 

라즈베리 파이가 요청을 처리하고 동일한 보안 터널을 통해 응답을 다시 보내면 클라우드플레어가 방문자에게 전달합니다. 전체 과정은 매끄럽고 빠르며, 집 IP 주소를 노출하거나 라우터 포트를 열 필요가 없어 안전합니다.

 

하드웨어 요구 사항

 

이 프로젝트에 필요한 하드웨어는 다음과 같습니다.

 

  • 라즈베리 파이 보드 : 어떤 모델을 선택할지는 웹사이트의 요구 사양에 따라 달라집니다. 워드프레스 실행, 대량 트래픽 처리, 동적 콘텐츠 제공 등 프로젝트에 더 높은 처리 능력이 필요하다면 라즈베리 파이 4 또는 라즈베리 파이 5를 강력히 추천합니다.
  • 가벼운 프로젝트나 간단한 정적 웹사이트의 경우, 라즈베리 파이 3B+ 또는 라즈베리 파이 제로 와 같은 구형 모델 도 충분히 사용할 수 있습니다.
  • MicroSD 카드 : 최소 8GB 용량의 microSD 카드가 필요 하지만, 이상적인 용량은 설치하려는 운영 체제에 따라 다릅니다.
  • 안정적인 인터넷 연결 : 안정적인 인터넷 연결과 일관된 업로드 속도는 필수적입니다. 사용자들이 원격으로 사이트에 접속하기 때문에, 약하거나 불안정한 업로드 연결은 사이트 속도를 저하시키거나 접속을 불가능하게 만들 수 있습니다.
  • 선택적 주변기기 : SSH 또는 VNC를 통해 라즈베리 파이에 원격으로 접속 하지 않는 경우 , 설정을 위해 키보드, 마우스 및 HDMI 모니터가 필요합니다.

 

소프트웨어 요구 사항

 

  • 설치된 운영 체제 : 이 프로젝트에서는 Raspberry Pi OS에만 국한되지 않고 ARM 프로세서를 지원하는 모든 Linux 기반 배포판을 사용할 수 있습니다 .
  • Cloudflared(Cloudflare Tunnel 클라이언트): Raspberry Pi를 Cloudflare 네트워크에 연결하는 소프트웨어입니다. 이 소프트웨어는 사용자가 집 IP 주소를 노출하지 않고도 사이트에 접속할 수 있도록 안전한 터널을 생성합니다.
  • 웹 서버 소프트웨어(예: Apache, Nginx): 웹사이트 파일을 제공하려면 웹 서버가 필요합니다. Apache는 초보자에게 친숙하며, Nginx는 가볍고 저전력 기기에서도 뛰어난 성능을 제공합니다.
  • 웹사이트 플랫폼(예: WordPress, 정적 사이트 또는 사용자 지정 앱): 호스팅하려는 내용에 따라 다릅니다. 간단한 정적 HTML 사이트, WordPress 전체 설치, 또는 Python, Node.js, React로 개발한 사용자 지정 앱 등 어떤 것이든 가능합니다.

 

웹사이트를 설정하세요

 

Cloudflare 터널을 구성하기 전에 운영 중인 웹사이트 유형과 사용하는 포트를 파악하는 것이 중요합니다 . Cloudflare는 Raspberry Pi에서 트래픽을 정확히 어디로 전달해야 하는지 알기 위해 이 정보가 필요합니다.

 

일반적으로 두 가지 흔한 시나리오가 있습니다 .

 

시나리오 1: 워드프레스를 사용 중입니다(포트 80).

 

라즈베리 파이에 워드프레스를 설치했다면 , 사이트는 일반적으로 Apache 또는 Nginx 서버를 통해 다음과 같은 경로에서 서비스될 것입니다.

 

/var/www/html

 

이 경우 웹 서버는 80번 포트에서 실행되므로 라즈베리 파이는 로컬 주소로 해당 사이트를 제공합니다.

 

http://localhost/80

 

라즈베리 파이에서 Apache, PHP, MySQL이 어떻게 함께 작동하는지 빠르게 다시 확인하고 싶다면, 저희의 전체 LAMP 서버 설정 가이드를 참고하세요 . 모든 과정을 단계별로 안내해 드립니다.

 

 

 

따라서 클라우드플레어 터널을 설정할 때는 워드프레스가 실제로 실행되는 포트인 80번 포트를 가리키도록 설정해야 합니다.

 

시나리오 2: 사용자 지정 웹사이트 또는 웹 애플리케이션을 구축했습니다(다른 포트).

 

Node.js , Python 또는 Vite , React , Flask 와 같은 프런트엔드 개발 서버를 사용하여 직접 웹사이트나 앱을 개발한 경우, 애플리케이션이 3000 , 5000 , 5173 또는 사용자가 구성한 다른 포트와 같이 완전히 다른 포트에서 실행될 수 있습니다.

 

이러한 상황에서는 Cloudflare 터널이 해당 포트를 정확히 가리켜야 수신 트래픽이 애플리케이션으로 올바르게 라우팅됩니다.

 

팁 : 이 튜토리얼에서는 간단하게 설명하겠습니다. 기본적인 HTML/CSS 웹사이트를 만들어서 /var/www/html 디렉토리에 넣었습니다. 즉, 80번 포트에서 실행됩니다.

 

클라우드플레어 계정 만들기

 

지금까지는 라즈베리 파이에서 웹사이트가 정상적으로 작동하고 있다고 가정했습니다. 이제 라즈베리 파이에 클라우드플레어를 설정하는 방법을 살펴보겠습니다.

 

먼저 클라우드플레어 공식 웹사이트에 접속하여 계정이 없으면 계정을 만들고 도메인을 추가하세요. 솔직히 말씀드리면 이 단계는 꽤 간단하지만, 클라우드플레어의 다양한 메뉴를 탐색하는 것이 때때로 헷갈릴 수 있습니다. 그래서 단계별로 자세히 설명해 드리겠습니다.

 

1. Cloudflare에서 계정을 만드세요 . Google, Apple, 이메일, GitHub 등 다양한 연결 옵션 중에서 선택할 수 있습니다.

 

2. 로그인 후 아래 이미지와 같이 상단 메뉴의 '추가' 버튼을 클릭하세요.

 

3. 도메인을 추가하면 Cloudflare에서 DNS 레코드를 가져오는 방법을 묻는 라디오 버튼이 표시됩니다. 경험상 " DNS 레코드 빠른 스캔 "을 선택하는 것이 좋습니다. 권장 옵션이며 시간을 많이 절약할 수 있습니다.

 

 

완료되면 하단의 "계속"을 클릭하세요.

 

4. 다음 단계에서는 사용할 요금제를 선택하세요. 이 튜토리얼에서는 "무료 팬"으로 시작하고 나중에 업그레이드하는 것을 권장합니다.

 

5. 다음으로, Cloudflare에서 제공하는 네임서버로 도메인 네임서버를 업데이트하는 방법에 대한 단계별 안내 페이지가 나타납니다. 이때 상단에 "잘못된 네임서버"라는 주황색 알림이 표시될 것입니다.

 

 

이 오류를 수정하려면 안내된 단계를 따라 진행하고, 완료되면 하단의 "지금 네임서버 확인"을 클릭하세요.

 

팁: Cloudflare는 모든 도메인에 고유한 네임서버를 할당합니다. Cloudflare 설정 안내에 나와 있는 정확한 네임서버를 항상 사용하세요.

 

6. 네임서버를 업데이트하면 Cloudflare에서 변경 사항을 확인합니다. 모든 것이 올바르게 완료되면 아래 이미지와 같이 상단에 "활성" 상태가 표시됩니다.

 

 

자, 이제 클라우드플레어에 도메인을 성공적으로 추가했습니다. 이제 라즈베리 파이로 돌아가서 클라우드플레어 터널을 설치하고 구성해 보겠습니다.

 

Cloudflare 터널 설치 및 구성

 

Cloudflare Tunnel은 Raspberry Pi와 Cloudflare 간에 안전하고 암호화된 연결을 생성하여 사용자가 로컬 네트워크에서 포트를 열지 않고도 자체 호스팅 사이트에 액세스할 수 있도록 합니다.

 

이 섹션에서는 라즈베리 파이에 클라우드플레어 터널을 설치하고 구성하는 방법에 대한 단계별 가이드를 제공합니다.

 

먼저 다음 명령을 실행하여 Raspberry Pi용 최신 Cloudflared .deb 패키지를 다운로드하세요.

 

wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-arm.deb

 

 

다운로드가 완료되면 dpkg 명령어를 사용하여 패키지를 설치하면 라즈베리 파이에서 Cloudflared를 실행할 수 있습니다.

 

sudo dpkg -i cloudflared-linux-arm.deb

 

Cloudflared가 올바르게 설치되었는지 확인하고 버전을 확인하여 모든 기능이 정상적으로 작동하는지 확인하십시오.

 

cloudflared -v

 

 

다음으로, 라즈베리 파이에서 Cloudflare 계정에 로그인하여 Cloudflare 대시보드와 연결하세요. 아래 명령어를 실행하면 터미널에 URL이 표시됩니다. 해당 링크를 브라우저에서 열어 Cloudflare에 추가한 도메인을 연결하세요. 브라우저에서 연결할 도메인을 선택하라는 메시지가 나타납니다. 도메인을 선택하면 "승인"을 요청하는 팝업 창이 나타납니다. 승인을 클릭하면 연결이 완료됩니다. 모든 과정이 정상적으로 진행되었고 오류가 발생하지 않았다면 아래 이미지와 유사한 "성공" 팝업 창이 표시됩니다. 연결이 완료되면 Cloudflare에서 인증서를 생성하여 /home/username/.cloudflared/cert.pem 파일에 추가합니다.

 

cloudflared login

 

 

다음으로, 아래 명령어를 실행하여 웹사이트용 터널을 생성해야 합니다. 이미 다른 터널이 실행 중인 경우를 대비하여 고유한 이름을 사용해야 합니다. 예를 들어, 저는 다음과 같이 입력하겠습니다. 이 명령어를 실행하면 고유 ID를 가진 새 터널이 생성됩니다. 이 ID를 복사하여 어딘가에 붙여넣어 두세요. 나중에 필요합니다.

 

cloudflared tunnel create your-tunnel-name

 

cloudflared tunnel create my-rasp-site

 

 

다음으로 터널 관리를 위한 구성 파일을 생성합니다. 이 파일에 사이트에서 사용하는 포트 번호, 도메인 및 서브도메인과 같은 정보를 추가합니다. 아래 명령어를 실행하고,

 

sudo nano ~/.cloudflared/config.yml

 

아래 내용을 복사하여 붙여넣으세요. 홈 디렉터리, 터널 ID, 도메인 이름, 서비스 포트 등의 세부 정보는 필요에 따라 변경해야 합니다.

 

tunnel: 74ec7ff1-dcc1-4b53-8788-a6a2e1480da9
credentials-file: /home/pat/.cloudflared/74ec7ff1-dcc1-4b53-8788-a6a2e1480da9.json

ingress:
  - hostname: your-domain.com
    service: http://localhost:80

  - service: http_status:404

 

 

다음으로, 아래 명령어를 실행하여 터널과 도메인을 연결하는 DNS 항목을 생성합니다.

 

cloudflared tunnel route dns mywpsite yourdomain.com

 

Cloudflared가 자동으로 올바른 CNAME 레코드를 생성해 주므로 수동으로 DNS를 편집할 필요가 없습니다.

 

 

완료되면 아래 명령어를 사용하여 터널을 시작하십시오.

 

cloudflared tunnel run mywpsite

 

 

 

 

터널이 예기치 않은 오류로 인해 멈추지 않는 한, 이제 모든 것이 원활하게 작동할 것이며, 출발하셔도 됩니다.

 

Cloudflare Tunnel을 사용하여 웹사이트를 테스트하세요

 

이제 터널 설정이 완료되었으니 모든 것이 예상대로 작동하는지 확인해야 합니다. 브라우저를 열고 라즈베리 파이에 연결한 도메인 또는 서브도메인으로 이동하세요.

 

제 경우에는 아래에서 보시다시피 사이트가 성공적으로 로드되어 터널이 완벽하게 작동하고 있음을 확인할 수 있습니다.

 

 

모든 설정이 올바르게 되었다면 웹사이트가 일반 서버에서처럼 정상적으로 로드될 것입니다. 이는 클라우드플레어 터널이 인터넷에서 라즈베리 파이로 트래픽을 성공적으로 라우팅하고 있음을 확인시켜 줍니다.

 

사이트가 로드되지 않으면 config.yml 파일을 다시 확인하고, 터널이 실행 중인지 확인하고, 라즈베리 파이에서 올바른 포트가 열려 있는지 확인하십시오.

 

지금까지 모든 설정이 완료된 것으로 알고 있습니다. Cloudflare Tunnel을 사용하면 Raspberry Pi에서 호스팅하는 웹사이트를 인터넷에 쉽게 노출할 수 있습니다. 터널이 설정되면 Cloudflare 네트워크의 보호를 받으면서 어디서든 사이트에 접속할 수 있습니다.

 

이 구성은 테스트, 개인 프로젝트 또는 학습 목적으로는 이상적이지만, 라즈베리 파이와 가정용 네트워크가 많은 트래픽을 안정적으로 처리하지 못할 수 있으므로 실제 웹사이트나 트래픽이 많은 사이트에는 권장하지 않습니다.

 

자주 묻는 질문

 

라즈베리 파이 전원이 꺼지면 내 사이트는 계속 온라인 상태일까요?

 

아니요. 라즈베리 파이가 웹사이트를 호스팅하는 서버이기 때문에, 라즈베리 파이의 전원이 꺼지거나 인터넷 연결이 끊어지면 웹사이트도 오프라인 상태가 됩니다. 터널은 라즈베리 파이가 켜져 있고 인터넷에 연결되어 있어야 작동합니다.

 

Cloudflare Tunnel을 사용하여 웹사이트를 자체 호스팅하려면 고정 IP 주소가 필요한가요?

 

아니요. 클라우드플레어 터널의 장점 중 하나는 동적 IP에서도 작동한다는 것입니다. 클라우드플레어가 외부 라우팅을 처리하므로 집에서 IP 주소를 변경하는 것에 대해 걱정할 필요가 없습니다.

 

Cloudflare Tunnel을 여러 웹사이트 또는 서브도메인에 사용할 수 있나요?

 

예. config.yml 파일에 호스트 이름 항목을 추가하여 터널을 구성하고 여러 사이트 또는 서브도메인으로 트래픽을 라우팅할 수 있습니다. 각 사이트 또는 서브도메인은 라즈베리 파이에서 고유한 로컬 서비스 주소를 가질 수 있습니다.

 

위 튜토리얼의 원문 페이지로 가시려면 이 링크를 클릭하세요.

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩