컴퓨터/n8n

n8n 셀프호스팅시 버전업 하기

풍경소리^^ 2025. 9. 27. 14:57

(거기서 n8n start를 어떻게 실행하는지 확인하면 더 정확히 맞춰드릴 수 있어요.)

나의 말:

Windows PowerShell Copyright (C) Microsoft Corporation.
All rights reserved.
새로운 기능 및 개선 사항에 대 한 최신 PowerShell을 설치 하세요!
PS C:\WINDOWS\system32> npm install -g n8n@latest >> npm : 이 시스템에서 스크립트를 실행할 수 없으므로
C:\Program Files\nodejs\npm.ps1 파일을 로드할 수 없습니다.
자세한 내용은 about_Execution_Policies(https://go.microsoft.com/fwlink/?LinkID=135170)를 참조하십시오.
위치 줄:1
문자:1 + npm install -g n8n@latest + ~~~ + CategoryInfo :
보안 오류: (:) [],
PSSecurityException + FullyQualifiedErrorId : UnauthorizedAccess

ChatGPT의 말:

좋습니다 👍
지금 오류 메시지를 보면 PowerShell 실행 정책(Execution Policy) 때문에 npm.ps1 스크립트를 실행하지 못하고 있는 상황이에요.


해결 방법 2가지

✅ 방법 1: PowerShell 실행 정책 완화

PowerShell에서 관리자 권한으로 실행 후 아래 명령 실행:

 
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned

묻는 창이 뜨면 Y 입력 → Enter.
이렇게 하면 npm 같은 전역 명령어 실행이 허용됩니다.

그 다음 다시 시도:

 
npm install -g n8n@latest

✅ 방법 2: CMD(명령 프롬프트)에서 실행

PowerShell이 아니라 CMD 창을 열고 (관리자 권한으로 실행 추천) 아래 명령 실행:

 
npm install -g n8n@latest

CMD는 ExecutionPolicy 제약이 없어서 보통 바로 됩니다.


🔍 확인

업데이트 후 버전 체크:

 
n8n --version

👉 혹시 PowerShell 정책을 바꾸는 게 부담된다면, 그냥 CMD에서 실행하는 쪽을 추천드려요.
원하시면 제가 start_n8n.bat 안에 업데이트 과정까지 넣어서 자동화하는 방법도 알려드릴까요?

나의 말:

1.112.6 나왔는데 나는 1.113.1 버전 설치하고 싶어 베타버전이야

ChatGPT의 말:

좋습니다 👍 이미 1.112.6까지 업데이트 하셨군요.
말씀하신 1.113.1은 정식 릴리즈가 아니라 베타(pre-release) 버전이에요. npm 기본 latest 태그에는 정식 버전만 올라와서, 따로 명시해야 합니다.


🚀 베타 버전 설치 방법

CMD(또는 PowerShell 실행 정책 풀린 상태)에서 버전 직접 지정:

 
npm install -g n8n@1.113.1

설치 확인:

 
n8n --version

⚠️ 주의사항

  • 베타 버전은 안정성이 완전히 검증되지 않았습니다.
  • DB 마이그레이션이 있을 수 있으니 반드시 DB 백업 후 설치하세요. (.n8n/database.sqlite 또는 PostgreSQL 덤프 등)
  • 만약 문제가 생기면 이전 버전으로 되돌릴 수 있습니다:
  •  
    npm install -g n8n@1.112.6

n8n_run_file.bat

@echo off
setlocal enabledelayedexpansion

REM === 1단계: ngrok 실행 ===
echo [1단계] ngrok 실행 시작...
start "ngrok" cmd /k "ngrok http 5678"

REM ngrok이 준비될 때까지 기다리기 (20초)
echo ngrok 초기화 중... 20초 대기
timeout /t 20 /nobreak >nul

REM === 2단계: n8n 실행 ===
echo [2단계] n8n 실행 시작...
cd /d "%~dp0"
start "n8n" cmd /k call start_n8n.bat

echo.
echo [완료] ngrok과 n8n이 실행 중입니다.
echo ngrok 창과 n8n 창을 확인하세요.
timeout /t 3 /nobreak >nul
start_n8n.bat 코드 
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

echo [n8n 시작] ngrok URL을 가져오는 중...

REM PowerShell로 직접 ngrok API 호출 (더 안정적)
for /f "delims=" %%A in ('powershell -NoProfile -Command "try { $r = Invoke-RestMethod -Uri 'http://127.0.0.1:4040/api/tunnels' -TimeoutSec 3; if ($r.tunnels.Count -gt 0) { $r.tunnels[0].public_url } else { 'ERROR' } } catch { 'ERROR' }"') do (
    set NGROK_URL=%%A
)

REM 혹시 모르니 파이썬 버전도 시도
if "!NGROK_URL!"=="ERROR" (
    echo PowerShell 실패, Python으로 재시도...
    for /f "delims=" %%A in ('python get_ngrok_url.py 2^>nul') do (
        set NGROK_URL=%%A
    )
)

REM 그래도 실패하면 수동 입력
if "!NGROK_URL!"=="ERROR" (
    echo.
    echo ngrok URL을 자동으로 가져올 수 없습니다.
    echo ngrok 창을 확인하고 수동으로 입력하세요.
    echo 예: https://1234abc.ngrok-free.app
    echo.
    set /p NGROK_URL="ngrok URL 입력: "
)

if "!NGROK_URL!"=="" (
    echo URL이 입력되지 않았습니다.
    pause
    exit /b 1
)

echo.
echo ✓ WEBHOOK_URL: !NGROK_URL!
set WEBHOOK_URL=!NGROK_URL!

REM Microsoft Edge로 열기
echo 브라우저에서 n8n을 열고 있습니다...
timeout /t 2 /nobreak >nul
start microsoft-edge:!WEBHOOK_URL!

REM n8n 시작
echo.
echo [n8n 실행 시작]
echo.

npx n8n@1.113.1

pause
```

## 이렇게 실행해보세요:

1. **배치 파일 실행:**
```
   n8n_run_file.bat
```

2. **ngrok 창이 떠서 이렇게 보이는지 확인:**
```
   Forwarding: https://xxx.ngrok-free.app → http://localhost:5678
 

ChatGPT의 말:

오 👍 start_n8n.bat 확인했습니다.
구조가 이렇게 되어 있네요:

  1. get_ngrok_url.py로 ngrok 주소 받아오기 → WEBHOOK_URL 환경 변수 세팅
  2. Edge로 자동 열기
  3. 마지막에 npx n8n으로 n8n 실행

🔎 문제 포인트

  • npx n8n 은 현재 설치된 프로젝트 로컬 버전을 실행합니다.
  • 그런데 방금 npm install -g n8n@1.113.1 로 전역(Global) 설치를 했잖아요?
  • 그래서 여전히 npx가 예전 버전을 불러올 수 있습니다.

🚀 해결 방법 2가지

✅ 방법 1: 전역 설치된 n8n 실행

npx n8n 대신 그냥 전역 실행 파일을 쓰면 됩니다:

 
echo n8n을 시작합니다... n8n

→ 이렇게 하면 npm -g로 설치한 1.113.1이 실행돼요.


✅ 방법 2: 특정 버전 지정해서 실행

혹시 일부러 npx로 실행하고 싶으시다면, 버전을 명시해주면 됩니다:

 
echo n8n을 시작합니다... npx n8n@1.113.1

🔍 확인

업데이트된 배치 파일로 실행 후, 터미널에 찍히는 로그 제일 첫 줄쯤에 n8n ready on ... version: 1.113.1 이런 식으로 나와야 합니다.

get_ngrok_url.py

import requests
import time
import sys
import subprocess
import json

def get_ngrok_url():
    """ngrok URL 가져오기 (API 우선, 실패시 subprocess 사용)"""
    
    # 방법 1: REST API 시도 (권장)
    for attempt in range(30):
        try:
            response = requests.get("http://127.0.0.1:4040/api/tunnels", timeout=2)
            if response.status_code == 200:
                tunnels = response.json().get("tunnels", [])
                if tunnels:
                    for tunnel in tunnels:
                        if tunnel.get("proto") == "http":
                            url = tunnel.get("public_url")
                            if url:
                                print(url)
                                return 0
                    
                    # http 없으면 첫 번째 사용
                    url = tunnels[0].get("public_url")
                    if url:
                        print(url)
                        return 0
        except:
            pass
        
        time.sleep(1)
    
    # 모두 실패
    print("ERROR")
    return 1

if __name__ == "__main__":
    sys.exit(get_ngrok_url())

'컴퓨터 > n8n' 카테고리의 다른 글

n8n 셀프호스팅 최종  (0) 2025.12.02
mcp excel  (0) 2025.07.20
n8n version upgrade  (0) 2025.07.15
n8n postman  (0) 2025.07.15
n8n 셀프호스팅 구글시트 인증  (0) 2025.06.28