# 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 (build secret VERDACCIO_TOKEN, живой JWT) и # пушится в registry.kzntsv.site. Тег = git-sha pilonuxt master. # # Домен: на 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). Env-override не настраивали. services: pilonuxt: container_name: pilonuxt image: registry.kzntsv.site/pilonuxt:3622662 restart: unless-stopped environment: NODE_ENV: production TZ: Europe/Moscow NITRO_HOST: 0.0.0.0 NITRO_PORT: "3000" # Smoke на временном поддомене — гасим боевую аналитику, чтобы не лить # тестовый трафик в GTM-MNNXFJ6. На cutover вернуть дефолт (убрать строку). NUXT_PUBLIC_GTM_ID: "" networks: - proxy labels: traefik.enable: "true" traefik.http.routers.pilonuxt.entrypoints: websecure traefik.http.routers.pilonuxt.rule: Host(`pilonuxt.vds.kzntsv.site`) traefik.http.routers.pilonuxt.tls.certresolver: letsEncrypt traefik.http.services.pilonuxt.loadbalancer.server.port: "3000" networks: proxy: external: true