[ngrok] 배포없이 로컬 서비스 인터넷으로 공개하기
ngrok 이란?
ngrok 은 로컬 환경에 있는 서비스나 애플리케이션을 인터넷에 공개할 수 있도록 도와주는 서비스입니다. 대부분 로컬 환경에 있는 서비스를 외부에서 접속하도록 하려면, 방화벽을 여는 등의 방법을 사용합니다. 쉽지 않죠..
이를 쉽게 하기 위해서 ngrok 은 NAT 나 방화벽을 우회하여 인터넷으로부터 로컬 서비스에 접속할 수 있도록 하는 터널링 서비스를 제공합니다.
토이 프로젝트를 진행할 때, '로컬에서 실행한 서비스를 팀원들도 접속할 수 있도록 하고 싶은디.. 서버에 올려야되나ㅠㅠ' 하는 고민을 했던 경험이 있습니다. 그때는 화면 공유를 해서 직접 보여주거나, 서버에 올리는 방법 밖에 생각을 못했었는데, 이 고민을 ngrok 이 해결해줄 수 있습니다.
무료 버전과 유료 버전이 있으며, 무료 버전에서는 여러 기능을 쓰지 못하지만 ngrok 의 메인 서비스인 터널링 서비스는 사용 가능합니다. 무료 버전으로도 충분할 듯 합니다. 유료 버전을 확인하고 싶다면 여기를 클릭하시면 됩니당.
무료 버전에서 제공하는 기능은 다음과 같습니다.
1. HTTP/TCP 접속을 위한 URL 생성
2. 1개의 ngrok 프로세스
3. 하나의 ngrok 프로세스 당 최대 4개의 터널
등등..
1개의 ngrok 프로세스, 그리고 프로세스 당 최대 4개의 터널로는 아래와 같은 시나리오가 가능합니다.
"
로컬 80 포트에서 웹 서버
로컬 8080 포트에서 API 서버 실행
로컬 22번 포트에서 SSH 서버 실행
로컬 3306 포트에서 MySQL 실행
"
4개의 서버에 대한 인터넷 접근을 제공받을 수 있습니다.
ngrok 설치
Mac
brew install ngrok/ngrok/ngrok
Linux
curl -s https://ngrok-agent.s3.amazonaws.com/ngrok.asc | \
sudo tee /etc/apt/trusted.gpg.d/ngrok.asc >/dev/null && \
echo "deb https://ngrok-agent.s3.amazonaws.com buster main" | \
sudo tee /etc/apt/sources.list.d/ngrok.list && \
sudo apt update && sudo apt install ngrok
Windows
choco install ngrok
설치를 완료했다면, ngrok 계정과 연결 설정을 해주어야 합니다.
ngrok 회원가입을 하고 아래의 링크로 들어가면, 본인만의 토큰값과 함께 계정 연결을 할 수 있는 명령어가 아래와 같이 주어집니다.
계정 연결까지 완료하면 ngrok 을 사용할 모든 준비가 끝났습니다.
ngrok 사용해보기
웹 서버 띄우기
개발하고 있는, 혹은 개발이 완료된 웹 프로젝트가 있다면 그걸 사용해도 좋습니다. 저는 아주 간단한 서비스를 만들어보겠습니다.
Hello, World! 만 적힌 index.html 을 생성해줍니다. 이는 아래의 명령어로 생성 가능합니다.
echo "Hello, World!" >> index.html
이제 이를 로컬에 띄워보겠습니다. 파이썬을 사용하여 로컬에 서버를 올리겠습니다.
python3 -m http.server
이제 로컬호스트 8000 번 포트에 웹 서버가 실행되고 있습니다. 이를 확인해보겠습니다. 새로운 터미널을 열어 curl 명령어로 확인해보겠습니다.
제대로 실행되고 있는 것을 확인했으니 이 서비스에 ngrok 을 사용해볼까요?
ngrok 으로 터널 연결하기
ngrok http 8000
위 명령어로 ngrok 을 해당 서비스에 사용할 수 있습니다. 위 명령어의 결과는 아래 사진과 같습니다.
Forwarding 항목을 확인해보면 정적 도메인이 제 로컬 8000번 포트에서 돌아가고 있는 서비스로 포워딩이 됐다는 것을 확인할 수 있습니다. 주어진 주소로 접속을 해보면..?
워닝 페이지가 뜨고 해당 페이지의 Visit Site 를 클릭하면 아래와 같이 앞서 로컬에서 올린 서버로 접속이 된 것을 확인할 수 있습니다.
마무리
ngrok 은 제공하는 기능들이 아주 많습니다. 아래의 공식 문서에서 확인하실 수 있습니다.
해커톤, 토이 프로젝트 등 크기가 크지 않은 서비스를 개발할 때, 유용하게 사용할 수 있는 서비스인것 같습니다.
댓글
이 글 공유하기
다른 글
-
[Ubuntu] Windows 부팅 디스크 만들기(WoeUSB-ng)
[Ubuntu] Windows 부팅 디스크 만들기(WoeUSB-ng)
2023.09.18 -
[Setting] alias 를 파일로 관리하기
[Setting] alias 를 파일로 관리하기
2023.09.10 -
[Ubuntu] Notion 설치하기
[Ubuntu] Notion 설치하기
2023.09.07 -
[Error] The IP address configured for the host-only network is not within the allowed ranges. Please update the address used to be within the allowed ranges and run the command again.
[Error] The IP address configured for the host-only network is not within the allowed ranges. Please update the address used to be within the allowed ranges and run the command again.
2023.08.30