Clone-adapted from .wiki/concepts/portainer-stack-management-vds.md § Migration script. Diffs from VDS-infra version: - PORTAINER_URL = portainer.kzntsv.site - Auth via X-API-Key (PAT works, no JWT fallback needed) - DIR prefix /usr/docker/<stack> (not /opt/stacks/<stack>) - Down step via `docker rm -f` by compose-project label (bypasses docker-compose v1 ContainerConfig bug entirely; no compose binary on path required) - Refuses traefik/portainer migration (management plane) Idempotent: delete-then-create against existing stack by name on endpoint 1. Re-runs are safe. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
54 lines
4.7 KiB
Markdown
54 lines
4.7 KiB
Markdown
---
|
||
_last_updated_: 2026-05-25T11:15:00+03:00
|
||
session_id: 2026-05-25-books-vds-stacks-to-portainer
|
||
---
|
||
|
||
# Next session handoff
|
||
|
||
## Recent commits
|
||
|
||
- `tasks(books-vds-stacks-to-portainer): Phase 0 probe complete, +imgproxy scope` (`bfb942cd`) — Phase 0 done, scope expanded 5→6 stacks.
|
||
- `tasks(NEXT_SESSION): refresh handoff after this session's commits` (`3769e836`) — prior session handoff.
|
||
- `tasks: add ⚪ books-vds-stacks-to-portainer` (`439da3ce`)
|
||
- `backup(books-vds): daily 06:00 MSK pipeline to kreknin live 🟢` (`fe41ee44`)
|
||
|
||
## Open треки
|
||
|
||
| Трек | Готовность | Entry-point |
|
||
|---|---|---|
|
||
| `books-vds-stacks-to-portainer` 🔴 | **Phase 0 done, Phase 1 next** — write adapter script `scripts/books-vds-portainer-migrate.sh` | `.tasks/books-vds-stacks-to-portainer.md` |
|
||
| `stateful-split-volume-copy` ⚪ | not started; playbook fits real books VDS (89.253.255.133) | `.tasks/stateful-split-volume-copy.md` |
|
||
| `iis-migration-to-ruvds` 🟡 | soak (kupimknigi + emspb DNS flipped 2026-05-24, 22 pending) | `.tasks/iis-migration-to-ruvds.md` |
|
||
| `infra-inventory` ⚪ | ready, не начат — books VDS должен попасть в admin-detailed runbook | `.tasks/infra-inventory.md` |
|
||
| `books-bookva-user-whitelist-gathering` ⚪ | ready, long-lead gathering | `.tasks/books-bookva-user-whitelist-gathering.md` |
|
||
| `books-vds-bookva-bootstrap` 🔵 | blocked on tenant-split Phase 4 | `.tasks/books-vds-bookva-bootstrap.md` |
|
||
| `books-dns-cutover-bookva` 🔵 | blocked on books-vds-bookva-bootstrap | `.tasks/books-dns-cutover-bookva.md` |
|
||
|
||
## Mid-task capture
|
||
|
||
**left mid-task:** `books-vds-stacks-to-portainer` (Phase 1 entry)
|
||
|
||
**where_stopped:** Phase 0 closed — все 6 compose probed (`books-db`, `mongo`, `minio`, `elasticsearch`, `proxy-chain`, `imgproxy`), Portainer PAT verified, endpoint 6 stostayer = not ours.
|
||
|
||
**next concrete:** Write `scripts/books-vds-portainer-migrate.sh` (clone-adapt из `.wiki/concepts/portainer-stack-management-vds.md` § Migration script). Diffs: `PORTAINER_URL=https://portainer.kzntsv.site`, endpointId=1, dir prefix `/usr/docker/`, auth `X-API-Key` (PAT works, no JWT fallback). Then Phase 2 ladder: proxy-chain → imgproxy → minio → mongo → books-db → elasticsearch.
|
||
|
||
## Спроси user'а
|
||
|
||
- **(нет на этом раунде — auto-push grant active, scope decisions made, момент migrate-by-migrate ладдером).**
|
||
|
||
## Не делать (preemptive guards)
|
||
|
||
- **Не migrate traefik / portainer** — management plane, recreate ломает access (Skip-list).
|
||
- **Не trigger ES recreate без user awareness** — текущая ES «не используется» per user 2026-05-25, но verify before recreate. ES в ладдере **последним** на покое.
|
||
- **Не editit `/usr/docker/<svc>/docker-compose.yml`** напрямую после migration — Portainer-managed working_dir = `/data/compose/<id>/`. Compose files в `/usr/docker/<svc>/` становятся reference only.
|
||
- **Не break backup pipeline** — `books-vds-backup-daily-kreknin` rsync paths = `/usr/docker/<svc>/data` (binds). Bind paths preserved через migration, paths остаются валидны. Verify post-migration rsync прошёл хотя бы 1 раз.
|
||
- **Не push without grant in future sessions** — auto-push грант session-only (Rule 4). Next session start = ask-mode again.
|
||
|
||
## Memory updates за сессию
|
||
|
||
- **Учить:** Portainer single instance `portainer.kzntsv.site` управляет 2 endpoint'ами — `1` = books VDS local docker daemon, `6` = stostayer (другой клиент, **не наш**, scope не расширять). User-confirmed 2026-05-25.
|
||
- **Учить:** PAT auth через `X-API-Key: ptr_...` header работает (без JWT fallback). Pass entry `books-vds/full-env BOOKS_PORTAINER_API_KEY`.
|
||
- **Учить:** на books VDS все SSH-compose стеки **bind-only** (нет named volumes для них) и **no env_file** (env inline в compose). Migration упрощается: gotcha #1 (env_file strip) не релевантен, gotcha #2 (absolutize) — единственная требуемая transform.
|
||
- **Учить:** `imgproxy` (2 контейнера, `imgproxy.kzntsv.site`, S3→minio) был missing из `entities/books-vds.md` SSH-managed table до 2026-05-25. Fix'нут в этом раунде. Lesson: при entity wiki бутстрапе на legacy host'ах — обязательно `ls /usr/docker/` cross-check vs running `docker ps`, не доверять предположениям.
|
||
- **Reference:** migration pattern source — `.wiki/concepts/portainer-stack-management-vds.md` (VDS-infra 12-stack retro-migration 2026-05-22). Adaptable для books VDS с 3-4 diff'ами.
|