Docker 설치
n8n v2.29n8n은 대부분의 셀프 호스팅 요구 사항에 Docker 사용을 권장합니다. Docker Compose를 사용하여 Docker에서 n8n을 실행할 수도 있습니다. 이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요. 아래 동영상 가이드를 따라 진행할 수도 있습니다.
n8n은 대부분의 셀프 호스팅 요구 사항에 Docker 사용을 권장합니다. Docker는 깔끔하고 격리된 환경을 제공하며, 운영체제 및 도구 간 호환성 문제를 방지하고, 데이터베이스와 환경 관리를 더 간단하게 만들어줍니다.
Docker Compose를 사용하여 Docker에서 n8n을 실행할 수도 있습니다. 다양한 아키텍처에 대한 Docker Compose 구성은 n8n-hosting 리포지터리에서 찾을 수 있습니다.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
아래 동영상 가이드를 따라 진행할 수도 있습니다.
사전 요구 사항#
진행하기 전에 Docker를 설치하세요.
- Docker Desktop은 Mac, Windows, Linux용으로 제공됩니다. Docker Desktop에는 Docker Engine과 Docker Compose가 포함되어 있습니다.
- Docker Engine과 Docker Compose는 Linux용 별도 패키지로도 제공됩니다. 그래픽 환경이 없는 Linux 머신을 사용하거나 Docker Desktop UI를 원하지 않는 경우 이를 사용하세요.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
n8n 시작하기#
터미널에서 다음 명령을 실행하고, 자리 표시자를 사용자의 타임존으로 바꾸세요.
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="" \
-e TZ="" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
이 명령은 영구 데이터를 저장할 볼륨을 생성하고, 필요한 n8n 이미지를 다운로드한 후, 다음 설정으로 컨테이너를 시작합니다.
- 호스트에서 포트
5678을 매핑하고 노출합니다. - 컨테이너의 타임존을 설정합니다.
TZ환경 변수는date와 같은 스크립트 및 명령이 반환하는 값을 제어하기 위해 시스템 타임존을 설정합니다.GENERIC_TIMEZONE환경 변수는 Schedule Trigger node와 같은 일정 기반 노드에 올바른 타임존을 설정합니다.
- n8n 설정 파일에 안전한 파일 권한을 강제 적용합니다.
- n8n에서 태스크를 실행하는 권장 방식인 태스크 러너를 활성화합니다.
n8n_data볼륨을/home/node/.n8n디렉터리에 마운트하여 컨테이너 재시작 시에도 데이터를 유지합니다.
실행이 완료되면 다음 주소를 열어 n8n에 접속할 수 있습니다. http://localhost:5678
PostgreSQL과 함께 사용하기#
기본적으로 n8n은 자격 증명1, 과거 실행 내역, 워크플로를 저장하기 위해 SQLite를 사용합니다. n8n은 아래에 설명된 대로 환경 변수를 사용하여 구성할 수 있는 PostgreSQL도 지원합니다.
.n8n 디렉터리를 계속 유지하는 것을 권장합니다
PostgreSQL을 사용할 때 n8n은 SQLite 데이터베이스 파일을 위해 .n8n 디렉터리를 사용할 필요가 없습니다. 하지만 이 디렉터리에는 암호화 키, 인스턴스 로그, 소스 컨트롤 기능 자산과 같은 다른 중요한 데이터도 들어 있습니다. 이러한 요구 사항 중 일부는 우회할 수 있지만(예: N8N_ENCRYPTION_KEY 환경 변수를 설정하는 방식), 잠재적인 문제를 피하기 위해 이 디렉터리에 영구 볼륨을 계속 매핑하는 것이 가장 좋습니다.
PostgreSQL과 함께 n8n을 사용하려면 다음 명령을 실행하고, 자리 표시자(예: 와 같이 꺾쇠괄호로 표시된 부분)를 실제 값으로 바꾸세요.
docker volume create n8n_data
docker run -it --rm \
--name n8n \
-p 5678:5678 \
-e GENERIC_TIMEZONE="" \
-e TZ="" \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-e N8N_RUNNERS_ENABLED=true \
-e DB_TYPE=postgresdb \
-e DB_POSTGRESDB_DATABASE= \
-e DB_POSTGRESDB_HOST= \
-e DB_POSTGRESDB_PORT= \
-e DB_POSTGRESDB_USER= \
-e DB_POSTGRESDB_SCHEMA= \
-e DB_POSTGRESDB_PASSWORD= \
-v n8n_data:/home/node/.n8n \
docker.n8n.io/n8nio/n8n
PostgreSQL용 전체 docker-compose 파일은 n8n hosting 리포지터리에서 찾을 수 있습니다.
업데이트#
n8n을 업데이트하려면 Docker Desktop에서 Images 탭으로 이동하여 컨텍스트 메뉴에서 Pull을 선택해 최신 n8n 이미지를 다운로드하세요.

명령줄을 사용하여 최신 버전 또는 특정 버전을 가져올 수도 있습니다.
# Pull latest (stable) version
docker pull docker.n8n.io/n8nio/n8n
# Pull specific version
docker pull docker.n8n.io/n8nio/n8n:1.81.0
# Pull next (unstable) version
docker pull docker.n8n.io/n8nio/n8n:next
업데이트된 이미지를 가져온 후, n8n 컨테이너를 중지했다가 다시 시작하세요. 명령줄을 사용할 수도 있습니다. 아래 명령에서 <container_id>를 첫 번째 명령에서 확인한 컨테이너 ID로 바꾸세요.
# Find your container ID
docker ps -a
# Stop the container with the `<container_id>`
docker stop <container_id>
# Remove the container with the `<container_id>`
docker rm <container_id>
# Start the container
docker run --name=<container_name> [options] -d docker.n8n.io/n8nio/n8n
Docker Compose 업데이트#
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
전체 스택#
n8n과 cloudflared를 함께 컨테이너로 실행합니다. 터널 URL이 시작 시 출력되며 모든 것이 자동으로 연결됩니다.
pnpm stack --tunnel
서비스만 실행#
pnpm dev 또는 pnpm start로 n8n을 로컬에서 실행하는 것을 선호한다면, cloudflared를 독립 서비스로 시작할 수 있습니다.
# Terminal 1: Start the cloudflared tunnel service
pnpm --filter n8n-containers services --services cloudflared
# Terminal 2: Start n8n locally
pnpm dev
services 명령은 다음을 수행합니다.
host.docker.internal:5678(로컬 n8n)을 가리키는 cloudflared를 시작합니다.- cloudflared의 metrics 엔드포인트에서 공개 터널 URL을 가져옵니다.
WEBHOOK_URL과N8N_PROXY_HOPS=1이 포함된.env파일을packages/cli/bin/.env에 작성합니다.pnpm dev와pnpm start는 dotenv를 통해 해당.env를 자동으로 읽어들입니다.
작업이 끝나면 정리하세요.
pnpm --filter n8n-containers services:clean
다음 단계#
- Docker 이미지의 README 파일에서 Docker 설정에 대한 자세한 정보를 확인하세요.
이 섹션의 상세 내용은 n8n 공식 문서를 참조하세요.
Footnotes
-
n8n에서 자격 증명은 특정 앱과 서비스에 연결하기 위한 인증 정보를 저장합니다. 인증 정보(사용자 이름과 비밀번호, API 키, OAuth 시크릿 등)로 자격 증명을 생성한 후에는 관련 앱 노드를 사용하여 해당 서비스와 상호작용할 수 있습니다. ↩