n8n을 pm2로 실행하면 Webhook URL이 localhost로 설정되어 텔레그램 봇과 같은 외부 서비스에서 제대로 인식하지 못하는 문제가 발생합니다. 이는 n8n이 필요한 환경 변수를 제대로 인식하지 못해 발생하는 현상입니다.
pm2로 n8n을 실행할 때는 일반적으로 다음과 같은 명령어를 사용합니다:
pm2 start n8n
이 경우 두 가지 문제가 발생할 수 있습니다:
.env
파일이 위치한 디렉토리와 다를 수 있음pm2의 ecosystem 파일을 사용하면 작업 디렉토리와 환경 변수를 명시적으로 설정할 수 있습니다.
먼저 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"
}
}]
};
생성한 ecosystem 파일을 사용하여 n8n을 시작합니다:
pm2 start ~/n8n/ecosystem.config.js
n8n 웹 인터페이스에 접속하여 텔레그램 트리거 노드를 확인하면 Webhook URL이 localhost
대신 설정한 도메인으로 표시되는 것을 확인할 수 있습니다.
# 현재 실행 중인 앱 목록 확인
pm2 list
# 로그 확인
pm2 logs n8n
# n8n 재시작
pm2 restart n8n
# 시스템 재부팅 시 자동 시작 설정
pm2 startup
pm2 save
실제 서비스 환경에서는 다음 사항을 고려하세요:
pm2 ecosystem 파일을 사용하면 n8n의 Webhook URL 문제를 효과적으로 해결할 수 있습니다. 이 방법은 단순히 환경 변수 설정 문제뿐만 아니라, n8n 애플리케이션의 전반적인 관리와 유지보수를 더욱 편리하게 만들어 줍니다.
이제 텔레그램 봇과 같은 외부 서비스와 n8n을 문제없이 연동하여 다양한 자동화 워크플로우를 구축할 수 있습니다!
이 글이 도움이 되었다면 댓글로 알려주세요. 추가 질문이나 피드백이 있으시면 언제든지 남겨주세요.