Найти в Дзене
Vseodevops

n8n — установка

Будем ставить n8n сервис для автоматизации обработки данных, публикаций, поиска и обработки новой информации. Самый практичный вариант установки через docker-compose в составе: база данных PostgreSQL, redis, n8n-worker и сам n8n Ставить будем на Ubuntu 22. Подключим репозиторий и поставим docker: echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker version Обратите внимание!
Если у вас установлен Docker версии 20.10.0 или выше, вы можете использовать встроенный плагин docker compose (обратите внимание на пробел вместо дефиса): docker compose version Ссылка на конфигурацию: docker-compose.yml Создадим папку для конфигурации: mkdir n8n
cd n8n
vi docker-compose.yml В docker-compose.yml вставьт

Будем ставить n8n сервис для автоматизации обработки данных, публикаций, поиска и обработки новой информации.

Самый практичный вариант установки через docker-compose в составе: база данных PostgreSQL, redis, n8n-worker и сам n8n

Ставить будем на Ubuntu 22.

Подключим репозиторий и поставим docker:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt update

sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

docker version

Обратите внимание!
Если у вас установлен Docker версии 20.10.0 или выше, вы можете использовать встроенный плагин docker compose (обратите внимание на пробел вместо дефиса):

docker compose version

Ссылка на конфигурацию: docker-compose.yml

Создадим папку для конфигурации:

mkdir n8n
cd n8n
vi docker-compose.yml

В docker-compose.yml вставьте подправленный мой YML, все добавленные строки отметил # комментарий:

volumes:
db_storage:
n8n_storage:
redis_storage:

x-shared: &shared
restart: always
image: docker.n8n.io/n8nio/n8n
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_NON_ROOT_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_NON_ROOT_PASSWORD}
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_HEALTH_CHECK_ACTIVE=true
- N8N_ENCRYPTION_KEY=${ENCRYPTION_KEY}
links:
- postgres
- redis
volumes:
- n8n_storage:/home/node/.n8n
depends_on:
redis:
condition: service_healthy
postgres:
condition: service_healthy

services:
postgres:
image: postgres:16
restart: always
environment:
- POSTGRES_USER
- POSTGRES_PASSWORD
- POSTGRES_DB
- POSTGRES_NON_ROOT_USER
- POSTGRES_NON_ROOT_PASSWORD
volumes:
- db_storage:/var/lib/postgresql/data
- ./init-data.sh:/docker-entrypoint-initdb.d/init-data.sh
healthcheck:
test: ['CMD-SHELL', 'pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}']
interval: 5s
timeout: 5s
retries: 10

redis:
image: redis:6-alpine
restart: always
volumes:
- redis_storage:/data
healthcheck:
test: ['CMD', 'redis-cli', 'ping']
interval: 5s
timeout: 5s
retries: 10

n8n:
<<: *shared
ports:
- 5678:5678
environment: # add my config
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true # for 644 permissio file config
- N8N_SECURE_COOKIE=false # for setup by http

n8n-worker:
<<: *shared
command: worker
depends_on:
- n8n

Добавляем переменные окружения:

vi .env

Добавьте параметры учетных записей:

POSTGRES_USER=your_db_user
POSTGRES_PASSWORD=your_db_password
POSTGRES_DB=your_db_name
POSTGRES_NON_ROOT_USER=your_non_root_user
POSTGRES_NON_ROOT_PASSWORD=your_non_root_password
ENCRYPTION_KEY=your_encryption_key
N8N_BASIC_AUTH_USER=your_username
N8N_BASIC_AUTH_PASSWORD=your_password

Запускаем:

mkdir -p /home/node/.n8n
cmod -R 644 /home/node

docker compose up -d
docker compose logs # читаем ошибки если есть решаем

Далее заходим по http://IP-SERVER-OR-DOMAIN:5678/

Если не запустился читаем лог, правим ошибки, останавливаем, правим и запускаем:

docker compose up down
docker compose up -d
docker compose logs # читаем ошибки если есть решаем

Хочу отметить, что инструмент крутой, можно балансировать нагрузку на ранеры, продуманность флоу высокого уровня.

В следующих статьях разберу простые, востребованные решения.