From 7ebab0a79da4aa6aefeeab2f3e635f47df43fbd6 Mon Sep 17 00:00:00 2001 From: vitya Date: Sun, 14 Jun 2026 10:49:13 +0300 Subject: [PATCH] docs(wiki): add S3-access lookup block for client apps (books-vds MinIO) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Запрос snolla (raw-stream content-api) потребовал MinIO endpoint+креды; ответ был выводим из вики, но не собран одним куском. Добавлен раздел «S3 access для клиентских приложений» в minio-imgproxy-on-vds.md: endpoint (https://minio.kzntsv.site / сырой :9000 / inter minio:9000), root accessKey + pass-ссылка на secret, форма ключа, ssl/region/pathStyle. Следующий такой вопрос — grep по вики, без SSH на сервер. Co-Authored-By: Claude Opus 4.8 (1M context) --- .wiki/concepts/minio-imgproxy-on-vds.md | 21 +++++++++++++++++++++ .wiki/log.md | 1 + 2 files changed, 22 insertions(+) diff --git a/.wiki/concepts/minio-imgproxy-on-vds.md b/.wiki/concepts/minio-imgproxy-on-vds.md index 43e5e43..91f5fe0 100644 --- a/.wiki/concepts/minio-imgproxy-on-vds.md +++ b/.wiki/concepts/minio-imgproxy-on-vds.md @@ -9,6 +9,27 @@ related: [[vds-kzntsv]], [[recovery-architecture-snapshot]], [[mssql-on-vds]], [ > ⚠ **Stale для живого pipeline (2026-06-08).** `imgproxy.kzntsv.site` (hardcoded в `MoreThenCms.Modules.Imgproxy.dll`) теперь смотрит на **[[../entities/books-vds]]** (стек 29 imgproxy + стек 30 minio, bucket'ы `pilorama98`, `galleries`, …), а windows-recovery-host декоммишнен. Этот VDS-kzntsv стек — standby/неиспользуемый для CMS. Option C ниже («остаётся на windows-host») историчен. Миграция галерей и рецепт smoke — [[galleries-storage-class-local-not-s3]]. +## S3 access для клиентских приложений (content-api, raw-stream, прямой getObject) + +**Это раздел-lookup — отвечать на «дай MinIO endpoint/креды» отсюда, без SSH на сервер.** + +Живой MinIO с бакетами CMS — на **[[../entities/books-vds]]** (`89.253.255.133`), legacy-инстанс `minio/minio:RELEASE.2020-07-13` (миграция as-is, без ротации — поэтому ключ совпадает с историческим windows-host). + +| Параметр | Значение | +|---|---| +| Endpoint (внешний, TLS) | `https://minio.kzntsv.site` (traefik → `minio:9000`, LE cert, port 443) | +| Endpoint (сырой host-порт) | `http://89.253.255.133:9000` (тот же бэкенд, ssl:false) | +| Endpoint (inter-container на books-vds) | `http://minio:9000` (сеть `proxy`) — так ходит imgproxy | +| accessKeyId | `AKIAJ2YJP72W6ZHCRE6Q` (= `MINIO_ACCESS_KEY`, root, read+write all) | +| secretAccessKey | в `pass minio-vds/full-env` (`MINIO_ROOT_PASSWORD`) | +| region / pathStyle / ssl | `local` / `true` / **`true` для https-хостнейма** (false для сырого `:9000`) | + +**Форма ключа (подтверждена тем, что imgproxy отдаёт 200):** `bucket=`, `key=/`, backslash→slash. owner из MSSQL приходит UPPERCASE → лоуэркейсить. Бакеты: `assets` (`/`), `galleries` (`/.`), `pilorama98` (`products//...`). + +⚠️ В snolla dev `default.json` endpoint `212.24.37.82:9000` + ключ `AV1QWDHDUQIPO6ABJOM0` — **устарели** (windows-host, декоммишен). Менять и endpoint, и креды на books-vds-значения выше. + +> Прецедент: inbox-запрос snolla 2026-06-14 (raw-stream content-api) закрыт этим блоком. + Запущен 2026-05-22 как часть `minio-imgproxy-vds-migration`. Заодно **upgrade MinIO** `RELEASE.2020-07-13` (5 лет, CVE-куча) → `RELEASE.2025-09-07`. ## Architecture diff --git a/.wiki/log.md b/.wiki/log.md index b8731ce..43cad9f 100644 --- a/.wiki/log.md +++ b/.wiki/log.md @@ -2,6 +2,7 @@ Append-only log of wiki operations (ingests, promotions, lints, migrations). +## [2026-06-14] update | concepts/minio-imgproxy-on-vds.md +раздел «S3 access для клиентских приложений» (lookup: endpoint `https://minio.kzntsv.site` / сырой `89.253.255.133:9000` / inter `http://minio:9000`, root accessKey `AKIAJ...` + secret в `pass minio-vds/full-env`, форма ключа, ssl/region/pathStyle). Закрывает класс-вопрос «дай MinIO endpoint+креды» БЕЗ SSH. Прецедент: inbox snolla 2026-06-14 (raw-stream content-api), ответ отправлен. ## [2026-06-11] ingest | verdaccio-restore-packument-desync — postmortem: disaster-restore вернул тарболлы но древний/пустой packument → publish свежей версии EEXISTS 409. Fix: снять только коллизирующий целевой .tgz (бэкап first), republish; НЕ rm -rf каталог (убьёт locally-published историю). Применено к @snollajs/{data,mailer,numbering,content-api}. ## [2026-06-11] ingest | verdaccio-token-lifecycle — restart trap (ephemeral secret → 401), max_users:-1 + pnpm 409 постмортем, JWT config fix, yarn classic vs berry token refresh recipe. ## [2026-06-11] ingest | yarn-npm-minimal-age-gate — Yarn ≥4.16 client-side supply-chain gate: версии <24ч → YN0016 «quarantined». Независим от auth (gate #2 после 401). default 1d, читается глобально (per-scope не работает), fix npmMinimalAgeGate:0 / YARN_NPM_MINIMAL_AGE_GATE=0. Диагностировано с pilonuxt; опровергнута первичная гипотеза «серверный карантин verdaccio».