Files
admin/.tasks/NEXT_SESSION.md
vitya 141efe9759 scripts(books-vds-portainer-migration): Phase 1 adapter ready
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>
2026-05-25 10:16:10 +03:00

4.7 KiB
Raw Blame History

_last_updated_, session_id
_last_updated_ session_id
2026-05-25T11:15:00+03:00 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 pipelinebooks-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'ами.