feat: prepare N8N for update with proper environment variables

- Add N8N_RUNNERS_ENABLED=true (recommended for future versions)
- Add N8N_BLOCK_ENV_ACCESS_IN_NODE=false (preserve current behavior)
- Apply to main n8n instance and all 4 workers
- Create comprehensive container update report
- Document deprecation warnings and update strategy
- Ready for docker pull n8nio/n8n:latest when needed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
SamoilenkoVadym 2025-11-29 20:56:03 +00:00
parent 7375b368d7
commit 3527198784
2 changed files with 277 additions and 18 deletions

View file

@ -0,0 +1,249 @@
# Проверка Обновлений Контейнеров Docker
**Дата:** 29 ноября 2025
**Сервер:** 51.89.231.46
**Статус:** 40+ контейнеров на :latest тегах - требуется обновление
---
## Резюме
На сервере развернуто **40+ контейнеров**, большинство использует `:latest` теги. Это означает, что обновления доступны на Docker Hub и их можно загрузить.
### Приоритизация:
- **СРОЧНО** ⚠️ - N8N (есть deprecation warnings)
- **ВЫСОКИЙ** 🔴 - Prometheus, Grafana, Loki
- **СРЕДНИЙ** 🟡 - Остальные сервисы
- **НИЗКИЙ** 🟢 - Спецификация версий (не требуют обновления)
---
## Детальный Анализ
### 1. N8N 🔴 КРИТИЧНО
**Текущий статус:** n8nio/n8n:latest
**Статус:** ТРЕБУЕТ ВНИМАНИЯ
**Проблемы:**
```
WARNING: N8N_BLOCK_ENV_ACCESS_IN_NODE → будет изменено на true по умолчанию
WARNING: N8N_RUNNERS_ENABLED → будет включено по умолчанию в будущей версии
```
**Что нужно сделать:**
1. Обновить docker-compose.yml для n8n-shared
2. Добавить явные переменные окружения:
```yaml
environment:
- N8N_RUNNERS_ENABLED=true
- N8N_BLOCK_ENV_ACCESS_IN_NODE=false # если используются env variables в Code Node
```
3. Протестировать workflows после обновления
4. Перезагрузить все n8n workers (1-4)
**Место конфига:** `/opt/02-core/n8n-shared/docker-compose.yml`
---
### 2. Grafana Stack 🔴 ВЫСОКИЙ ПРИОРИТЕТ
| Компонент | Текущая версия | Новые обновления | Действие |
|-----------|---|---|---|
| Prometheus | 3.7.3 | ✅ Проверить | `docker pull prom/prometheus:latest` |
| Grafana | :latest | ✅ Проверить | `docker pull grafana/grafana:latest` |
| Loki | :latest | ✅ Проверить | `docker pull grafana/loki:latest` |
| Promtail | :latest | ✅ Проверить | `docker pull grafana/promtail:latest` |
| Alertmanager | :latest | ✅ Проверить | `docker pull prom/alertmanager:latest` |
**Стратегия обновления:**
1. Обновлять по одному компоненту
2. Проверить логи после каждого обновления
3. Убедиться что метрики собираются корректно
4. Проверить дашборды в Grafana
**Место конфига:** `/opt/04-tools/monitoring/docker-compose.yml`
---
### 3. Инфраструктура ✅ АКТУАЛЬНЫ
| Сервис | Версия | Статус | Действие |
|--------|--------|--------|---------|
| traefik | :latest | Актуальна | Проверять регулярно |
| postgres | 17-alpine | Актуальна | Не критично |
| redis | 7-alpine | Актуальна | Не критично |
| rabbitmq | 3.13-management-alpine | Актуальна | Не критично |
| Authentik | 2025.10.2 | Актуальна | Не критично |
| Vault | 1.21 | Актуальна | Не критично |
---
### 4. Основные Сервисы
| Сервис | Текущий тег | Примечание |
|--------|-----------|-----------|
| Odoo | :latest | Может быть обновление |
| Outline | :latest | Может быть обновление |
| Evolution API | :latest | Может быть обновление |
| Vaultwarden | :latest-alpine | Может быть обновление |
| Portainer | :latest | Версия 2.33.4 (относительно свежая) |
| MiroTalk SFU | :latest | Может быть обновление |
---
### 5. Вспомогательные Сервисы
| Сервис | Тег | Примечание |
|--------|-----|-----------|
| pgAdmin | :latest | Может быть обновление |
| cAdvisor | :latest | Может быть обновление |
| imgproxy | :latest | Может быть обновление |
| Kong | :latest | Может быть обновление |
| PostgREST | :latest | Может быть обновление |
| nginx | alpine | Может быть обновление |
| Vector | :latest-alpine | Может быть обновление |
---
### 6. Supabase Stack
Несколько компонентов Supabase с конкретными версиями:
- supabase/edge-runtime:v1.69.6
- supabase/gotrue:v2.180.0 ← GoTrue API (работает)
- supabase/postgres:15.8.1.085
- supabase/postgres-meta:v0.91.6
- supabase/realtime:v2.51.11
- supabase/storage-api:v1.28.0
- supabase/studio:2025.10.01-sha-8460121
- supabase/supavisor:2.7.0
- supabase/logflare:1.22.6
**Статус:** Может быть обновление, но они часто обновляются вместе (компонентность версий)
---
## План Обновления
### Фаза 1: СРОЧНО (этот день)
```bash
# 1. Обновить N8N
cd /opt/02-core/n8n-shared
docker pull n8nio/n8n:latest
# Добавить переменные окружения
# docker-compose down && docker-compose up -d
```
### Фаза 2: Высокий приоритет (неделя)
```bash
# 1. Prometheus
cd /opt/04-tools/monitoring
docker pull prom/prometheus:latest
# 2. Grafana
docker pull grafana/grafana:latest
# 3. Loki
docker pull grafana/loki:latest
```
### Фаза 3: Средний приоритет (месяц)
```bash
# Остальные сервисы по одному с тестированием
```
---
## Команды для Проверки Обновлений
```bash
# Проверить последнюю версию образа
docker pull prom/prometheus:latest
docker inspect prom/prometheus:latest | grep -i digest
# Сравнить с текущей
docker inspect prometheus | grep -i digest
# Если хешы разные - есть обновление!
# Перезагрузить контейнер с новой версией
cd /opt/<path>
docker-compose down
docker pull <image>:latest # явно загрузить
docker-compose up -d
```
---
## Риски и Рекомендации
### Перед обновлением:
1. ✅ Создать backup базы данных (`/mnt/psql-data`)
2. ✅ Проверить логи текущей версии
3. ✅ Прочитать changelog новой версии (особенно breaking changes)
4. ✅ Обновлять по одному контейнеру!
5. ✅ Мониторить логи 30 минут после обновления
### После обновления:
1. ✅ Проверить что сервис запустился
2. ✅ Проверить логи на ошибки
3. ✅ Проверить функциональность (тесты)
4. ✅ Если проблема - откатить на старую версию
### Откат (если что-то сломалось):
```bash
cd /opt/<path>
docker-compose down
docker pull <image>:<old_version> # старая версия
docker-compose up -d
```
---
## Чек-лист Обновлений
- [ ] N8N обновлена, добавлены переменные окружения
- [ ] Prometheus обновлена, логи чистые
- [ ] Grafana обновлена, дашборды работают
- [ ] Loki обновлена, логи собираются
- [ ] Все остальные :latest обновлены по расписанию
- [ ] Нет ошибок в логах после обновлений
- [ ] Мониторинг показывает нормальные метрики
---
## Расписание Регулярных Проверок
```
Еженедельно:
- Проверить логи на deprecation warnings
- Проверить есть ли обновления для critical компонентов
Ежемесячно:
- Обновить основные сервисы (:latest теги)
- Протестировать все функции после обновления
Ежеквартально:
- Security audit всех контейнеров
- Обновление base images (alpine, ubuntu и т.д.)
```
---
## Контактная Информация
**Для обновления сервисов требуется:**
1. SSH доступ на сервер
2. Знание docker-compose команд
3. Возможность откатить в случае проблем
4. Мониторинг логов контейнеров
**Документация:**
- Docker Hub: https://hub.docker.com
- Официальные changelog для каждого сервиса
- CLAUDE.md в репозитории
---
**Отчет составлен:** 29.11.2025 20:55 UTC
**Рекомендация:** Обновить N8N в первую очередь (есть warnings)

View file

@ -17,7 +17,7 @@ services:
N8N_PORT: 5678
N8N_PROTOCOL: https
WEBHOOK_URL: https://n8n.ai-impress.com/
# Database
DB_TYPE: postgresdb
DB_POSTGRESDB_HOST: postgres-main
@ -26,25 +26,27 @@ services:
DB_POSTGRESDB_USER: n8n_user
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
DB_POSTGRESDB_POOL_SIZE: 10
# Queue Mode (Redis)
# Queue Mode (Redis) & Task Runners
QUEUE_BULL_REDIS_HOST: redis-main
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
QUEUE_BULL_REDIS_DB: 2
EXECUTIONS_MODE: queue
N8N_RUNNERS_ENABLED: 'true'
# Workers configuration
QUEUE_HEALTH_CHECK_ACTIVE: 'true'
# Security
N8N_BASIC_AUTH_ACTIVE: 'false'
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_PAYLOAD_SIZE_MAX: 64
N8N_BLOCK_ENV_ACCESS_IN_NODE: 'false'
# Community Packages
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE: 'true'
# Performance
EXECUTIONS_DATA_PRUNE: 'true'
EXECUTIONS_DATA_MAX_AGE: 168
@ -112,19 +114,21 @@ services:
DB_POSTGRESDB_USER: n8n_user
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
DB_POSTGRESDB_POOL_SIZE: 5
# Queue Mode (Redis)
# Queue Mode (Redis) & Task Runners
QUEUE_BULL_REDIS_HOST: redis-main
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
QUEUE_BULL_REDIS_DB: 2
EXECUTIONS_MODE: queue
N8N_RUNNERS_ENABLED: 'true'
# Worker settings
N8N_CONCURRENCY_PRODUCTION_LIMIT: 20
# Security
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_BLOCK_ENV_ACCESS_IN_NODE: 'false'
# Community Packages
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE: 'true'
@ -165,19 +169,21 @@ services:
DB_POSTGRESDB_USER: n8n_user
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
DB_POSTGRESDB_POOL_SIZE: 5
# Queue Mode (Redis)
# Queue Mode (Redis) & Task Runners
QUEUE_BULL_REDIS_HOST: redis-main
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
QUEUE_BULL_REDIS_DB: 2
EXECUTIONS_MODE: queue
N8N_RUNNERS_ENABLED: 'true'
# Worker settings
N8N_CONCURRENCY_PRODUCTION_LIMIT: 20
# Security
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_BLOCK_ENV_ACCESS_IN_NODE: 'false'
# Community Packages
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE: 'true'
@ -218,19 +224,21 @@ services:
DB_POSTGRESDB_USER: n8n_user
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
DB_POSTGRESDB_POOL_SIZE: 5
# Queue Mode (Redis)
# Queue Mode (Redis) & Task Runners
QUEUE_BULL_REDIS_HOST: redis-main
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
QUEUE_BULL_REDIS_DB: 2
EXECUTIONS_MODE: queue
N8N_RUNNERS_ENABLED: 'true'
# Worker settings
N8N_CONCURRENCY_PRODUCTION_LIMIT: 15
# Security
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_BLOCK_ENV_ACCESS_IN_NODE: 'false'
# Community Packages
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE: 'true'
@ -271,19 +279,21 @@ services:
DB_POSTGRESDB_USER: n8n_user
DB_POSTGRESDB_PASSWORD: ${DB_PASSWORD}
DB_POSTGRESDB_POOL_SIZE: 5
# Queue Mode (Redis)
# Queue Mode (Redis) & Task Runners
QUEUE_BULL_REDIS_HOST: redis-main
QUEUE_BULL_REDIS_PORT: 6379
QUEUE_BULL_REDIS_PASSWORD: ${REDIS_PASSWORD}
QUEUE_BULL_REDIS_DB: 2
EXECUTIONS_MODE: queue
N8N_RUNNERS_ENABLED: 'true'
# Worker settings
N8N_CONCURRENCY_PRODUCTION_LIMIT: 15
# Security
N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
N8N_BLOCK_ENV_ACCESS_IN_NODE: 'false'
# Community Packages
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE: 'true'