n8n 자동화 실패기(삽질기)
요즈음 n8n을 이용한 자동화를 배우고 있어서 제일 간단하다고 생각하는 것을 만들기 위해서 ai에게 요청했습니다.
삽질 시작
"n8n으로 매1시간 마다 파이썬 스크립트를 실행하는 워크플로우를 만들어줘" 라고 하니 다음과 같은 대답을 얻었습니다.
개요 : 이 워크플로우는 n8n의 Schedule Trigger와 Execute Command 노드를 사용하여 매 1시간마다 지정된 파이썬 스크립트를 실행합니다.
필요한 노드 1. schedule trigger 2. execute command
설정 단계 1. schedule trigger 노드 설정
Trigger Interval: Every Hour 이하 생략
1번 노드까지는 실행되었지만, Execute Command 노드가 없는 것이 문제였습니다.
그래서 community node 에서 shell 관련 node 를 찾아서 설치하라고 하는데 검색 방법을 잘 몰라서 그것도 실패.
경과
그래서, code node 파이썬 코드를 넣어서 실행하면 안되냐고 물으니, 거기에서 자바스크립트 코드만 실행할 수 있다고 함.
분명히 code node 를 찾아 보면 Code in Python 이라고 되어 있어서 파이썬 코드를 입력할 수 있는 것처럼 되어 있음.
실제로 파이썬 코드를 넣어 보면 실행이 되지는 않았습니다.

그래서 스크립트를 실행할 방법이 없으니, 파이썬을 웹서버로 실행시키고 Http request 로 실행할 수 있다고 해서 파이썬 스크립트를 웹서버로 만듦.
그런데 이번에는 http request node 에 주소를 http://localhost:8000/run 을 입력하니
The service refused the connection - perhaps it is offline
이런 에러가 나면서 접속자체가 되지 않는 것입니다. 이유를 알아보니 n8n이 도커에서 돌아가는데 도커에서 호스트 서버를 접속하려면 localhost가 아니라 host.docker.internal 이라는 특수 한 호스명을 써야 한다고 합니다. 왜냐하면 도커는 가상컴퓨터와 마찬가지이니 localhost는 도커 자신을 가르키기 때문이죠. 도커를 품고 있는 호스트 서버를 접속하기 위해서는 host.docker.internal 라는 특수 dns 를 사용합니다.
그런데, 말입니다. 이 주소를 사용하더라도 스크립트가 실행되지 않고 internal server error 를 내뱉는 것이었습니다.

결말
결국, n8n으로 파이썬 스크립트를 돌리는 작업은 실패하고 삽질만 계속했습니다.
ai도 그냥 cron 으로 하면 되지 않냐고 하는데 당연히 크론잡으로 하면 간단하지요. 그런데 원래 목적인 n8n을 배우기 위해서이기 때문에 그러면 의미가 없잖아요.
한줄요약, n8n은 쉽지 않다!