n8n에서 Webhook URL 문제 해결하기: pm2로 실행 시 localhost 대신 실제 도메인 사용하기

오준석·2025년 4월 12일
1

코딩삽질방지

목록 보기
56/57

문제 상황

n8n을 pm2로 실행하면 Webhook URL이 localhost로 설정되어 텔레그램 봇과 같은 외부 서비스에서 제대로 인식하지 못하는 문제가 발생합니다. 이는 n8n이 필요한 환경 변수를 제대로 인식하지 못해 발생하는 현상입니다.

원인 파악

pm2로 n8n을 실행할 때는 일반적으로 다음과 같은 명령어를 사용합니다:

pm2 start n8n

이 경우 두 가지 문제가 발생할 수 있습니다:

  1. pm2가 n8n을 시작하는 작업 디렉토리.env 파일이 위치한 디렉토리와 다를 수 있음
  2. pm2가 환경 변수를 n8n에 제대로 전달하지 않을 수 있음

해결 방법: pm2 ecosystem 파일 사용하기

pm2의 ecosystem 파일을 사용하면 작업 디렉토리와 환경 변수를 명시적으로 설정할 수 있습니다.

1단계: ecosystem.config.js 파일 생성하기

먼저 n8n 관련 파일을 관리할 디렉토리를 만듭니다. 저는 홈 디렉토리 아래 n8n 디렉토리를 만들었습니다:

mkdir -p ~/n8n
cd ~/n8n

이제 이 디렉토리에 ecosystem.config.js 파일을 생성합니다:

nano ecosystem.config.js

파일에 다음 내용을 입력합니다:

module.exports = {
  apps: [{
    name: "n8n",
    env: {
      WEBHOOK_URL: "https://your-domain.com",  // 실제 도메인으로 변경하세요
      N8N_HOST: "your-domain.com",  // 실제 도메인으로 변경하세요
      N8N_PROTOCOL: "https"
    }
  }]
};

2단계: pm2로 n8n 시작하기

생성한 ecosystem 파일을 사용하여 n8n을 시작합니다:

pm2 start ~/n8n/ecosystem.config.js

3단계: 변경사항 확인하기

n8n 웹 인터페이스에 접속하여 텔레그램 트리거 노드를 확인하면 Webhook URL이 localhost 대신 설정한 도메인으로 표시되는 것을 확인할 수 있습니다.

주요 포인트 설명

ecosystem.config.js의 중요 옵션

  • name: pm2에서 표시될 애플리케이션 이름
  • script: 실행할 명령어 (여기서는 'n8n')
  • cwd: 작업 디렉토리 경로 (.env 파일이 있는 위치)
  • env: 환경 변수 설정

왜 이 방법이 효과적인가?

  1. 명시적 환경 설정: .env 파일 인식 문제를 우회하여 직접 환경 변수를 설정합니다
  2. 작업 디렉토리 지정: cwd 옵션으로 작업 디렉토리를 명확히 지정합니다
  3. 유지보수 용이성: 설정을 코드로 관리하여 버전 관리 및 배포가 쉬워집니다

추가 팁

pm2 관련 유용한 명령어

# 현재 실행 중인 앱 목록 확인
pm2 list

# 로그 확인
pm2 logs n8n

# n8n 재시작
pm2 restart n8n

# 시스템 재부팅 시 자동 시작 설정
pm2 startup
pm2 save

보안 고려사항

실제 서비스 환경에서는 다음 사항을 고려하세요:

  1. 민감한 정보(API 토큰, 비밀번호 등)는 환경 변수로 관리하되, ecosystem 파일에 직접 하드코딩하지 않습니다
  2. SSL 인증서를 적용하여 HTTPS 통신을 활성화합니다
  3. 적절한 방화벽 설정으로 필요한 포트만 외부에 노출시킵니다

결론

pm2 ecosystem 파일을 사용하면 n8n의 Webhook URL 문제를 효과적으로 해결할 수 있습니다. 이 방법은 단순히 환경 변수 설정 문제뿐만 아니라, n8n 애플리케이션의 전반적인 관리와 유지보수를 더욱 편리하게 만들어 줍니다.

이제 텔레그램 봇과 같은 외부 서비스와 n8n을 문제없이 연동하여 다양한 자동화 워크플로우를 구축할 수 있습니다!


이 글이 도움이 되었다면 댓글로 알려주세요. 추가 질문이나 피드백이 있으시면 언제든지 남겨주세요.

profile
교육하고 책 쓰는 개발자

0개의 댓글