사무실에서 NAS를 설치해놓고 외부에서 접속을 하려 하니 접속이 불가능하다. 해당 사무실에 연결된 인터넷이 허브가 아니라 공유기로 되어있었기 때문에 포트포워딩을 해야하는데 관리하시는 분 께서 관리자 계정을 모르셔서...
결국 외부에서 접속하기 위해 터널링 서비스를 이용하기로 했다.
NGROK는 외부에서 접속하지 못 하는 서버나 localhost 개발 애플리케이션에 접속 가능하도록 NGROK 서버를 통해 터널링해준다.
개발자가 현재 개발하는 서비스를 서버에 올리기 전에 외부에 공유할 때 NGROK을 통하면 서버에 올리지 않고, 해당 PC의 특정 포트를 OPEN하지 않고도 서비스의 공유가 가능해진다.
NGROK은 기본적으로 무료로 제공되긴 하나, 제한이 있다. (사진 참조)
기본적인 기능은 모두 제공되나, 한 ID당 서비스를 1개만 올릴 수 있고 제공되는 도메인이 유동적으로 변경된다.
또한 ID가입을 하지 않으면 8시간짜리 세션이 생기기 때문에 하루 종일 켜 놓는 NAS에는 사용이 힘들다.
해당 사이트를 통해서 가입을 진행한다.
가입 후 https://dashboard.ngrok.com/get-started/your-authtoken 에 접속하면 본인 AuthToken을 확인할 수 있다. 체크해두자.
포스팅에서 사용되는 NAS 환경
- Product : DS620 slim (RAM 4+8GB)
- OS : DSM 7.1
패키지센터에서 Docker를 다운받은 뒤, Docker - 레지스트리 - "ngrok" 검색 후 "ngrok/ngrok" 을 설치한다.
이미지는 시놀로지 Docker에서 생성하지 말고, SSH를 접속해서 진행해야한다.
제어판 - 터미널 및 SNMP에서 SSH서비스를 활성화 시켜준다. (포트는 본인 마음.. 나는 5022로 설정해놓고 쓴다)
putty나 맥은 터미널을 통해서 SSH를 접속하면 되고, 나는 Powershell로 접속했다.
- 명령어
$ sudo -i (관리자 권한 획득) # docker images (이미지 확인) # docker run --name={원하는 컨테이너 이름} --net=host -it -e NGROK_AUTHTOKEN={내 토큰} ngrok/ngrok {NETWORK 옵션} {원하는 포트} (도커이미지 생성)
관리자 권한을 얻어서 이미지가 정상적으로 다운로드 됐는지 확인한 뒤 컨테이너를 생성하면된다.
NGROK_AUTHTOKEN은 아까 웹 사이트에서 확인한 내 토큰을 기준으로 입력하면 된다.
Network 옵션은 http, tcp, tls, tunnel 중 선택하면 된다. 웹 페이지가 필요하면 http로 설정하면 된다.
네트워크는 호스트를 그대로 이용하도록 한다.
접속해보면 정상적으로 설정한 웹사이트로 접속되는 것을 확인할 수 있다.