Files
admin/host-stacks/vds-kzntsv/on-snolla.compose.yml
vitya 443713e8b3 feat(on-snolla): MinIO split S3-direct-path cutover — stack 22 bump 473923e494db->07db7e3
Track B3 pilot (on-snolla, S3-direct reads, no imgproxy). In-place image bump
of live stack 22 by snolla-live-prod-inplace-image-bump recipe:
- build on VDS (07db7e3 = config endpoint minio.kzntsv.site -> minio.vds.kzntsv.site,
  snolla 0.42.1 v2, NO package.json bump — user decision: split without snolla version bump)
- staging :5077 from live env: robots/home/sitemap 200
- S3-direct gate: theme asset /themes/c406.../bootstrap.min.css -> 200, 97324 B == live
  (aws-sdk v2 -> vds minio 2025 — compat CONFIRMED, no @smithy pin needed, no SigV4 403)
- sitemap parity staging==live 3/3 (/, /c, /yandex); /c 404 parity
- Portainer PUT stack 22 env-preserving (8/8), prune:false pullImage:true -> 200
- live container 07db7e3 healthy, mem_limit 512m preserved
- live-smoke https://on.snolla.com: theme asset 200 97324 B, TLS cert untouched (LE YR1, Oct 18)
Rollback: PUT stack 22 back to 473923e494db (rollback tag in registry, pred endpoint
minio.kzntsv.site/books-vds, live mirror). RUVDS DECOMM 2026-07-21 — image-tag rollback only.

scripts/minio-split-cutover/runbook.md: Track B progress table (B1 mirror DONE,
B2 imgproxy DNS-flip LIVE, B3 on-snolla pilot LIVE, remaining 5 sites + Track A TODO).

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-30 13:23:23 +03:00

64 lines
4.3 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# on-snolla — посадочная on.snolla.com (snolla-app, server-side Liquid, node) на vds-kzntsv (89.253.255.94).
#
# STAGING-FIRST. Source-of-truth этого compose — admin-репо; применяется через Portainer API/UI
# (VDS-rule: стеки через Portainer, не ssh+compose).
#
# Модель: монолит @snollajs/snolla (0.42.1) / core / liquid / data — читает БД-контент MoreThenCms
# (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.vds.kzntsv.site — CMS-media split
# 2026-07-30, был minio.kzntsv.site/books-vds). In-process sharp, delivery=serve-bytes, cache=local-variant.
# imgproxy в путях нет (как tandemmebel — сырой /imgproxy -> 404 норма).
# node-config: NODE_ENV=production -> default(dev,gitignored)+production.json+ENV-override.
# ЛЕНДИНГ (1 Page / + 2 StaticPages), БЕЗ блога/каталога/e-commerce.
#
# Образ собирается АДМИНОМ на VDS из victor/on.snolla.com/deploy/Dockerfile (build-arg VERDACCIO_TOKEN,
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha репо on.snolla.com (текущий 07db7e3 — s3.endpoint
# -> minio.vds.kzntsv.site; pred. 473923e494db).
# Homepage render byte-identical прод-HTML (verified direct diff + completeness-gate 3/3 loc parity 2026-07-20).
#
# Домен: LIVE — on.snolla.com (cert LE HTTP-01, CN=on.snolla.com, issued 2026-07-20, until 2026-10-18).
# Cutover завершён 2026-07-20: DNS reg.ru on.snolla.com A 80.64.31.36 -> 89.253.255.94 (operator flip,
# авторит. NS ns1/ns2.reg.ru verified -> VDS), traefik rule staging->боевой (LE-порядок соблюдён),
# LE-серт issued on first hit. Live-smoke GREEN, homepage byte-identical прод-HTML, sitemap 3/3 parity.
# Предыстория: жил на RUVDS IIS (80.64.31.36) до 2026-07-20. RUVDS IIS не тронут (rollback = revert DNS).
# План отката = PUT стека 22 назад на тег 473923e494db (rollback-тег в registry, pred. endpoint
# minio.kzntsv.site/books-vds — жив, миррор там). RUVDS IIS DECOMM 2026-07-21 — rollback только образ-тегом.
#
# Runtime egress: mssql.kzntsv.site:1433, minio.vds.kzntsv.site:443 (theme assets — CMS-media split 2026-07-30,
# только чтение aws-sdk v2; был minio.kzntsv.site/books-vds), smtp.yandex.ru:465.
#
# Секреты — env на VDS (Portainer stack env), НЕ в образ, НЕ в git. Значения ${...} инжектит Portainer
# из stack-переменных (переиспользованы verbatim из tandemmebel стека 20 — общая snolla-инфра). Контракт:
# DB_USER DB_PASSWORD IMGPROXY_KEY IMGPROXY_SALT S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEY SMTP_USER SMTP_PASSWORD
# siteId=B9ECDB50-2B93-4CE5-B238-A9918B3F9CF7 — non-secret, в production.json (не env). Culture en. siteUrl=https://on.snolla.com
services:
on-snolla:
container_name: on-snolla
image: registry.kzntsv.site/on-snolla:07db7e3 # git-sha on.snolla.com master 07db7e3 (snolla 0.42.1, s3.endpoint -> minio.vds.kzntsv.site). rollback-тег в registry: 473923e494db (pred. endpoint minio.kzntsv.site/books-vds, жив).
restart: unless-stopped
mem_limit: 512m # guardrail: snolla baseline ~100-200M; OOM -> restart. standalone-compose -> mem_limit (НЕ deploy.resources, swarm-only).
environment:
NODE_ENV: production
TZ: Europe/Moscow
# --- runtime-секреты (значения из Portainer stack env; НЕ хранить тут) ---
DB_USER: ${DB_USER}
DB_PASSWORD: ${DB_PASSWORD}
IMGPROXY_KEY: ${IMGPROXY_KEY}
IMGPROXY_SALT: ${IMGPROXY_SALT}
S3_ACCESS_KEY_ID: ${S3_ACCESS_KEY_ID}
S3_SECRET_ACCESS_KEY: ${S3_SECRET_ACCESS_KEY}
SMTP_USER: ${SMTP_USER}
SMTP_PASSWORD: ${SMTP_PASSWORD}
networks:
- proxy
labels:
traefik.enable: "true"
traefik.http.routers.on-snolla.entrypoints: websecure
# LIVE (cutover 2026-07-20). Rollback = Host(`on-snolla.vds.kzntsv.site`) + revert DNS -> 80.64.31.36.
traefik.http.routers.on-snolla.rule: Host(`on.snolla.com`)
traefik.http.routers.on-snolla.tls.certresolver: letsEncrypt
traefik.http.services.on-snolla.loadbalancer.server.port: "5000"
networks:
proxy:
external: true