Будем ставить 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 # читаем ошибки если есть решаем
Добавить комментарий