Files
admin/host-stacks/vds-kzntsv/pilonuxt.compose.yml
vitya 03607d0d6e meta(handoff): flat-fields wave CLOSED; session end
- 7 sites @snolla/snolla→web redeployed
- admin-api 0.4.0 (flat fields) + client 0.5.2 + schema-gen 0.2.1 published
- pilorama98 0db46e1 live: loader flat + catalog + yml/short_description
- admin-api 0.5.0 (validation) published, not deployed to pilorama98
- coordinator role active: snolla ↔ pilorama98
2026-08-07 13:03:23 +03:00

61 lines
3.5 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.
# pilonuxt — prod-фронт ПИЛОРАМА98 (Nuxt 4 / Nitro node-server) на vds-kzntsv (89.253.255.94).
#
# Деплой: Portainer-стек за Traefik. Source-of-truth этого compose — admin-репо;
# применяется через Portainer API/UI (VDS-rule: стеки через Portainer, не ssh+compose).
#
# Образ собирается на workstation из МОНОРЕПЫ victor/pilorama98.ru (workspace-build:
# контекст = корень монорепы, -f apps/web/Dockerfile, build secret VERDACCIO_TOKEN живой JWT).
# runner несёт @img/sharp-* нативы (sharp приехал с snolla 0.17, imageResize). Тег = git-sha
# монорепы. Push: с дома .output-слой ловит traefik-499 → docker save | ssh vds 'docker load'
# + docker push С VDS. См. apps/web/.wiki/concepts/docker-deploy.md.
#
# Домен: на smoke-фазе — временный поддомен pilonuxt.vds.kzntsv.site (под wildcard
# *.vds.kzntsv.site, cert LE HTTP-01 авто). Cutover www.pilorama98.ru — отдельным
# шагом после зелёного smoke (правка rule + DNS reg.ru).
#
# Runtime egress (наружу из proxy-сети, по умолчанию открыт):
# mssql.kzntsv.site:1433 (живые CMS-запросы, cacheTimeout=0) — обязателен;
# smtp.yandex.ru:465 (письма форм contacts/checkout);
# собственный origin https://pilonuxt.vds.kzntsv.site (SSR self-call на /snolla).
#
# Секреты (MSSQL/SMTP/imgproxy key+salt/siteId) ЗАПЕЧЕНЫ в config/default.json образа
# (решение vitya — образ только в приватном registry).
# Admin-api env (2026-08-05): JWT_SECRET / DATABASE_URL / S3_* передаются через Portainer
# stack-env. При перекате стека env ОБЯЗАТЕЛЕН (Env:[] очищает секреты — gotcha #10).
services:
pilonuxt:
container_name: pilonuxt
image: registry.kzntsv.site/pilonuxt:0db46e1
restart: unless-stopped
environment:
NODE_ENV: production
TZ: Europe/Moscow
NITRO_HOST: 0.0.0.0
NITRO_PORT: "3000"
# Admin-api env (2026-08-05, embed в apps/web Nuxt-middleware)
JWT_SECRET: SUz56VIm96HqxLTZhR31BGhrVbAbIZC2R67prRwhzXsywCsd76Qaxlwl93vs9WC9
DATABASE_URL: "sqlserver://mssql.kzntsv.site:1433;database=MoreThenCms;user=snolla;password=fXkH4@8O%3pc;encrypt=true;trustServerCertificate=true"
S3_ENDPOINT: https://minio.vds.kzntsv.site
S3_REGION: us-east-1
S3_FORCE_PATH_STYLE: "true"
S3_ACCESS_KEY_ID: AKIAJ2YJP72W6ZHCRE6Q
S3_SECRET_ACCESS_KEY: 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
THEMES_BUCKET: themes
# CUTOVER 2026-06-15: боевой домен www.pilorama98.ru — аналитика ВКЛ
# (дефолт GTM-MNNXFJ6, env не задаём). На smoke-поддомене гасили `""`.
networks:
- proxy
labels:
traefik.enable: "true"
traefik.http.routers.pilonuxt.entrypoints: websecure
# Боевые хосты pilorama98 (DNS → 89.253.255.94, cutover с RUVDS IIS) +
# pilonuxt.vds.kzntsv.site оставлен для прямого smoke/диагностики.
traefik.http.routers.pilonuxt.rule: Host(`www.pilorama98.ru`) || Host(`pilorama98.ru`) || Host(`pilonuxt.vds.kzntsv.site`)
traefik.http.routers.pilonuxt.tls.certresolver: letsEncrypt
traefik.http.services.pilonuxt.loadbalancer.server.port: "3000"
networks:
proxy:
external: true