# Итоги: боевое развёртывание в контейнерах (порт 18000) План: `docs/plan-production-deploy.md`. Предшествовал тестовый запуск `docs/summary-real-data-run.md`. ## Параметры развёртывания - **Адрес:** `http://192.168.5.9:18000` (порт опубликован на всех интерфейсах хоста, доступ открыт для всех в доверенном контуре, TLS нет; риск 5 принят). Файрвол на хосте входящий трафик не фильтрует (`INPUT ACCEPT`). - **Токен:** `RIPE_API_TOKEN` (64 hex-символа, сгенерирован) записан в `/opt/lvraid/claude/ripe_cidr_collector/.env` (права 600, файл в `.gitignore`); там же `API_PORT=18000` и `TZ=Europe/Moscow` (часовой пояс хоста: расписания считаются по московскому времени). Смена токена: изменить `.env` и выполнить `docker compose up -d`. - **Контейнеры:** проект Compose по умолчанию (`ripe_cidr_collector`), сервисы `api` и `collector`, образ `ripe-cidr-collector`, том `ripe_cidr_collector_ripe_data`, перезапуск `unless-stopped` (Docker на хосте включён при загрузке). - **Данные:** в том скопированы копии реальных `config.json` (6 ASN: 62014, 62041, 59930, 44907, 211157, 11917; 3 FQDN), `data.json`, `fqdn_data.json`; исходные файлы проекта не менялись (контрольные суммы совпали). - **Расписание:** ASN `*/15 * * * *`, FQDN `0 3 * * *`, копия базы `30 4 * * *` (по умолчанию), копии на том же томе (`/data/backups`, 7 штук), отдельно не выносятся (риск 10 принят). ## Результаты проверки | Проверка | Итог | |---|---| | Сервисы | `api` и `collector` `healthy`, порт `0.0.0.0:18000`, часовой пояс контейнеров MSK. | | Миграция | Схема версии 3, 24 префикса и 4 значения FQDN (28 строк) без потерь, оригиналы в томе переименованы, журнал пуст. | | Первый сбор (`POST /collect`, реальные RIPEstat и DNS) | 6 ASN из 6 успешно, 3 FQDN из 3 успешно; `+18` префиксов и `+3` строки IP; сбоев нет. | | Состояние источников | `/sources`: у всех источников 0 сбоев; AS11917 отвечает без префиксов (`addresses: 0`, успех), как и в данных февраля. | | Diff | С момента миграции 19 добавлений, 0 удалений; все старые значения подтверждены RIPE. AS62014 теперь анонсирует и прежние префиксы, и их более специфичные части (`91.108.16.0/23`, `91.108.18.0/23`, `91.108.56.0/24`, `91.108.57.0/24`): для потребителей есть смысл использовать `aggregate=true`. | | Доступ извне | По адресу хоста: `/health` 200, `/addresses` 45 значений; запись без токена и с неверным токеном - 401. | | Штатное расписание | Плановый запуск ASN в 11:45:00: 6 из 6, `+0/-0`, ошибок нет; следующий 12:00. | | Логи | Ошибок и трейсбеков нет. | ## Что наблюдать - **Завтра 03:00:** первый плановый сбор FQDN; **04:30:** первая плановая копия базы (`/health` -> `jobs.backup`, каталог `/data/backups`). - `GET /health` (`status`, `sources.*.failing`) и `GET /sources`; порог сбоев `source_failure_threshold` = 3. - `google.com` (адрес из старого файла, в конфигурации его нет) истечёт по TTL через 90 дней. - Размер базы и журнала (после миграции: десятки КБ). ## Замечания - Токен хранится открытым текстом в `.env` на хосте и передаётся по HTTP (доверенный контур, риск 5); один общий токен без ротации и аудита (риск 6). - Копии на том же томе не защищают от потери тома (риск 10). - Управление: `docker compose ps`, `docker compose logs -f collector`, `docker compose down` (данные остаются в томе), `docker compose up -d`; обновление после изменений кода: `docker compose build && docker compose up -d`.