May 12, 2025

[Home-K8S] #2 n8n 구성

[Home-K8S] #2  n8n 구성

n8n이 뭐야?

요즘 ChatGPT를 많이 사용하고 있지요. ChatGPT와 대화에서 그치지 않고 ChatGPT가 직접 작업을 진행하였으면 하는 바람으로 많은 기업들이 LLM이 직접 작업을 하는 AI Agent를 개발하려고 하고 있습니다.

n8n은 오픈소스 워크플로우 자동화 플랫폼으로, 다양한 앱과 서비스를 연결하여 자동화 흐름을 만들 수 있습니다. 그 앱 중에 LLM와 연결하고, Tool을 연결한 AI Agent를 직접 만들어 사용할 수 있다는 것이 n8n이 최근에 관심을 받는 이유이지요.

400개 이상의 서비스 연동을 지원하며, 코딩 없이도 드래그 앤 드롭으로 복잡한 업무 프로세스를 자동화할 수 있습니다. 데이터 통합, 알림 시스템, 반복 작업 자동화, AI 기능 활용 등에 사용되며, JavaScript나 Python 코드를 추가할 수 있어 고급 사용자에게도 유연성을 제공합니다.

1.n8n 구성

n8n의 기본 데이터 경로는 /home/node/.n8n 입니다. (물론 sqlite 기준입니다.)
해당 경로에 pvc를 연결해주고 환경변수를 설정해 주면 됩니다. ㄷ

Host와 WEBHOOK_URL은 n8n에서 사용하기 때문에 설정을 해주셔야 합니다.

container Image(n8nio/n8n:latest): https://hub.docker.com/r/n8nio/n8n

      containers:
      - name: n8n
        image: n8nio/n8n:latest
        ports:
        - containerPort: 5678
        env:
        - name: GENERIC_TIMEZONE              # TimeZone 설정
          value: "Asia/Seoul"
        - name: N8N_HOST                      # Host 설정
          value: "n8n.kr"
        - name: WEBHOOK_URL                   # n8n이 받을 webhook url
          value: "https://n8n.kr/"
        - name: N8N_PORT
          value: "5678"
        - name: N8N_PROTOCOL                  # 이 값도 본인에 맞게 설정
          value: "https"
        - name: VUE_APP_URL_BASE_API
          value: "n8n.kr"
        - name: VUE_APP_PATH
          value: "/"
        - name: N8N_PROXY_HOPS                 # ingress를 이용해 Porxy할 시
          value: "2"
        - name: DB_TYPE                        # 다른 거 쓰셔도 돼용
          value: "sqlite"
        - name: N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS
          value: "true"
        - name: N8N_USER_MANAGEMENT_DISABLED   # 이거 안통해요. 
          value: "false"
        - name: N8N_USER_MANAGEMENT_SKIP_INSTALLATION # 이것도
          value: "true"
        - name: N8N_SESSION_COOKIE_SECURE
          value: "true"
        - name: N8N_SESSION_COOKIE_SAME_SITE
          value: "Lax"
        - name: N8N_ENCRYPTION_KEY              # 없으면 랜덤 생성
          valueFrom:
            secretKeyRef:
              name: n8n-secrets
              key: N8N_ENCRYPTION_KEY
        volumeMounts:
        - name: data
          mountPath: /home/node/.n8n
      volumes:
      - name: data
        persistentVolumeClaim:
          claimName: n8n-data-pvc

환경변수가 좀 많지만 하나하나 작성하시면 작성 못할 건 없습니다.
이제 n8n을 접속하시면 나오는 관리자 페이지에서 관리자 계정을 만드시면 됩니다.

아니면 kubectl 을 이용해서 n8n의 관리자 계정을 만드실 수도 있습니다.

kubectl exec -it -n n8n n8n-56b597c8d5-brgt3 – n8n user:create --email [email protected] --firstName User --lastName Admin --password admin1234! --role global:owner

2.n8n Community

구성한 n8n은 Community 버전입니다. 커스텀 변수, SSO 미지원, 워크플로우 협업 기능 등 많은 기능이 제한됩니다.
이 중에서 SSO 미지원과 워크플로우 협업 미지원 등으로 단 둘이라도 같이 사용할 수가 없습니다만, 계정을 공유하는 방법은 있습니다.

말 그대로 n8n의 관리자 계정 자체를 공유해도 되지만, 실제 이메일/비밀번호를 공유하기는 싫고, 공유할 수 있는 정보를 따로 만들어서 내가 기억하고 있는 것도 귀찮고, 그렇다고 로그인 과정을 없애고 모든 사람이 들어갈 수 있게 하는 것도 좋지 않아 보입니다.

그래서 nginx에서 인증을 하고 관리자의 이메일을 n8n에 넘겨 로그인을 하는 과정이 있습니다. 저는 Authelia를 이용해서 해당 프로세스를 구성했습니다.

다음 포스팅에서 Authelia를 구성하는 방법을 적고, 그 이후에 n8n을 헤더로 인증하는 방법을 작성하겠습니다.


n8n #1 n8n email, hooks 자동 로그인
n8n을 Nginx와 연동해 자동 로그인(Single Sign-On) 환경을 구축하는 방법을 상세히 안내합니다. 이메일 기반 인증, EXTERNAL_HOOK 활용, Authelia 연동, 실전 환경 변수 및 모듈 설치 팁까지 셀프 호스팅 n8n 자동 로그인 실전 가이드.

Comments