diff --git a/CONTAINER-UPDATES-CHECK-20251129.md b/CONTAINER-UPDATES-CHECK-20251129.md new file mode 100644 index 0000000..d8f0681 --- /dev/null +++ b/CONTAINER-UPDATES-CHECK-20251129.md @@ -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/ +docker-compose down +docker pull :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/ +docker-compose down +docker pull : # старая версия +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) + diff --git a/opt/02-core/n8n-shared/docker-compose.yml b/opt/02-core/n8n-shared/docker-compose.yml index 3831939..95ebba8 100644 --- a/opt/02-core/n8n-shared/docker-compose.yml +++ b/opt/02-core/n8n-shared/docker-compose.yml @@ -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'