n8n AI Starter kit 을 self-hosting 후 cloudflared로 서비스 하기

n8n을 셀프호스팅 해 보고 싶은 분들이 많은 것 같아서,
얼마 전 제가 설치해 본 내용을 공유해 봅니다.

이 쪽 분야의 전문가는 아니기 때문에
따라하시면서,
막히거나 모르시는 부분이 있다면, llm들에게 물어보시길 바래요~
그리고, 아래 글 내용 중 mydomain 단어는 예시입니다. 여러분의 것을 이용하셔야 합니다.

1 참고 자료

  • 아래 유튜브 동영상을 실습없이 일단 쭈욱 한 번 보세요!!,

  • 그리고 나서, 영상의 내용과 아래 내용을 비교(영상의 순서와 제가 작성하는 순서 및 내용이 다른 부분이 있습니다.)해 가면서,
    자신만의 환경을 만들어 가시는 걸 추천합니다.

  • https://www.youtube.com/watch?v=DhuaKAW819s

  • https://github.com/n8n-io/self-hosted-ai-starter-kit

    • n8n 설치는 이걸 이용!!

    • self-hosting 공식 매뉴얼(https://docs.n8n.io/hosting/)에서 추천하는 AI Starter Kit 임!!

    • 아래 나열된 것들을 한꺼번에 docker를 이용해서 서비스 할 수 있게 해 줌

      • n8n

      • Ollama(local llm) --> 무료로 llm과 질의응답 가능. pc 성능만 좋다면 다양한 open source llm 이용 가능

      • Qdrant(Vector DB) --> 문서나 정보를 임베딩 후 저장하여, 유사도 기반의 RAG로 활용할 수 있음

      • PostgreSQL --> n8n 데이터 저장용

2. 목적

  • n8n을 내 PC에 설치하여, 무료로 쾌적하게 사용.

  • n8n을 이용하여 AI 생태계 이해.

3. 환경 및 사전 준비 사항

3.1 PC

  • OS : Mac(silicon)

3.2 도메인 구입

  • 저는 hosting.kr에서 구입 했는데, "가비아" 등 다른 어떤 곳에서 하셔도 상관없습니다.

  • 어디든 회원가입 하시고, 도메인 이름 정하시고, 결제하시면 됩니다.(내 맘에 드는 도메인은 이미 사용중인 경우가 많더라구요)

3.3 Docker Desktop 설치

  • https://www.docker.com/

    • Download Docker Desktop 버튼 클릭 --> OS 별로 다운로드 링크가 나옴

      • Download for Mac Apple Silicon 클릭 --> 다운로드

      • 다운로드 된 파일을 실행하여 Docker Desktop 설치

3.4 homebrew 설치

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

3.4 git 설치

brew install git

4. n8n 설치

여기서는, 위 동영상 내용으로 설치하지 않습니다!!
docker desktop 을 이용해서 설치하지 않고, docker compse 를 이용해서 설치합니다.

https://github.com/n8n-io/self-hosted-ai-starter-kit
이 페이지에 자세한 설치 방법이 나와 있습니다. OS별로, 구성옵션별로 설정하는 게 조금씩 다르게 나와있습니다.
전, 아래 순서로 진행했습니다.

4.1 AI Starter pack 다운로드

  • 작업디렉토리 설정

    • 설치하고자 하는 디렉토리 생성 및 해당 디렉토로 이동 후 아래 명령어 실행

git clone https://github.com/n8n-io/self-hosted-ai-starter-kit.git

4.2 환경 설정

  • 환경설정 파일 복사

cp .env.example .env 
  • .env 파일 내용 수정

POSTGRES_USER=root
POSTGRES_PASSWORD=password
POSTGRES_DB=n8n

N8N_ENCRYPTION_KEY=super-secret-key
N8N_USER_MANAGEMENT_JWT_SECRET=even-more-secret
N8N_DEFAULT_BINARY_DATA_MODE=filesystem

N8N_HOST=[Your_Domain_Name]
N8N_PORT=5678
N8N_PROTOCOL=https
WEBHOOK_URL=https://[Your_Domain_Name]

TZ=Asia/Seoul
GENERIC_TIMEZONE=Asia/Seoul 
  • 일단은 도메인 이름만 변경

  • 기존 내용외에 아래 2줄은 n8n 기본 시간 설정 내용이므로 추가

  • .env 파일 외에 제일 중요한 파일은 docker-compose.yml 파일임

    • 혹시라도, n8n외 ollama나 qdrant 까지 설치하고 싶지 않다면, docker-compose.yml 에서 해당 내용 삭제하면 됨

    • 오타나 들여쓰기 등이 잘못되면 동작을 안할수 있기 때문에 주의깊에 관리해 주어야 함.

4.3 도커로 n8n 실행

  • 아래 명령을 실행하면, 필요한 도커 이미지 들이 다운로드 됩니다. 시간이 조금 소요됩니다.

  • 제 pc에는 gpu가 없기 때문에, ollama를 cpu로 돌리기위해 아래 명령어로 실행했습니다.

  • --profile cpu 는 docker compose up -d 만 해도 되는데, 옵션 중 cpu라는 옵션을 쓰겠다 정도로, 생략 가능합니다.

  • -d 는 백그라운드로 동작해라 정도의 의미입니다. 붙이시는걸 추천합니다.

docker compose --profile cpu up -d

4.4 n8n 실행

  • 브라우저 창에서 http://localhost:5678 입력 후 엔터

  • n8n 로그인 페이지가 뜨면 성공

  • 위 동영상 4분 30초 부터 4분 52초까지 보시고 n8n용 관리자 계정을 만드시면 됩니다.

5. cloudflared 가입 및 설정

  • 도메인으로 서비스하는 PC가 고정 IP라면,
    https 용 인증서를 구입하거나 1년짜리 무료 인증서를 어디선가 발급 받은 후
    로컬 PC에서 https 서비스를 위한 인증서 설정 작업이 필요합니다.

  • 저는 우선은 제 노트북에 설치해서 집 와이파이나, 외부 와이파이에 접속할 때 마다
    IP가 변경되므로, cloudflared 를 이용해서 터널링을 하였습니다.

  • 터널링이란, 쉽게 말하면 제pc와 외부pc 중간네 cloudflared 가 있고,
    제pc와 외부pc 사이의 모든 요청과 응답이 cloudflared를 통해서 이루어진다 정도로 생각하시면 될 듯 합니다.

5.1 cloudflared 가입 및 설정

  • https://www.cloudflare.com/

  • 설정하는 부분은 위 참고 영상의 10분 49초 부터 12분 40초까지 일단 따라하시면 됩니다.

  • 저 같은 경우는, hosting.kr에서 기존에 설정된 내용들 다 삭제하고, 아래와 같이 변경했습니다.

  • DNS 서비스를 hosting.kr에서 cloudflared로 위임하는 작업입니다.

    전화에 한국어 앱의 스크린 샷

5.2 cloudflared 터널 생성 및 인증서 경로 설정

  • 참고 영상의 12분 40초 부터 ~ 14분 08초까지 보시면 됩니다.

  • 따라 하실 때 터널 이름은 자유롭게 지정하셔도 됩니다.

  • 단, 향후 cloudflared를 이용해서 서브도메인으로 n8n 외 다른 서비스 기능들을 제공 하실 계획이 있다면
    터널 이름을 도메인으로 하는게 어떨까 싶습니다. 예를 들어 mydomain.com 이라고 하면 아래처럼 말이죠.
    cloudflared tunnel create mydomain-tunnel

  • 이후 내용에 나오는 터널이름및 도메인 이름은 구입하신 도메인이름과 생성하신 터널이름으로 각각 설정하셔야 합니다.

5.2.1 로그인

# cloudflared login
  • 인증서 생성됨 /Users/자기계정/.cloudflared/xxxxxx.json

5.2.2 cloudflared 환경설정 파일 생성.

  • 아래 경로에 맞게 파일 생성 및 내용 편집

    • /Users/자기계정/.cloudflared/config.yml

cat <<EOF > ~/.cloudflared/config.yml
tunnel: mydomain-tunnel
credentials-file: /Users/자기계정/.cloudflared/xxxxxx.json

ingress:
  - hostname: n8n.mydomain.com
    service: http://localhost:5678
  - service: http_status:404
EOF
  • tunnel에는 위에서 생성한 터널이름으로 설정

  • credentials-file 에는 생성된 인증서 파일 경로 입력

  • ingress 하위의 hostname에는 n8n 이라는 서브도메인을 이용해서 n8n.mydomain.com 과 같은 형식으로 설정하시는 걸 추천

  • 참고) 향후에 예를 들어, 내 pc에 blog 서비스를 9999 포트를 이용해서 제공 한다면, ingress를 늘려주면 됩니다.
    hostname: blog.mydomain.com
    service: http://localhost:9999

5.2.3 cloudflared 터널 연결

cloudflared tunnel route dns mydoamin-tunnel n8n.mydomain.com
  • 참고) 향후에 ingress를 추가하셨다면, 터널 연결도 늘려주어야 합니다.
    cloudflared tunnel route dns mydomain-tunnel blog.mydomain.com

6. n8n 최신 버전으로 업그레이드 및 재실행

  • starter kit을 처음 설치하면 n8n 최신 버전은 아니더라구요.. 그래서, 최신으로 다시 설치해 봅니다.

docker compose --profile cpu down
docker compose --profile cpu pull
docker compose --profile cpu up -d
  • 명령어 설명

    • docker compose --profile cpu down : 실행중인 컨테이너 내리기

    • docker compose --profile cpu pull : docker 최신 이미지 다운로드

    • docker compose --profile cpu up -d : docker 재 실행

7. 테스트

  • 브라우저 창에서 https://n8n.mydomain.com/ 으로 접속 시 n8n 화면이 잘 나오면 성공!!

  • 아, 그리고 n8n은 셀프호스팅 시, 일부 엔터프라이즈 기능(폴더, 사용자 그룹, 권한 제어 등)이 기본적으로 잠겨 있습니다.
    --> 아마, n8n 좌측 하단 메뉴에서 settings/usage 클릭하면 락 푸는 방법을 n8n에서 친절히 알려주어 쉽게 해결 했었던 듯..!!

  • !!중요!!
    PC를 껐다가 다시 켰을 경우, 위 5.2.3의 터널 연결하는 명령어를 다시 실행시켜 주셔야 합니다 !!

    • 이 부분이 귀찮으시면, 자신의 PC환경에 맞게 이 부분도 llm과의 대화로 로 처리해 보세요~

8. 느낀점

개발자였음에도 불구하고,
입코딩으로 후배들에게 위임 했었던 도커작업이나 네트워크 설정 작업들을
직접 하려니 막연한 두려움이 있었지만
막상 해 보니 할만 하네요.

AI Starter Kit으로 n8n을 설치했더니,
벡터DB, 임베딩, RAG 등등 들어서 무슨말이진 모를 AI 생태계의 용어들을 맛 볼 수 있어서 좋았습니다.
다만, 최근에 나온 openai의 gpt-oss:20b 모델을 ollama에 올려서 사용해 보고 싶었는데 ,
gpu가 없어서인지, 제 PC 성능이 낮아서인지 안되더라구요..

암튼 n8n 및 ai와 조금 더 친해진 계기가 되었네요.

18기 모두들 수고하셨습니다~

1
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요