Для повышения производительности и надежности n8n можно настроить на использование Redis для управления очередями и кэширования. Redis обеспечивает более стабильную работу с большими объемами данных и улучшает производительность выполнения воркфлоу.
Добавьте следующий сервис в ваш docker-compose.yml
:
redis:
image: "redis:latest"
container_name: redis
hostname: redis
restart: unless-stopped
security_opt:
- "no-new-privileges:true"
networks:
- proxy
volumes:
- redis_data:/data
Также необходимо определить том для хранения данных Redis в секции volumes
:
volumes:
n8n_data:
external: true
redis_data:
В сервисе n8n
в docker-compose.yml
добавьте следующие переменные окружения:
environment:
# ...существующие переменные...
- EXECUTIONS_MODE=queue
- QUEUE_BULL_REDIS_HOST=redis
- QUEUE_BULL_REDIS_PORT=6379
- QUEUE_BULL_REDIS_DB=0
- N8N_CACHE_TYPE=redis
- N8N_CACHE_REDIS_HOST=redis
- N8N_CACHE_REDIS_PORT=6379
- N8N_CACHE_REDIS_DB=1
После сохранения docker-compose.yml
выполните команду, чтобы пересоздать контейнеры с новой конфигурацией:
docker-compose up -d
После перезапуска контейнеров выполните docker inspect n8n
и проверьте секцию Config.Env
. Если вы видите переменные EXECUTIONS_MODE=queue
, QUEUE_BULL_REDIS_HOST=redis
и другие, значит, n8n успешно подключился к Redis.
По умолчанию Redis в данной конфигурации работает без пароля и недоступен извне. Это безопасно для внутреннего использования.
Если вам нужен доступ к Redis из других приложений (не из Docker), необходимо:
Для этого измените сервис redis
в docker-compose.yml
:
redis:
image: "redis:latest"
container_name: redis
hostname: redis
restart: unless-stopped
# Устанавливаем пароль. Замените 'ВАШ_ПАРОЛЬ' на надежный пароль.
command: redis-server --requirepass 'ВАШ_ПАРОЛЬ'
security_opt:
- "no-new-privileges:true"
# Публикуем порт для внешнего доступа
ports:
- "6379:6379"
networks:
- proxy
volumes:
- redis_data:/data
И добавьте переменные с паролем в сервис n8n
:
environment:
# ...существующие переменные...
- QUEUE_BULL_REDIS_PASSWORD='ВАШ_ПАРОЛЬ'
- N8N_CACHE_REDIS_PASSWORD='ВАШ_ПАРОЛЬ'
После этого снова выполните docker-compose up -d
для применения изменений.
Для production-среды рекомендуется дополнительно настроить:
redis:
image: "redis:latest"
container_name: redis
hostname: redis
restart: unless-stopped
command: redis-server --maxmemory 256mb --maxmemory-policy allkeys-lru
security_opt:
- "no-new-privileges:true"
networks:
- proxy
volumes:
- redis_data:/data
deploy:
resources:
limits:
memory: 512M
reservations:
memory: 256M
Вы можете добавить Redis Commander для веб-интерфейса управления Redis:
redis-commander:
image: rediscommander/redis-commander:latest
container_name: redis-commander
restart: unless-stopped
environment:
- REDIS_HOSTS=local:redis:6379
ports:
- "8081:8081"
networks:
- proxy
depends_on:
- redis