# maljarka — прод-лендинг maljarka.tandemmebel.ru (snolla-app, server-side Liquid, node) на vds-kzntsv (89.253.255.94). # # 7-й сайт тиража snolla на VDS. Source-of-truth этого compose — admin-репо; применяется через # Portainer API/UI (VDS-rule: стеки через Portainer, не ssh+compose). # # Модель: монолит @snollajs/snolla (0.43.2) / aws-sdk v3 — читает БД-контент MoreThenCms # (mssql.kzntsv.site) для siteId A2476738 + server-side Liquid render (Reversal тема 4881fc7f). # Ассеты темы из MinIO (minio.vds.kzntsv.site) bucket `themes`. Лендинг: 1 published Page `/` # (content пуст — вёрстка baked в layout.liquid, byte-identical рендеру .NET-admin) + 4 StaticPages. # # Образ собирается АДМИНОМ на VDS из victor/maljarka.tandemmebel.ru/deploy/Dockerfile (build-arg # VERDACCIO_TOKEN, @snollajs/* из verdaccio.kzntsv.site). Тег = git-sha монорепы (текущий 7f03d67). # # Домен: LIVE — maljarka.tandemmebel.ru (cert LE HTTP-01, issued on first hit 2026-07-31). # DNS = CNAME → tandemmebel.ru → 89.253.255.94 (на VDS с decomm RUVDS 2026-07-21). # Сайт потерян при декоммишне RUVDS IIS (единственный публичный хост maljarka), восстановлен # тиражом как Node snolla-app. RUVDS более не rollback-target (погашен у провайдера). # Предыстория: жил на RUVDS IIS catch-all (80.64.31.36), 502-на-HTTPS пофикшен 2026-06-08 # (SettingsData httpSecure блок, [[morethencms-null-settingsdata-https-502]]). # # Runtime egress (наружу из proxy-сети): mssql.kzntsv.site:1433, minio.vds.kzntsv.site:443, # smtp.yandex.ru:465. imgproxy НЕ нужен (in-process sharp serve-bytes). # # Секреты — 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=A2476738-E26C-49D5-95AD-958F42DCCDD0 — non-secret, в production.json (не env). Culture ru-RU. siteUrl=https://maljarka.tandemmebel.ru services: maljarka: container_name: maljarka image: registry.kzntsv.site/maljarka:7f03d67 # git-sha victor/maljarka.tandemmebel.ru master 7f03d67 (snolla 0.43.2 / aws-sdk v3 — первый deploy 2026-07-31, 7-й сайт тиража; реконструкция Reversal-лендинга из MoreThenCms DB). rollback-теги: ведутся с этого deploy. restart: unless-stopped mem_limit: 512m # guardrail от runaway: snolla baseline ~100-200M; OOM в контейнере → restart:unless-stopped поднимет. standalone-compose → mem_limit (НЕ deploy.resources — то swarm-only). 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.maljarka.entrypoints: websecure traefik.http.routers.maljarka.rule: Host(`maljarka.tandemmebel.ru`) traefik.http.routers.maljarka.tls.certresolver: letsEncrypt traefik.http.services.maljarka.loadbalancer.server.port: "5000" networks: proxy: external: true