Post

Ngrok | 로컬 서버를 외부와 통신이 가능하게 해주는 툴

라즈베리파이와 Flask로 프로젝트를 할 때, 항상 같은 WiFi에 접속해야만 RC카를 조종할 수 있었다. 로컬 ip를 사용하고 있기 때문이다. 링크만 있으면 누구나 접속할 수 있도록 하려면 라즈베리파이의 로컬 서버를 외부에서도 접속 가능하게 해야 했다. 서버를 구매하기엔 간단한 프로젝트용이라 부담되고, 다른 방법을 찾다가 포기하던 찰나, 친구가 Ngrok라는 툴을 소개해줘서 이를 극복할 수 있었다.


Ngrok란?

Ngrok는 로컬 서버를 외부에서 접근할 수 있게 해주는 터널링 서비스이다. 원하는 포트로 터널을 열어준다. 이를 통해 개발자는 네트워크 설정이나 방화벽을 신경 쓰지 않고도 로컬에서 실행 중인 웹 애플리케이션을 외부에서 접근할 수 있도록 할 수 있다. 특히 다음과 같은 특징을 가지고 있다:

  • 간편한 설정: 설치 후 간단한 명령어로 로컬 서버를 외부에 공개할 수 있다.

  • 보안: HTTPS를 기본으로 제공하여 안전하게 데이터를 전송할 수 있다.

  • 다양한 플랫폼 지원: Windows, macOS, Linux 등 다양한 운영체제에서 사용 가능하다.


Ngrok 설치 및 사용 방법

1. Ngrok 설치

Ngrok를 설치하는 방법은 매우 간단하다. Ngrok 공식 웹사이트에 다운로드에 대한 설명을 따르면 된다. 각 운영체제에 맞는 설치 파일을 제공하므로, 해당 파일을 다운로드하여 설치한다.

/assets/img/ngrok_download.png로그인 한 후 다운로드 창의 모습

/assets/img/ngrok_token.png운영체제 별로 설치 방법과 토큰 사용 방법에 대한 자세한 설명이 나와있다.

로그인은 안 해도 된다. 그러나 로그인 안하고 무료 플랜으로 사용하면 터널링 세션 시간 8시간 제한이 있다고 한다. 8시간이 지나면 서버 주소가 바뀐다. 로그인해서 제공되는 토큰을 사용하면 세션을 시간 제한 없이 이용할 수 있으므로 로그인하는 게 낫다. ngrok 홈페이지에 로그인 한 후 토큰을 config에 추가만 해주면 된다.

ngrok 무료 플랜은 몇 가지 제약 사항이 있지만 개인적으로 사용하는 목적으로는 충분한 것 같다.

무료 플랜의 제약 사항

  • HTTP/TCP 접속을 위한 랜덤 URL, 포트를 생성

  • 최대 1개의 ngrok 프로세스

  • ngrok 프로세스 당 최대 4개의 터널

  • 분당 최대 40개의 커넥션


2. Ngrok 실행

ngrok를 실행하는 방법은 매우 간단하다. 자신이 사용할 포트 번호에 맞게 터미널에 아래 명령어를 입력하면 실행된다. 아래는 80번 포트로 실행 중인 Flask 서버를 터널링하겠다는 뜻이다.

1
ngrok http 80

참고로 두 개의 터미널에서 서로 다른 포트번호로 ngrok를 실행시키는 것은 불가능했다.

ngrok를 실행하면 터미널에 아래와 같이 뜬다.

ngrok_link.png

빨간색 밑줄 친 링크가 외부에서 접속할 수 있는 서버 주소가 된다. 끝!!

이 주소는 ngrok를 실행시킬 때마다 변경되어 제공된다. 그래서 지속적인 서비스를 위해 ngrok를 쓰는 것은 적합하지 않다. 그냥 개발 단계에서 테스트용으로 적합한 툴이다.

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