Файл docker-compose для развертывания N8N
Опубликовано:
Рассмотрим простой пример развертывания своего сервера N8N через docker-compose.
Пример файла docker-compose
Создадим каталог для хранения файлов проекта и перейдем в него:
mkdir -p /opt/n8n && cd /opt/n8n
Создаем файл docker-compose:
vi docker-compose.yml
---
services:
n8n-db:
image: postgres:${PG_VER}
hostname: n8n-db
container_name: n8n-db
restart: unless-stopped
environment:
TZ: ${TZONE}
POSTGRES_USER: ${PG_USER}
POSTGRES_PASSWORD: ${PG_PASS}
POSTGRES_DB: ${PG_DBNAME}
volumes:
- ./postgresql/data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${PG_USER} -d ${PG_DBNAME}"]
interval: 5s
timeout: 5s
retries: 5
n8n:
image: n8nio/n8n:${N8N_VER}
container_name: n8n
hostname: n8n
restart: unless-stopped
environment:
TZ: ${TZONE}
GENERIC_TIMEZONE: ${TZONE}
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: n8n-db
DB_POSTGRESDB_PORT: 5432
DB_POSTGRESDB_DATABASE: ${PG_DBNAME}
DB_POSTGRESDB_USER: ${PG_USER}
DB_POSTGRESDB_PASSWORD: ${PG_PASS}
N8N_HOST: ${N8N_URL}
N8N_ENCRYPTION_KEY: ${N8N_SECRET}
N8N_SECURE_COOKIE: "true"
WEBHOOK_URL: https://${N8N_URL}/
volumes:
- ./n8n/data:/home/node/.n8n
depends_on:
n8n-db:
condition: service_healthy
caddy:
image: caddy:${CD_VER}
container_name: caddy
hostname: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./caddy/Caddyfile:/etc/caddy/Caddyfile
- ./caddy/data:/data
environment:
TZ: ${TZONE}
N8N_URL: ${N8N_URL}
healthcheck:
test: ["CMD-SHELL", "curl -fI http://127.0.0.1:2019/metrics"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
Создаем конфигурационный файл для docker compose:
vi .env
PG_VER=16-alpine
PG_USER=n8n
PG_PASS=n8n_password
PG_DBNAME=n8n
TZONE=Europe/Moscow
CD_VER=2.11-alpine
N8N_VER=2.23.1
N8N_URL=n8n.dmosk.ru
* меняем значения на свои:
- PG_VER — версия postgresql. В данном примере берется образ для 16 версии на основе Alpine.
- PG_USER — имя пользователя для подключения к базе данных.
- PG_PASS — пароль для подключения к базе данных.
- PG_DBNAME — имя базы данных.
- TZONE — временная зона.
- CD_VER — версия Caddy. Актуальную версию можно подобрать на Docker Hub.
- N8N_VER — версия N8N. Нужную версию выбираем на Docker Hub.
- N8N_URL — доменное имя, по которому будем подключаться к веб-интерфейсу n8n.
И сгенерируем секретный ключ для n8n:
echo "N8N_SECRET=$(openssl rand -hex 24)" >> .env
Файл docker-compose готов.
Настройка приложения и запуск
Создаем рабочий каталог для веб-сервера caddy:
mkdir caddy
Создаем конфигурационный файл:
vi caddy/Caddyfile
{$N8N_URL} {
reverse_proxy n8n:5678
}
Готовим каталог для данных n8n:
mkdir -p n8n/data
chown -R 1000:1000 n8n
* где 1000 — идентификатор пользователя, под которым работает n8n.
Запускаем контейнеры:
docker-compose up -d
В браузере вводим адрес домена, в нашем примере — https://n8n.dmosk.ru — откроется страница создания первого пользователя. Вводим email, имя и пароль. Адрес электронной почты будет логином для входа.
N8N готов к работе.