💡 Node.js와 PM2로 ngrok을 상시 실행하는 방법
ngrok은 로컬 서버를 외부에 노출시킬 수 있도록 해주는 매우 유용한 도구입니다. 하지만 일반적으로 터미널에서 실행하면 창을 닫거나 컴퓨터를 재시작할 경우 ngrok도 꺼지게 됩니다. 이 문제를 해결하기 위해 Node.js의 프로세스 관리자 PM2를 사용하면 ngrok을 백그라운드에서 상시 가동되도록 유지할 수 있습니다.
1. PC가 켜져있는 한 ngrok이 상시 가동되도록 설정
ngrok.exe를 pm2로 관리하면 터미널 종료와 상관없이 계속 실행할 수 있습니다.
📦 준비물
- Node.js 설치: https://nodejs.org/
- npm 설치 시 기본 포함됨
- PM2 설치:
npm install -g pm2
2. PM2에 ngrok 등록 시 발생하는 문제와 해결
❗ 오류: [PM2][ERROR] Script not found
pm2 start ngrok --name ngrok -- http 5678 --domain=<Ngrok URL>
위 명령 실행 시 아래와 같은 에러가 발생할 수 있습니다:
[PM2][ERROR] Script not found: ngrok
🔍 원인 및 해결 방법
- ngrok이 환경 변수(PATH)에 등록되어 있지 않거나, 현재 디렉토리에서 인식이 안 되는 경우
✅ 해결법 1: ngrok 실행 파일이 있는 폴더로 이동 후 실행
cd C:\Users\...\<설치된 폴더>
pm2 start ngrok.exe --name ngrok -- http 5678 --domain=<Ngrok URL>
✅ 해결법 2: ngrok.exe의 절대 경로로 등록 (공백 포함 시 쌍따옴표 필요)
pm2 start "C:\Users\...\ngrok.exe" --name ngrok -- http 5678 --domain=<Ngrok URL>
3. PM2에 등록한 ngrok 프로세스가 errored 상태로 바뀌는 경우
💥 문제 상황
- pm2 status 실행 시 ngrok 프로세스가 errored 상태로 바뀜
│ id │ name │ mode │ ↺ │ status │ cpu │ memory │
├────┼────────────────────┼──────────┼──────┼───────────┼──────────┼──────────┤
│ 0 │ ngrok │ fork │ 15 │ errored │ 0% │ 0b
🛠 해결 절차
1️⃣ 에러 로그 확인
pm2 logs ngrok
2️⃣ 에러 메시지 예시:
0|ngrok | ERROR: ERR_NGROK_108
0|ngrok | ERROR: authentication failed: Your account is limited to 1 simultaneous ngrok agent sessions.
🔍 원인: ngrok 무료 계정은 동시 1개 세션만 허용
✅ 해결 방법:
- 중복 실행 중인 ngrok 종료
## ngrok 확인
tasklist | findstr ngrok.exe
## 개별적으로 삭제시
taskkill /F /PID 2812
taskkill /F /PID 11572
## 한꺼번에
taskkill /F /IM ngrok.exe
- 이후 PM2에서 재시작
pm2 restart ngrok
💡 참고: ERR_NGROK_108 상세 문서
🎯 결론
PM2를 활용하면 ngrok을 시스템 백그라운드에서 안정적으로 실행할 수 있으며, 절대경로 등록, 중복 세션 관리, pm2 logs를 통해 안정적으로 관리가 가능합니다. 이후 재부팅하고나서 자동 실행되도록 설정하려면 작업 스케줄러를 활용하는 것도 고려해볼 수 있습니다. 해당 설정건은 다음 시간에 다뤄보겠습니다.
https://cord-ai.tistory.com/196
💻 컴퓨터 재부팅 시 자동으로 ngrok 실행하기 (PM2 + 작업 스케줄러 활용)
로컬에서 실행 중인 n8n을 외부에서 접근하려면 ngrok을 통해 터널링을 해야 합니다.하지만 매번 재부팅 후 ngrok을 다시 실행해야 하는 번거로움을 겪고 있다면,작업 스케줄러 + PM2를 활용해 자동
cord-ai.tistory.com