본문 바로가기
Web Application

localhost(로컬호스트)를 http(웹서비스)로 변환하는 방법(feat. ngrok)

by quantWhale 2024. 6. 23.
반응형

안녕하세요. Python & FastAPI를 이용하여 자동매매 프로그램을 개발하고 있는 인천고래입니다.

 

정식 웹 서비스를 제공하기 전에 로컬에서 테스트를 많이 하는데

실제 서버에 베타 버전을 올리기 이전에 로컬에서라도 외부 접근이 가능하게 만드는 서비스가 있어서 소개차 글을 작성합니다.

 

ngrok은 로컬에서 실행 중인 웹 서버를 외부 인터넷에서 접근할 수 있는 공개 URL로 노출시키는 터널링 서비스를 제공합니다. 이를 통해 로컬 환경에서 개발 중인 애플리케이션을 손쉽게 외부 사용자 또는 클라이언트에게 보여줄 수 있어서 웹훅 테스트, API 개발, 데모 등을 위해 매우 유용합니다.

 

ngrok 주요 기능

  • HTTP/HTTPS 터널링: 로컬 웹 서버를 안전한 HTTP 및 HTTPS URL로 노출시킵니다.
  • TCP 터널링: 비 HTTP/S 트래픽을 터널링 하여 원격 데스크톱, SSH 등 다양한 프로토콜을 지원합니다.
  • 로컬 네트워크 접속: 로컬 네트워크에 있는 다른 기기의 서버를 외부에 노출시킵니다.
  • 트래픽 검사: 실시간으로 요청 및 응답을 모니터링하고 검사할 수 있습니다.
  • OAuth 인증: 터널에 OAuth를 적용하여 안전한 접근을 관리합니다.
  • 커스텀 도메인: 유료 플랜에서는 커스텀 도메인을 설정할 수 있습니다.

 

1. ngrok 사용 방법

1-1. ngrok 설치

  1. ngrok 회원가입: https://ngrok.com/
    무료 회원과 유료 회원이 있습니다. 저는 구글 계정(Sign up with Google)으로 가입(무료)했습니다.
  2. ngrok 다운로드: https://dashboard.ngrok.com/get-started/setup/windows
    ngrok 다운로드 페이지에서 운영체제에 맞는 ngrok 패키지를 다운로드합니다.
  3. ngrok 설치:
    다운로드한 파일을 임의의 디렉토리에 압축 해제합니다. 저는 애플리케이션과 같은 경로에 압축 해제했습니다.

ngrok 다운로드 절차는 아래와 같습니다.

ngrok 다운로드

 

2. ngrok 인증 토큰 설정 및 ngrok 터널 실행

  1. 인증 토근 페이지: https://dashboard.ngrok.com/get-started/your-authtoken

  2. 인증 토근 복사: 
    대시 보드에서 "Your Authtoken"을 복사합니다.
  3. 인증 토근 설정(추가) : 
    아래의 명령문을 파이참 터미널에서 입력하면 됩니다. 도스(cmd)창에서 입력하셔도 됩니다.
    위에서 복사한 인증 토근값을 YOUR_AUTHTOKEN 자리에 대체하여 넣으시면 됩니다.
    ngrok config add-authtoken YOUR_AUTHTOKEN
  4. 파이참에서 FastAPI가 실행되는 코드를 아래와 같이 변경한 뒤 어플리케이션을 실행합니다.
    import uvicorn
    ...
    uvicorn.run(app, host="127.0.0.1", port=8000)
  5. 어플리케이션이 실행된 뒤에 ngrok 터널을 실행합니다.
    ngrok http 8000

 

ngrok 서버가 실행된 후 파이참 터미널에서는 아래와 같이 서버가 동작중인 것을 알 수 있습니다.

포워딩된 주소로 접속을 하면 정상적으로 동작이 될 것입니다.
예) https://f9bf-218-148-155-4.ngrok-free.app

 

이동평균선 패턴 분석 프로그램(인천고래 제작)

인천고래 제작 [이동평균선 패턴 분석 프로그램] : https://i-whale.com Message : 데이터를 가져오는 중...

f9bf-218-148-155-4.ngrok-free.app

 

ngrok 서버가 실행중인 모습

 

이것으로 간략하게나마 ngrok를 이용해서 외부에 공유되는 웹 서비스 URL을 만드는 방법에 대해 알아보았습니다.

유용하게 사용하시기를 바라겠습니다.

 

감사합니다.

반응형
-

댓글