infra/@nocodb.app/PLATFORM_TOMOGRAPHY_REPORT.md

🔬 Томография платформы NocoDB

Дата анализа: 26 декабря 2025, 12:10 UTC
Анализируемая система: NocoDB 0.265.1 + PostgreSQL 15
Хост: 91.218.142.168


📊 Исполнительное резюме

✅ Работоспособность

⚠️ Критичные проблемы

  1. КРИТИЧНО: Диск заполнен на 84% (25GB из 29GB)
  2. КРИТИЧНО: RAM почти заполнена (1.6GB из 1.9GB), активный swap 2.4GB
  3. КРИТИЧНО: Отсутствует система бэкапов БД
  4. ВНИМАНИЕ: Обнаружены ошибки транзакций в PostgreSQL
  5. ВНИМАНИЕ: Попытки сканирования/взлома с внешних IP

1️⃣ Docker Контейнеры

Основные сервисы NocoDB

Контейнер Статус Health Image Uptime Restarts
nocodb-products Running Healthy nocodb/nocodb:0.265.1 7 hours 0
nocodb-products-db Running Healthy postgres:15-alpine 7 days 0
nocodb-nginx Running - fholzer/nginx-brotli:latest 3 hours 0

Другие контейнеры на сервере

Итого: 10 контейнеров на сервере


2️⃣ Использование ресурсов

CPU

nocodb-products:     0.00%
nocodb-products-db:  0.00%
nocodb-nginx:        0.00%

Статус: ✅ Нормальное

Память (RAM)

Контейнер Использование Лимит %
nocodb-products 46.57 MiB 256 MiB 18.19%
nocodb-products-db 35.13 MiB 256 MiB 13.72%
nocodb-nginx 1.55 MiB 1.92 GiB 0.08%

Система:

Total:      1.9 GB
Used:       1.6 GB (84%)
Free:       77 MB
Swap Used:  2.4 GB из 4.0 GB (60%)

Статус: ⚠️ КРИТИЧНО - система активно использует swap, что замедляет работу

Диск

Система:

Filesystem: /dev/vda1
Size:       29 GB
Used:       25 GB (84%)
Available:  4.7 GB

Docker хранилище:

overlay2:     13 GB   (образы и контейнеры)
volumes:      840 MB  (persistent data)
containers:   110 MB
buildkit:     32 MB

Статус: ⚠️ КРИТИЧНО - диск заполнен на 84%

Сетевой трафик (NocoDB)

Контейнер Входящий Исходящий Диск чтение Диск запись
nocodb-products 319 KB 305 KB 2.96 GB 359 MB
nocodb-products-db 91.5 MB 91.2 MB 35.2 GB 3.25 GB
nocodb-nginx 308 KB 417 KB 51.1 MB 1.23 MB

3️⃣ Сетевая инфраструктура

Docker сеть: nocodbapp_nocodb-network

Driver:  bridge
Subnet:  172.19.0.0/16
Gateway: 172.19.0.1

Контейнеры в сети:
- nocodb-products: 172.19.0.3/16
- nocodb-products-db: 172.19.0.2/16
- nocodb-nginx: 172.19.0.4/16

Статус: ✅ Связность между контейнерами работает

Открытые порты (NocoDB)

Порт Сервис Доступность
5433 PostgreSQL 0.0.0.0 (публичный!)
8443 HTTPS (nginx) 0.0.0.0
8085 HTTP (nginx) 0.0.0.0

Статус: ⚠️ PostgreSQL доступен публично (порт 5433)

Другие открытые порты на сервере

22    - SSH
80    - HTTP (nginx)
443   - HTTPS (nginx)
1080  - microsocks proxy
3000  - docker service
3001  - docker service
3002  - next-server
3306  - MySQL/MariaDB (localhost only)
5000  - python app
5001  - python app
5432  - docker PostgreSQL
5678  - docker service
8080  - node (localhost only)
8086  - nginx
8091  - python app
8092  - python app
8103  - docker service
8898  - python app
8899  - python app
9000  - python app

Статус: ⚠️ Много открытых портов - потенциальная уязвимость


4️⃣ Логи и ошибки

NocoDB (nocodb-products)

Обнаруженные ошибки:

Passport authentication failures:
  - strategy.fail at authenticate.js:314
  - allFailed at authenticate.js:114

Анализ: Ошибки аутентификации passport - возможно устаревшие токены или неправильные credentials

PostgreSQL (nocodb-products-db)

Обнаруженные ошибки:

2025-12-26 07:34:28 UTC [484431] ERROR:
  current transaction is aborted,
  commands ignored until end of transaction block

Анализ: Транзакционные ошибки - возможно из-за неправильной обработки ошибок в приложении

Статус: ⚠️ Требуется мониторинг

Nginx (nocodb-nginx)

Последняя активность:
- Health checks каждые 5 минут ✅
- API requests (python-requests) ✅
- Сканирование безопасности с IP 3.132.23.201:
- cypex.ai scanner
- SSH probes
- SSL handshake attempts

Статус: ⚠️ Атакуется сканерами


5️⃣ Volumes и хранилище

Docker Volumes (NocoDB)

Volume Размер Назначение
nocodb-products_postgres_data 195 MB База данных PostgreSQL
nocodb-products_nocodb_data 8 KB NocoDB metadata
nocodbapp_postgres_data 50 MB Старая копия (не используется)

Статус: ✅ Volumes работают нормально

Статические файлы

Расположение: /opt/claude-workspace/infra/@nocodb.app/static/
Размер: 424 KB
Содержит:
  - index.html, 404.html, 200.html
  - _nuxt/ (CSS, JS)
  - favicon.ico, icon.png
  - Сжатые версии (.br, .gz)

Статус: ✅ Статика на месте


6️⃣ PostgreSQL

Версия

PostgreSQL 15.15 on x86_64-pc-linux-musl
Alpine Linux, GCC 14.2.0, 64-bit

Размер базы данных

Всего: 91 MB

Схемы и таблицы

Схема Таблиц Назначение
pt7k98pv0fwi1el 104 Основной проект (PIM, OZON, CRM)
public 80 Системные таблицы NocoDB
pro_seller1 14 Старый проект продавца
pjfkmtrufnrousk 10 Лидер Авто (грузовики)
pro1_admin 10 Админ панель (почти пустая)
pkxgq45k5mwsdwh 6 CRM с клиентами
erp 4 НОВАЯ СХЕМА (не было в прошлом анализе)
fulfillment 3 Неудачный импорт (16.12.2025)

Итого: 231 таблица в 8 схемах

Статус: ✅ База работает, но обнаружена новая схема ERP

Учетные данные

User:     nocodb
Password: NocoDB2025Secure (хранится в docker-compose.yml)
Database: nocodb

Статус: ⚠️ Пароли в открытом виде в конфигурации


7️⃣ Безопасность

Учетные данные (в docker-compose.yml)

POSTGRES_USER: nocodb
POSTGRES_PASSWORD: NocoDB2025Secure
NC_AUTH_JWT_SECRET: NocoDB-JWT-Secret-2025-Products

Проблемы:
- ❌ Пароли в открытом виде
- ❌ Нет использования .env файлов
- ❌ JWT secret статичный

Открытые порты на 0.0.0.0

NocoDB:
- 5433 - PostgreSQL ⚠️ НЕ ДОЛЖЕН БЫТЬ ПУБЛИЧНЫМ!
- 8443 - HTTPS ✅
- 8085 - HTTP ✅

Другие сервисы:
- Более 20 открытых портов
- Много Python сервисов
- Несколько PostgreSQL/MySQL портов

Атаки и сканирование

Обнаружено с IP 3.132.23.201:

- cypex.ai security scanner
- SSH connection attempts
- SSL handshake probes
- Multiple GET requests

Статус: ⚠️ КРИТИЧНО - сервер под постоянным сканированием

Рекомендации по безопасности

  1. Немедленно: Закрыть PostgreSQL порт 5433 от внешнего доступа
  2. Использовать .env файлы для хранения секретов
  3. Настроить firewall (ufw/iptables)
  4. Включить fail2ban для защиты от bruteforce
  5. Ротация паролей и JWT secrets
  6. Настроить rate limiting в nginx

8️⃣ Бэкапы и восстановление

Текущее состояние

❌ НЕТ автоматических бэкапов БД
❌ НЕТ скриптов резервного копирования
❌ НЕТ документации по восстановлению
✅ ЕСТЬ monitoring script (nocodb-monitor.sh)

Критичность

КРИТИЧНО: При сбое диска (84% заполненности) или повреждении данных - полная потеря всех данных!

Риски:
- 231 таблица, 91 MB данных
- 8 проектов/схем
- CRM с клиентами
- Заказы, продукты, интеграции

Рекомендации

Немедленно создать:

  1. Ежедневный pg_dump:
docker exec nocodb-products-db pg_dump -U nocodb nocodb > backup_$(date +%Y%m%d).sql
  1. Недельные volume snapshots:
docker run --rm -v nocodb-products_postgres_data:/data \
  -v /backup:/backup alpine tar czf /backup/postgres_$(date +%Y%m%d).tar.gz /data
  1. Месячные архивы с удалением на удаленный сервер

  2. Тестирование восстановления раз в месяц


9️⃣ Мониторинг

Существующий мониторинг

Файл: /opt/claude-workspace/infra/@nocodb.app/nocodb-monitor.sh

Функции:
- Проверка health status контейнеров
- Проверка доступности API (/api/v1/health)
- Автоматический перезапуск при сбое
- Логирование: /var/log/nocodb-monitor.log

Расписание: Каждые 5 минут (cron)

Статус: ✅ Работает

Что не мониторится


🔟 Конфигурационные файлы

Расположение

/opt/claude-workspace/infra/@nocodb.app/
├── docker-compose.yml          - Основная конфигурация
├── nginx-http2.conf            - Nginx конфиг (SPA routing)
├── nocodb-monitor.sh           - Скрипт мониторинга
├── NOCODB_SETTINGS.md          - Документация настроек
└── static/                     - Статические файлы Nuxt.js

Docker Compose конфигурация

Сервисы:
- db (PostgreSQL 15)
- nocodb (NocoDB 0.265.1)
- nginx (Reverse proxy с Brotli)

Настройки:
- Memory limits: 256MB на контейнер (db, nocodb)
- Restart policy: unless-stopped
- Health checks: Настроены ✅
- Networks: bridge network ✅


📈 Производительность

Текущая производительность

API Response Time:

/api/v1/health: ~200ms (нормально)

Database:
- Размер: 91 MB (небольшой)
- Активных подключений: мало
- Транзакционные ошибки: есть

Узкие места

  1. Swap usage (2.4GB) - замедляет все операции
  2. 84% диска - может вызвать аварийную остановку
  3. Много контейнеров на одном сервере

Рекомендации

  1. Увеличить RAM с 2GB до минимум 4GB
  2. Очистить диск:
    - docker system prune -a (удалит неиспользуемые образы)
    - Удалить старые логи
    - Архивировать и удалить старые данные
  3. Переместить некоторые сервисы на другой сервер

🎯 Критичные действия (НЕОБХОДИМО СДЕЛАТЬ)

Немедленно (сегодня)

  1. Закрыть PostgreSQL порт 5433 от внешнего доступа
    ```bash
    # В docker-compose.yml изменить:
    ports:

  2. Очистить диск (освободить минимум 10GB)
    bash docker system prune -a -f docker volume prune -f

  3. Создать первый бэкап БД
    bash docker exec nocodb-products-db pg_dump -U nocodb nocodb | \ gzip > /backup/nocodb_$(date +%Y%m%d_%H%M%S).sql.gz

В течение недели

  1. Настроить автоматические бэкапы (cron ежедневно)
  2. Настроить firewall (ufw)
  3. Переместить secrets в .env файлы
  4. Расширить мониторинг (disk, memory, errors)

В течение месяца

  1. Upgrade RAM до 4GB минимум
  2. Настроить fail2ban
  3. Документировать disaster recovery план
  4. Провести тест восстановления из бэкапа

📊 Оценка состояния платформы

Общая оценка: 6/10

Категория Оценка Комментарий
Работоспособность 9/10 Все работает, uptime хороший
Производительность 5/10 Swap usage высокий, диск заполнен
Безопасность 3/10 PostgreSQL публичный, много открытых портов
Надежность 2/10 НЕТ бэкапов! Критично!
Мониторинг 6/10 Есть базовый, нет метрик
Документация 8/10 Хорошо документировано

Вывод

Платформа работает, но находится в критичном состоянии из-за:
1. Отсутствия бэкапов
2. Заполненности диска (84%)
3. Проблем с безопасностью (публичный PostgreSQL)
4. Высокого использования swap

Требуются срочные действия для предотвращения потери данных и улучшения безопасности.


📝 Заключение

Томография показала, что платформа NocoDB функционально работает, но имеет серьезные проблемы в области:
- Безопасности (публичный доступ к БД, открытые порты)
- Надежности (отсутствие бэкапов)
- Ресурсов (заполненность диска и памяти)

Критичность: ВЫСОКАЯ
Рекомендация: Немедленно выполнить действия из раздела "Критичные действия"


Отчет подготовлен: Claude Code
Формат: Markdown
Версия: 1.0