본문 바로가기

Python/개발환경

ngrok - 로컬 서비스를 외부에서 접속

ngrok은 로컬 서비스를 외부에서 접속 할 수 있도록 해주는 프로그램입니다. 개발을 하다 보면 아래와 같은 곤란한 상황이 발생합니다. 이 때 ngrok을 사용하면 편리합니다.

  • 내부에서 개발중인 서비스를 고객이 갑자기 보고 싶어 할 때
  • 외부의 서비스와 연동할 테스트 서버가 필요하지만 정식으로 서버 환경을 구축하기 어려울 때(어렵거나 귀찮거나 돈이 없거나...)
  • 특히 외부 서비스와 연동할 https 서버가 필요할 때

Windows 10 기준입니다.

ngork 설치

2024년 1월 11일 기준으로 작성 되었습니다. 사이트의 변경이 있을 수 있습니다.

https://ngrok.com/ 에 접속합니다.

[sign up]을 하고 [Login]을 합니다.

Connect -> Windows -> [Download] -> [Download for Windows (64-bit)]를 클릭합니다.

다운로드 받은 파일의 압축을 풀면 'ngrok.exe'를 확인하실 수 있습니다. 적절한 위치로 이동합니다.

인증 토큰을 추가 하기 위한 사이트에서 제공하는 명령어를 복사 합니다.

터미널(cmd)을 실행하고 'ngrok.exe'가 있는 파일로 이동합니다. 복사한 명령어를 붙여 넣고 실행합니다.

인증 토근이 추가 되었습니다.

로컬 서버 실행

ngrok는 로컬 서버를 외부에서 접속 할 수 있도록 해주는 프로그램입니다. 로컬 서버가 실행 되어 있어야 합니다. FastAPI를 사용하여 로컬 서버를 실행하겠습니다. 로컬 서버가 이미 실행되어 있거나 FastAPI를 사용하지 않는 경우는 생략하셔도 됩니다.

main.py 작성

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

터미널(cmd)을 실행하고 'main.py'가 있는 파일로 이동하여 아래의 명령어를 실행합니다.

uvicorn main:app --reload

웹 브라우저에서 http://localhost:8000 에 접속합니다. 아래와 같이 응답이 옵니다.

{"message": "Hello World"}

ngrok 실행

터미널(cmd)을 실행하고 'ngrok.exe'가 있는 파일로 이동합니다. ngrok을 실행합니다.

ngrok http 8000

로컬 서버가 8000으로 실행되어 있기 때문에 ngrok도 8000으로 실행합니다. 아래와 같이 출력 됩니다.

ngrok                                                                                                                                                                                            (Ctrl+C to quit)

Build better APIs with ngrok. Early access: ngrok.com/early-access

Session Status                online
Account                       계정 (Plan: Free)
Version                       3.5.0
Region                        지역
Latency                       44ms
Web Interface                 http://127.0.0.1:4040
Forwarding                    https://92ee-1-213-195-155.ngrok-free.app -> http://localhost:8000

Connections                   ttl     opn     rt1     rt5     p50     p90     
                              0       0       0.00    0.00    0.00    0.00   

테스트를 위해 휴대폰의 5G를 사용하여 외부에서 접속해 보십시오. 아래와 같은 응답이 오면 성공입니다.

{"message": "Hello World"}

'Python > 개발환경' 카테고리의 다른 글

Python - Google Colab  (0) 2024.03.14
Python - Jupyter notebook  (0) 2024.03.14
Python 서버 이전 - 01 (ubuntu 20.04)  (0) 2023.12.30
Python 개발 환경 설정 - 01 (ubuntu 20.04)  (0) 2023.12.27