docker-compose로 n8n설치
docker-compose로 n8n설치
Docker Compose를 활용해 n8n을 실행하는 방법
1. Docker 및 Docker Compose 설치
먼저 Docker와 Docker Compose를 설치합니다. Ubuntu에서는 다음 명령어로 설치할 수 있습니다:
sudo apt update
sudo apt install docker.io docker-compose
설치 확인:
docker --version
docker-compose --version
2. 선택 사항: Non-root 사용자 권한 설정
Docker 명령어를 sudo
없이 실행하려면:
sudo usermod -aG docker $USER
exec sg docker newgrp
3. .env
파일 생성
프로젝트 디렉토리를 만들고 .env
파일을 생성합니다:
mkdir n8n-compose
cd n8n-compose
nano .env
.env
파일 내용 예시:
# 도메인 설정
DOMAIN_NAME=example.com
SUBDOMAIN=n8n
# SSL 인증서 발급용 이메일
SSL_EMAIL=your-email@example.com
# n8n 시간대 설정 (예: Asia/Seoul, UTC 등)
GENERIC_TIMEZONE=Asia/Seoul
.env
파일은 환경 변수를 관리하는 데 중요한 역할을 합니다. 이 파일을 사용하면 Docker Compose 설정에서 직접 값을 하드코딩하지 않고도 환경 변수를 쉽게 관리할 수 있습니다. 주요 이점은 다음과 같습니다:
- 설정 분리: 민감한 정보를 Docker Compose 파일과 분리하여 보안을 강화합니다.
- 유연성: 개발, 테스트, 프로덕션 환경에 따라 다른
.env
파일을 사용할 수 있습니다. - 버전 관리:
.env
파일을.gitignore
에 추가하여 민감한 정보가 저장소에 포함되지 않도록 할 수 있습니다. - 재사용성: 여러 서비스나 프로젝트에서 동일한 환경 변수를 쉽게 재사용할 수 있습니다.
.env
파일은 Docker Compose 환경 변수를 정의하는 데 사용됩니다. Docker Compose는 이 파일을 읽어 환경 변수를 설정하고, 이를 기반으로 컨테이너를 실행합니다. .env
파일은 보안상의 이유로 중요한 정보(예: 데이터베이스 비밀번호, API 키 등)를 코드 내에 직접 포함시키지 않고 관리하는 데 유용합니다.
Docker Compose는 기본적으로 docker-compose.yml
파일과 같은 디렉토리에서 .env
파일을 찾습니다. 즉, docker-compose.yml
파일과 .env
파일이 같은 폴더에 위치해야 Docker Compose가 .env
파일을 자동으로 인식합니다.
4. docker-compose.yml
파일 생성
docker-compose.yml
파일을 생성하고 필요한 설정을 추가합니다.
services:
traefik:
image: "traefik"
restart: always
command:
- "--api=true"
- "--api.insecure=true"
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.web.http.redirections.entryPoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--entrypoints.websecure.address=:443"
- "--certificatesresolvers.mytlschallenge.acme.tlschallenge=true"
- "--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}"
- "--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- traefik_data:/letsencrypt
- /var/run/docker.sock:/var/run/docker.sock:ro
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
labels:
- traefik.enable=true
- traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
- traefik.http.routers.n8n.tls=true
- traefik.http.routers.n8n.entrypoints=web,websecure
- traefik.http.routers.n8n.tls.certresolver=mytlschallenge
- traefik.http.middlewares.n8n.headers.SSLRedirect=true
- traefik.http.middlewares.n8n.headers.STSSeconds=315360000
- traefik.http.middlewares.n8n.headers.browserXSSFilter=true
- traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
- traefik.http.middlewares.n8n.headers.forceSTSHeader=true
- traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
- traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
- traefik.http.middlewares.n8n.headers.STSPreload=true
- traefik.http.routers.n8n.middlewares=n8n@docker
environment:
- N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
- N8N_PORT=5678
- N8N_PROTOCOL=https
- NODE_ENV=production
- WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
- GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
volumes:
- n8n_data:/home/node/.n8n
- ./local-files:/files
volumes:
traefik_data:
external: true
n8n_data:
external: true
외부 볼륨을 사용하기 때문에 docker volume create
명령어로 docker volume을 생성해야 합니다. docker-compose 내의 주요 정보는 .env
를 통해서 설정되고 https://n8n.example.com
이 접근 URL입니다.
5. Docker Compose 실행
컨테이너 시작:
docker-compose up -d
컨테이너 중지:
docker-compose down
7. 완료
이제 localhost:5678
으로 n8n에 접근할 수 있습니다.
참고자료 - https://docs.n8n.io/hosting/installation/server-setups/docker-compose/
카테고리 다른 글
Date | Title | Author |
---|---|---|
May 24, 2025 | GCP에 postgres 설치하고 방화벽 추가하기 | |
May 19, 2025 | GCP 콘솔에서 디스크 크기 변경하기 | |
May 17, 2025 | Alpha Vantage API로 주식 정보 가져오기 | |
May 15, 2025 | Google OAuth로 n8n Credential 설정하기 | |
May 3, 2025 | n8n의 Merge 노드 | |
May 3, 2025 | n8n에서 Discord 메시지를 수신하는 자동화 봇 |