Files
admin/host-stacks/vds-kzntsv/labtools-pro.compose.yml
vitya ed99f2225b deploy(labtools-pro): b LIVE on vds-kzntsv — cutover done, labtools.pro on VDS
DNS flip confirmed at authoritative ns1.reg.ru (Resolve-DnsName) + 8.8.8.8 ->
89.253.255.94 (labtools.pro/www; NOT labtools.ru). Earlier checks hit stale TTL
cache; authoritative NS was the truth.

Stack 19 traefik-rule -> Host(labtools.pro)||Host(www.labtools.pro) via Portainer
PUT (env 8/8 preserved, pullImage=false). LE cert issued instantly (ssl_verify=0).
Live-smoke GREEN: both hosts 200 (nav+catalog+products), redirects parity, sitemap
index host=www, real content (lang=en). Staging host removed (->404). External
check from RUVDS box: labtools.pro/www -> 89.253.255.94 HTTP 200 trusted cert.
RUVDS labtools.pro left intact as rollback.

Task closed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-02 12:07:52 +03:00

60 lines
3.6 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.
# labtools-pro — прод-фронт labtools.pro (snolla-приложение, 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).
#
# Модель: НЕ pilonuxt/Nuxt-contentApi. Это монолит @snollajs/snolla (0.28.7) — читает БД-контент
# MoreThenCms (mssql.kzntsv.site) + server-side Liquid render. Ассеты из MinIO (minio.kzntsv.site)
# через imgproxy (imgproxy.kzntsv.site). node-config: NODE_ENV=production → default(dev,gitignored)+
# production.json+ENV-override. КАТАЛОЖНЫЙ сайт (secции /products/*, редиректы).
#
# Образ собирается АДМИНОМ на VDS из victor/labtools.pro/deploy/Dockerfile (build-arg VERDACCIO_TOKEN,
# @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha монорепы labtools.pro.
# ⚠️ Имя образа labtools-pro (НЕ labtools — тот у labtools.ru).
#
# Домен: STAGING — labtools-pro.vds.kzntsv.site (под wildcard *.vds.kzntsv.site, cert LE HTTP-01 авто).
# Cutover live labtools.pro/www.labtools.pro — ОТДЕЛЬНЫЙ gated шаг: бой живой на RUVDS IIS, НЕ выводить.
# DNS переключает ОПЕРАТОР. ⚠️ НЕ путать с labtools.ru — тот флипается отдельно. План отката = revert DNS.
#
# Runtime egress (наружу из proxy-сети): mssql.kzntsv.site:1433, minio.kzntsv.site:443,
# imgproxy.kzntsv.site:443, smtp.yandex.ru:465.
#
# Секреты — env на VDS (Portainer stack env), НЕ в образ, НЕ в git. Значения ${...} инжектит Portainer
# из stack-переменных (переиспользованы verbatim из labtools stack Id 17). Контракт:
# DB_USER DB_PASSWORD IMGPROXY_KEY IMGPROXY_SALT S3_ACCESS_KEY_ID S3_SECRET_ACCESS_KEY SMTP_USER SMTP_PASSWORD
# siteId=663F9410-A6CC-4651-9A5C-62844A313957 — non-secret, в production.json (не env).
services:
labtools-pro:
container_name: labtools-pro
image: registry.kzntsv.site/labtools-pro:7bd9fae # git-sha victor/labtools.pro master
restart: unless-stopped
environment:
NODE_ENV: production
TZ: Europe/Moscow
# PORT не переопределяем — образ дефолтит 5000 (EXPOSE 5000, healthcheck на $PORT)
# --- 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.labtools-pro.entrypoints: websecure
# CUTOVER 2026-07-02: DNS labtools.pro/www флипнут на VDS (89.253.255.94) оператором.
# Проверено авторитетным ns1.reg.ru + 8.8.8.8 → 89.253.255.94 (НЕ labtools.ru!). Боевые хосты.
# staging-хост labtools-pro.vds.kzntsv.site УБРАН post-cutover. RUVDS IIS 80.64.31.36 — rollback, не тронут.
traefik.http.routers.labtools-pro.rule: Host(`labtools.pro`) || Host(`www.labtools.pro`)
traefik.http.routers.labtools-pro.tls.certresolver: letsEncrypt
traefik.http.services.labtools-pro.loadbalancer.server.port: "5000"
networks:
proxy:
external: true