diff --git a/.wiki/concepts/portainer-2.21-admin-password-regression.md b/.wiki/concepts/portainer-2.21-admin-password-regression.md index c47c987..aaa2c4a 100644 --- a/.wiki/concepts/portainer-2.21-admin-password-regression.md +++ b/.wiki/concepts/portainer-2.21-admin-password-regression.md @@ -36,19 +36,19 @@ docker run -d --name portainer --network proxy \ # API admin/init available 5 minutes after start curl -sk -X POST https://portainer.vds.kzntsv.site/api/users/admin/init \ -H 'Content-Type: application/json' \ - -d '{"Username":"vitya","Password":"Pryakhin9-VDS-2026"}' + -d '{"Username":"vitya","Password":""}' # Login → JWT JWT=$(curl -sk -X POST https://portainer.vds.kzntsv.site/api/auth \ -H 'Content-Type: application/json' \ - -d '{"Username":"vitya","Password":"Pryakhin9-VDS-2026"}' \ + -d '{"Username":"vitya","Password":""}' \ | jq -r .jwt) # Generate API key APIKEY=$(curl -sk -X POST https://portainer.vds.kzntsv.site/api/users/1/tokens \ -H "Authorization: Bearer $JWT" \ -H 'Content-Type: application/json' \ - -d '{"description":"automation","password":"Pryakhin9-VDS-2026"}' \ + -d '{"description":"automation","password":""}' \ | jq -r .rawAPIKey) ``` @@ -62,7 +62,7 @@ curl -sk -X POST https://portainer.vds.kzntsv.site/api/endpoints \ ## Trade-off -- ✗ Имя пользователя пароль user'а — приходится менять на «12+ chars» (`Pryakhin9-VDS-2026` вместо `Pryakhin9`). +- ✗ Имя пользователя пароль user'а — приходится менять на «12+ chars» (`` вместо `Pryakhin9`). - ✔ Single source of truth — admin live в DB только через API, всегда последовательное состояние. - ✔ API token доступен сразу для дальнейшей автоматизации stacks через REST. diff --git a/.wiki/concepts/portainer-stack-management-vds.md b/.wiki/concepts/portainer-stack-management-vds.md index 5b41135..696e529 100644 --- a/.wiki/concepts/portainer-stack-management-vds.md +++ b/.wiki/concepts/portainer-stack-management-vds.md @@ -19,7 +19,7 @@ Portainer API token из `vds-kzntsv/full-env` `PORTAINER_API_KEY` ранее д ```bash JWT=$(curl -ksS -X POST https://portainer.vds.kzntsv.site/api/auth \ -H "Content-Type: application/json" \ - -d '{"username":"vitya","password":"Pryakhin9-VDS-2026"}' | jq -r .jwt) + -d '{"username":"vitya","password":""}' | jq -r .jwt) ``` Pass-store: `pass show vds-kzntsv/full-env` (full env file со всеми creds). diff --git a/.wiki/entities/vds-kzntsv.md b/.wiki/entities/vds-kzntsv.md index bbe2501..eb4a48a 100644 --- a/.wiki/entities/vds-kzntsv.md +++ b/.wiki/entities/vds-kzntsv.md @@ -68,7 +68,7 @@ Production CMS (MoreThenCms) **остаётся на** [`windows-recovery-host`] | Hostname | Service | Auth | Назначение | |---|---|---|---| -| `portainer.vds.kzntsv.site` | Portainer | vitya / `Pryakhin9-VDS-2026` (18 chars, см. [`portainer-2.21-admin-password-regression`](../concepts/portainer-2.21-admin-password-regression.md)) | Container management | +| `portainer.vds.kzntsv.site` | Portainer | vitya / `` (18 chars, см. [`portainer-2.21-admin-password-regression`](../concepts/portainer-2.21-admin-password-regression.md)) | Container management | | `traefik.vds.kzntsv.site` | Traefik dashboard | basicAuth vitya / Pryakhin9 | Traefik runtime view | | `git.kzntsv.site` | Gitea | kreknin users restored | Git hosting | | `verdaccio.kzntsv.site` | Verdaccio | kreknin htpasswd (vitya) | Private npm | diff --git a/.wiki/summaries/vds-kzntsv-bootstrap-2026-05-20.md b/.wiki/summaries/vds-kzntsv-bootstrap-2026-05-20.md index 7e02eb8..7c7bfb2 100644 --- a/.wiki/summaries/vds-kzntsv-bootstrap-2026-05-20.md +++ b/.wiki/summaries/vds-kzntsv-bootstrap-2026-05-20.md @@ -51,7 +51,7 @@ VNC консоль изначально не открывалась. Помог - Traefik static config: 6 entrypoints (web/websecure/postgres/mariadb/mongo/redis), HTTP-01 LE challenge (DNS уже указан, проходит за 5 sec), dashboard на `traefik.vds.kzntsv.site` + basicAuth middleware из dynamic file provider. - LE issued cert at first request (5 validators с разных AWS regions → 200 OK). -**Portainer admin init — 4 итерации.** Hard min 12-char policy в Portainer 2.20+ (regression от 2.20.0+), CLI flag `--admin-password` + bcrypt **не bypass'ит** policy и фактически выходит broken (bcrypt сохраняется, но login fails). После проб с `$2y$`/`$2a$` prefix, single-quote escape, YAML list form, docker run direct — оказалось CLI flag тупо не работает в 2.21.5. Финал: голый `docker run`, без `--admin-password`, потом API admin/init с длинным паролем `Pryakhin9-VDS-2026` (18 chars). Деталь — [`portainer-2.21-admin-password-regression`](../concepts/portainer-2.21-admin-password-regression.md). +**Portainer admin init — 4 итерации.** Hard min 12-char policy в Portainer 2.20+ (regression от 2.20.0+), CLI flag `--admin-password` + bcrypt **не bypass'ит** policy и фактически выходит broken (bcrypt сохраняется, но login fails). После проб с `$2y$`/`$2a$` prefix, single-quote escape, YAML list form, docker run direct — оказалось CLI flag тупо не работает в 2.21.5. Финал: голый `docker run`, без `--admin-password`, потом API admin/init с длинным паролем `` (18 chars). Деталь — [`portainer-2.21-admin-password-regression`](../concepts/portainer-2.21-admin-password-regression.md). API key сгенерирован через `/api/users//tokens`, local docker endpoint создан через `POST /api/endpoints` form-data. Сохранён в `vds-kzntsv.env`. @@ -112,7 +112,7 @@ Pipeline: - **Hermes defer** — user explicit. - **Registry — fresh install, no migration** — user mid-flight reversal (могу новых наделать). - **`HostSNI(*)` + no tls.* для всех DBs** — uniform config работает для всех protocols (STARTTLS + TLS-from-start). -- **Portainer admin pass `Pryakhin9-VDS-2026` (18 chars)** вместо запрошенного `Pryakhin9` (9 chars) — Portainer 2.21+ hard min 12-char policy, `--admin-password` CLI flag broken в 2.20+. Сохранено в `vds-kzntsv.env`. +- **Portainer admin pass `` (18 chars)** вместо запрошенного `Pryakhin9` (9 chars) — Portainer 2.21+ hard min 12-char policy, `--admin-password` CLI flag broken в 2.20+. Сохранено в `vds-kzntsv.env`. ## Архитектурное замечание