HEROJOON 블로그(히로블)
노코드 자동화 도구 n8n의 Self-Hosted 환경 설치하기 본문
목표
n8n을 로컬 환경에 Self-hosted(직접 구축) 하기
n8n이란
● n8n이란?
N8N은 오픈소스 자동화 플랫폼입니다.
시각적인 워크플로우로 여러 단계의 작업을 지정할 수 있고 이러한 워크플로우 기능으로 코드 없이 노코드로 자동화 할 수 있습니다.
또한 Slack, Google, Open AI등 다양한 서비스들과 쉽게 통합하여 작업 수행이 가능합니다.
API 호출과 코드를 이용한 세부 작업도 가능하여 복잡한 자동화를 맞춤으로 쉽게 구축 가능합니다.
- 공식 웹사이트 URL: https://n8n.io/
n8n.io - a powerful workflow automation tool
n8n is a free and source-available workflow automation tool
n8n.io
● n8n으로 어떤것을 할 수 있을까?
N8N은 반복되는 작업의 업무 자동화를 여러 서비스와 연계하여 통합적으로 구축할 수 있습니다.
고객 데이터를 수집하고 리포트를 작성해주는 일이나 cron과 SMS를 연동하여 마케팅 알림 자동화를 구축할 수도 있습니다.
● 사람들은 n8n을 어떻게 발음하나요?
별거 아니지만 줄여져 있는 서비스는 대중적으로 어떻게 발음되는지 처음엔 생소합니다.
그래서 발음에 대해 정리했습니다.😊
- 네이튼(n8n)이라고도 부르고
- 엔팔엔(n8n)이라고도 부르고
- 엔에잇엔(n8n)이라고도 부릅니다.
n8n을 사용하기 위한 방법
● n8n 사용 환경 종류
- N8N 자체 클라우드 환경 사용 (유료)
- N8N Self-hosted(자체 환경 구축)하여 사용
● n8n Self-hosted(자체 환경 구축) 방법
- 개인 클라우드 플랫폼에 n8n 설치
- AWS, Azure, Google Cloud 등
- 로컬 환경에 n8n 설치
- Docker를 이용한 설치
- NPM을 이용한 설치
n8n Self-hosted 환경
- n8n Self-hosted 구축을 위한 나의 환경
- 설치 위치: 로컬 환경 (Windows 11)
- 설치 방법: Docker를 이용한 설치
해보기 요약
- n8n Self-hosted 셋업하기
- Docker 설치
- n8n용 Docker Volume(볼륨) 생성
- Docker로 n8n 이미지 다운로드 받아 n8n 실행하기
- Docker Desktop으로 n8n 이미지와 컨테이너 확인해보기
- Docker Desktop에서 n8n 컨테이너 종료하기
- n8n Self-hosted 설정 추가하기
- n8n 접속 도메인, 타임존 설정 추가하기
- n8n 작업 폴더 생성하기
- .env, docker-compose.yml 파일 생성하기
- docker-compose.yml파일을 이용하여 n8n 실행하기
- Docker Desktop에서 n8n 접속 정보 확인하기
- 로컬 호스트 파일 수정하기
- n8n 접속 도메인, 타임존 설정 추가하기
해보기
1. n8n Self-hosted 셋업하기
- n8n Docker로 Self-hosted 설치하기 Docs URL: https://docs.n8n.io/hosting/installation/docker/
Docker | n8n Docs
Hosting n8n Installation Docker Installation Docker offers the following advantages: Install n8n in a clean environment. Easier setup for your preferred database. Can avoid issues due to different operating systems, as Docker provides a consistent system.
docs.n8n.io
1-1. Docker 설치
Docker 설치는 아래 포스팅 참고 부탁드립니다.
https://herojoon-dev.tistory.com/254
Windows 11에 Docker Desktop 설치하기_2024.11
목표Windows 11에 Docker Desktop 설치하기Docker 사용해보기 오랜만에 Docker설치하려고 하니 Docker 설치 UI가 바뀌어 2024.11.05 기준 다시 정리해보았습니다.이번 정리에는 Docker 이미지 사용 예제도 함께
herojoon-dev.tistory.com
1-2. n8n용 Docker Volume(볼륨) 생성
Docker Desktop 설치 뒤 Docker 명령어를 이용하여 n8n용 Docker Volume을 생성해줍니다.
- Docker Volume이란? 컨테이너가 삭제되어도 데이터가 유지되도록 호스트에 저장 공간을 제공하는 기능
// docker volume create [생성할 Docker Voulme이름]
// n8n_data라는 이름의 Docker Volume 생성
docker volume create n8n_data

Docker Voulme 생성 후 Docker Desktop의 Volumes 영역을 보시면 볼륨이 생성되어 있는 것을 확인 할 수 있습니다.

1-3. Docker로 n8n 이미지 다운로드 받아 n8n 실행하기
Docker 명령어를 아래와 같이 입력해줍니다.
n8n 이미지를 다운로드하고, 다운로드 받은 n8n 이미지로 Container를 띄워주는 명령어입니다.
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
n8n이 실행된 후 아래와 같이 접속 주소가 출력됩니다.

아래와 같은 화면이 보여집니다.
- n8n 접속 주소: http://localhost:5678

로그인 정보 입력 후 [Next]를 클릭해줍니다.
- Email: user@email.com
- First Name: joon
- Last Name: hero
- Password: Qwer1234



설치가 완료된 것을 확인할 수 있습니다.

1-4. Docker Desktop으로 이미지와 컨테이너 확인해보기
Docker Desktop에서 [Images]를 보시면 n8n 이미지(docker.n8n.io/n8nio/n8n)가 잘 Pull된 것을 확인할 수 있습니다.

Docker Desktop에서 [Containers]를 보시면 n8n 이미지가 실행된 n8n 컨테이너가 잘 실행된 것을 확인할 수 있습니다.

1-5. Docker Desktop에서 n8n 컨테이너 종료하기
Docker Desktop에서 [Containers]에 있는 n8n 컨테이너를 [Actions]의 네모 아이콘을 클릭하여 종료시켜줍니다.

컨테이너가 종료되면 [Containers]에서 해당 컨테이너가 사라집니다.

2. n8n Self-hosted 설정 추가하기
2-1. n8n 접속 도메인, 타임존 설정 추가하기
n8n은 여러 설정 정보를 수정하여 사용 가능하도록 기능을 제공해줍니다.
예를들어 위에서 띄운 n8n은 http://localhost:5678으로 접속됩니다. localhost로 보여지는 것을 내가 원하는 도메인으로 변경하고자 한다면 설정으로 가능합니다.
또한 n8n의 cron작업이나 로깅 시간등을 위해 사용되는 타임존도 변경할 수 있습니다.
이러한 설정정보를 어떻게 지정할 수 있을까요?
docker-compose.yml을 이용하여 설정정보를 정의하며 n8n을 실행시킬 수 있습니다.
- n8n docker-compose.yml URL
- n8n 타임존 Environment URL
2-1-1. n8n 작업 폴더 생성하기
저는 C:\devtool 위치 아래에 n8n이라는 폴더를 생성해주었습니다.
C:\devtool\n8n
2-1-2. .env, docker-compose.yml 파일 생성하기
.env파일을 생성하기 위해 메모장에 아래와 같이 Environment를 입력해줍니다.
# domain name
DOMAIN_NAME=selfhosted.com
# sub domain name
SUBDOMAIN=n8n
# timezone
GENERIC_TIMEZONE=Asia/Seoul

[파일] - [다른 이름으로 저장]을 클릭해줍니다.

아래처럼 입력 후 [저장]을 클릭합니다.
- 파일 이름: .env
- 파일 형식: 모든 파일
- 인코딩: UTF-8

n8n 작업 폴더에 .env파일이 생성됩니다.

.env 파일 생성 끝.
docker-compose.yml파일을 생성하기 위해 메모장에 아래와 같이 내용을 입력해줍니다.
version: "3.7"
services:
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "80:80"
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=80
- N8N_PROTOCOL=http
- NODE_ENV=production
- WEBHOOK_URL=http://${SUBDOMAIN}.${DOMAIN_NAME}
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- N8N_SECURE_COOKIE=false
env_file:
- .env
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
external: true

[파일] - [다른 이름으로 저장]을 클릭해줍니다.

아래처럼 입력 후 [저장]을 클릭합니다.
- 파일 이름: docker-compose.yml
- 파일 형식: 모든 파일
- 인코딩: UTF-8

n8n 작업 폴더에 docker-compose.yml파일이 생성됩니다.

docker-compose.yml 파일 생성 끝.
2-1-3. docker-compose.yml파일을 이용하여 n8n 실행하기
n8n 작업 폴더에서 cmd를 입력하여 명령 프롬프트 창을 열어줍니다.

명령 프롬프트에 docker-compose 실행 명령어를 입력해줍니다.
docker-compose up -d


2-1-4. Docker Desktop에서 n8n 접속 정보 확인하기
Docker Desktop에서 [Containers]를 보면 n8n이라는 이름의 컨테이너가 Status Running으로 잘 띄워진것을 확인할 수 있습니다. n8n 컨테이너를 클릭해줍니다.

n8n 컨테이너 로그에 접속정보를 확인할 수 있습니다.
- n8n 접속 정보: http://n8n.selfhosted.com

그런데 접속정보 접근 시 사이트에 접근할 수 없다고 뜹니다.
그 이유는 로컬 호스트 파일을 수정해주어야 하기 때문입니다.
로컬 호스트 파일은 내 로컬 환경의 ip와 도메인 맵핑 정보를 관리해주는 파일입니다.
기본적으로 127.0.0.1에 localhost라는 이름의 도메인으로 매핑되어 있습니다.
그래서 loclhost가 아닌 http://n8n.selfhosted.com으로 접근 시 접근되지 않습니다.

2-1-4. 로컬 호스트 파일 수정하기
- 로컬 호스트 파일 위치: C:\Windows\System32\drivers\etc
- 로컬 호스트 파일명: hosts
hosts파일을 관리자 권한으로 열어줍니다.
메모장이나 다른 editor 창으로 여시면됩니다.

아래와 같이 입력 후 저장해줍니다.
#는 주석이기 때문에 앞에 #를 붙여주시면 안됩니다.
127.0.0.1 n8n.selfhosted.com

다시 n8n 지정한 도메인으로 접속해줍니다.
로그인 정보는 위에서 가입한 정보를 입력하시면 되며, 만약 아래 화면이 아니라 가입 화면이 나오시면
다시 가입해주시면 됩니다. 로컬 환경 셋업이니 가입정보를 정확하게 입력하지 않으셔도 됩니다.
- n8n 접속 정보: http://n8n.selfhosted.com


끝.
감사합니다.
'기타' 카테고리의 다른 글
요약을 간편하게 해주는 LilysAI 사용해보기 (0) | 2024.11.03 |
---|---|
IntelliJ 터미널에서 명령어가 동작하지 않을 경우 혹은 IntelliJ change powershell to cmd (0) | 2024.02.19 |
IntelliJ 프로젝트 새 창으로 열기 설정 (0) | 2024.02.12 |
[구글 애드센스] 판매 대금 지급의 지연을 방지하고 정확한 금액이 세금으로 원천징수될 수 있도록 가능한 한 빨리 싱가포르 세금 정보를 제공해 주세요. (4) | 2024.01.28 |
마켓플러스로 카페24에 네이버 스마트스토어 상품을 쉽게 옮기기 (2) | 2024.01.21 |