
n8n : Nodemation
https://n8n.io
OpenClaw, Claude Code 로 자동화 프로그램을 만들어 cron 등에 걸어 실행하고 있는데 이 프로그램들 관리가 쉽지 않았습니다. 나도 잊고 에이전트도 잊는(???)
이런 류의 작업들은 n8n 에 몰아두면 좋을 것 같아 Docker 에 설치했습니다.
SQLite 를 써도 충분할 것 같긴 하지만 PostgreSQL 을 붙여 보기로 합니다.
docker-compose.postgres.yml 파일을 생성합니다.
services:
postgres:
image: postgres:16-alpine
container_name: n8n_postgres
restart: unless-stopped
environment:
- POSTGRES_USER=${POSTGRES_USER:-n8n}
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
- POSTGRES_DB=${POSTGRES_DB:-n8n}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-n8n} -d ${POSTGRES_DB:-n8n}"]
interval: 10s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:latest
container_name: n8n
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
ports:
- "5678:5678"
environment:
- N8N_HOST=${N8N_HOST:-localhost}
- N8N_PORT=5678
- N8N_PROTOCOL=${N8N_PROTOCOL:-http}
- WEBHOOK_URL=${WEBHOOK_URL:-http://localhost:5678/}
- GENERIC_TIMEZONE=${TIMEZONE:-Asia/Seoul}
- TZ=${TIMEZONE:-Asia/Seoul}
# DB 설정
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB:-n8n}
- DB_POSTGRESDB_USER=${POSTGRES_USER:-n8n}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD:?POSTGRES_PASSWORD is required}
# 암호화 키 (최초 설정 후 변경 금지)
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY:?N8N_ENCRYPTION_KEY is required}
# 기본 인증 (선택)
- N8N_BASIC_AUTH_ACTIVE=${N8N_BASIC_AUTH_ACTIVE:-false}
- N8N_BASIC_AUTH_USER=${N8N_BASIC_AUTH_USER:-}
- N8N_BASIC_AUTH_PASSWORD=${N8N_BASIC_AUTH_PASSWORD:-}
# <추가> WIFI 존에서 IP로 접속하기 위한 설정 false
- N8N_SECURE_COOKIE=${N8N_SECURE_COOKIE:-false}
volumes:
- n8n_data:/home/node/.n8n
healthcheck:
test: ["CMD", "wget", "--spider", "-q", "http://localhost:5678/healthz"]
interval: 30s
timeout: 10s
retries: 3
volumes:
postgres_data:
driver: local
n8n_data:
driver: local
.env 파일을 만들고 POSTGRES_PASSWORD, N8N_ENCRYPTION_KEY 를 생성해서 넣습니다.
# n8n 접속 설정
N8N_HOST=localhost
N8N_PROTOCOL=http
WEBHOOK_URL=http://localhost:5678/
TIMEZONE=Asia/Seoul
# 기본 인증 (선택 — true로 설정 시 아래 값 입력)
N8N_BASIC_AUTH_ACTIVE=false
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=
# PostgreSQL 버전 사용 시 필수
POSTGRES_USER=n8n
POSTGRES_PASSWORD=xxx
POSTGRES_DB=n8n
# 암호화 키 — 최초 설정 후 절대 변경 금지 (자격증명 복호화 불가)
# 생성 방법: openssl rand -hex 32
N8N_ENCRYPTION_KEY=xxx
도커에 올려주면
docker compose -f docker-compose.postgres.yml --env-file .env up -d

컨테이너가 생성됩니다.
그럼 이제 http://localhost:5678 에 접속해서 계정을 생성 해주고 API 키를 만들어서 OpenClaw 에게 던져줘야 하는데, 생각해보니 OpenClaw 는 다른 서버에서 동작하고 있네요?
그래서 docker-compose 에 N8N_SECURE_COOKIE=${N8N_SECURE_COOKIE:-false} 이 설정을 추가해서 다시 올려줍니다.

이제 공유기 IP로 웹에 잘 붙고
OpenClaw 에게 ClawHub 에서 가장 신뢰할만한 스킬로 설치해달라고 했더니 이 스킬을 설치 했습니다.
https://github.com/openclaw/skills/blob/main/skills/thomasansems/n8n/references/api.md
n8n 접속 URL과 API key 를 생성해서 전달해주니 워크플로우를 잘 만들어냅니다.
참, 폴더 생성 등의 추가적인 기능을 사용하기 위해서는 이메일 인증이 필요합니다.
