Files
pitstopavto-su-v2/CLAUDE.md
Dmitry Gusev ed27dcfc14
Some checks failed
deploy / deploy (push) Failing after 14s
feat: скаффолд Astro 5 SSG (главная + /privacy + consent gate)
- Главная: hero, адрес Люблинская 100 (Аквапарк ФЭНТАЗИ), 4 кликабельных tel:, карта Яндекса
- /privacy: политика 152-ФЗ + ConsentRevoke (отозвать/сбросить)
- Аналитика перенесена 1:1 с WP: Яндекс.Метрика 47169531 (Webvisor) + GA4 GT-WRF7ZZ8
- Скрипты в type=text/plain, активируются после согласия (pit-consent в localStorage+cookie)
- robots.txt с явным Allow для GPTBot/ClaudeBot/PerplexityBot/Google-Extended/CCBot
- llms.txt + ai.txt (spawning.ai стандарт)
- IndexNow ключ 901a779d62ca4702ad810c863b45e1f7
- JSON-LD AutoPartsStore с адресом и 4 телефонами
- nginx:1.29-alpine runtime, контейнер на :4147
- Gitea Actions deploy.yml + Trivy scan + IndexNow ping
2026-05-22 04:31:55 +03:00

4.9 KiB
Raw Blame History

pitstopavto.su — v2 (Astro)

Сайт-визитка магазина автозапчастей «ПитСтоп». Редизайн с WordPress на статический Astro 5.

Прод: https://pitstopavto.su Репо: git.striker.su/striker/pitstopavto-su-v2 Хост: web.hhivp.com (45.10.53.206 / 45.10.53.242) Контейнер: pitstopavto-su-v2 на 127.0.0.1:4147 (nginx:alpine + Astro SSG) Cutover: запланирован после согласования дизайна. Старый WP — pitstopavto-su:4142.

Стек

  • Astro 5 SSG, две страницы: / и /privacy/
  • nginx:1.29-alpine в runtime-контейнере
  • IBM Plex Sans (через @fontsource/ibm-plex-sans)
  • @astrojs/sitemapsitemap-index.xml автоматически

Структура

src/
├── components/
│   ├── Analytics.astro      Яндекс.Метрика (47169531 с Webvisor) + GA4 (GT-WRF7ZZ8) в type=text/plain
│   ├── CookieConsent.astro  152-ФЗ-баннер, ключ pit-consent в localStorage+cookie
│   ├── ConsentRevoke.astro  на /privacy/ — отозвать/сбросить выбор
│   └── Footer.astro
├── layouts/Base.astro       <html>+meta+JSON-LD (AutoPartsStore)+Analytics+Footer+CookieConsent
├── pages/
│   ├── index.astro          hero / адрес / телефоны / карта Яндекса
│   └── privacy.astro        политика конфиденциальности 152-ФЗ
├── styles/global.css        тёмный/янтарный (#f5b400) индустриальный стиль
└── consts.ts                SITE_*, ADDRESS, PHONES, GEO, ANALYTICS, OPERATOR

public/
├── 901a779d62ca4702ad810c863b45e1f7.txt   IndexNow key
├── ai.txt                   spawning.ai (Train/Cite/Quote: yes)
├── favicon.svg
├── llms.txt
└── robots.txt               явные Allow для GPTBot/ClaudeBot/PerplexityBot/Google-Extended/CCBot

scripts/indexnow.js          POST sitemap → yandex.com/indexnow + api.indexnow.org

Аналитика (перенесена 1:1 из WP)

  • Яндекс.Метрика № 47169531 с Webvisor (запись сессий)
  • Google Analytics GT-WRF7ZZ8 (gtag)

Скрипты в Analytics.astro имеют type="text/plain" data-cookieconsent="statistics" и активируются только после клика «Принять» в баннере CookieConsent.astro. Согласие хранится в localStorage + cookie pit-consent (12 мес). На /privacy/ есть виджет для отзыва/сброса согласия.

Деплой

Автоматический (Gitea Actions)

Push в main.gitea/workflows/deploy.yml:

  1. SSH на web.hhivp.com с ключом из секрета SSH_DEPLOY_KEY
  2. git fetch + reset --hard origin/main
  3. docker compose build && up -d
  4. Trivy scan (warning-only)
  5. curl http://127.0.0.1:4147/ — health check
  6. docker image prune --filter "until=168h"
  7. npm run indexnow (ping Яндекса и Bing)

Требуемые секреты в Gitea (/repos/striker/pitstopavto-su-v2/actions/secrets):

  • SSH_DEPLOY_KEY — приватный ed25519 ключ ~/.ssh/pitstopavto-v2-deploy
  • SSH_KNOWN_HOSTSweb.hhivp.com ssh-ed25519 AAAAC3...

Pubkey деплоя кладётся в striker@web:~/.ssh/authorized_keys.

Вручную

ssh striker@web.hhivp.com
cd /opt/docker/sites/pitstopavto-su-v2
git pull && docker compose up -d --build

Откат на старый WP

Старый WP-контейнер pitstopavto-su:4142 + БД pitstopavto_su на db.hhivp.com сохранены (для отката). Откат за ~30 секунд:

ssh striker@web.hhivp.com
sudo sed -i 's|127.0.0.1:4147|127.0.0.1:4142|g' /etc/nginx/conf.d/pitstopavto.su
sudo nginx -t && sudo systemctl reload nginx

После ~14 дней стабильной работы v2 — старый WP можно удалить (контейнер + БД + образ).

Локальная разработка

npm install
npm run dev      # http://localhost:4321
npm run build    # → dist/ (статика)
npm run preview

IndexNow

Уникальный ключ 901a779d62ca4702ad810c863b45e1f7 в public/<key>.txt и в scripts/indexnow.js. Запускается из CI после успешного healthcheck.

История

  • 2026-05-22: инициализация v2 (скаффолд Astro). Старый WP-сайт — одностраничник «Мы переехали» (Люблинская 100, Аквапарк ФЭНТАЗИ, 4 телефона), все остальные пункты меню в WP возвращали 404, 20+ плагинов держались ради одной страницы.