striker f006eedf71
All checks were successful
deploy / deploy (push) Successful in 59s
security / security (push) Successful in 2m37s
chore(security): .gitignore + .gitleaks.toml защита от CMS-export leak
Превентивная защита от случайной публикации content/logs, content/data, ghost.*.json (см. инцидент moovg_ru 2026-05-24).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 20:09:27 +03:00

pushkinohistory.ru

Сайт «История города Пушкино» — портал с историческими материалами, новостями и агрегатором региональных RSS-источников.

Production: https://pushkinohistory.ru

Mirror. Source-of-truth: git.striker.su/striker/pushkinohistory-ru-v2. Этот репозиторий на GitHub — резервная копия + площадка для GitHub Actions security-сканов.

Стек

  • Astro 5 + Content Collections + markdown
  • nginx:1.29-alpine в runtime-контейнере
  • PT Serif (заголовки/тело статьи) + IBM Plex Sans (UI)
  • sanitize-html — очистка тела поста для RSS <content:encoded> с CDATA
  • fast-xml-parser — изолированный cron-агрегатор внешних RSS

Деплой

git push → Gitea Actions (.gitea/workflows/deploy.yml) → SSH на web.hhivp.com:

  1. git pull --ff-only в /opt/docker/sites/pushkinohistory-ru-v2
  2. docker compose build
  3. Trivy scan свежесобранного образа (HIGH/CRITICAL, warning-only)
  4. docker compose up -d → healthcheck http://127.0.0.1:4146/
  5. IndexNow ping Яндекс/Bing (sitemap-based)
  6. docker image prune -af --filter "until=168h"

Контейнер pushkinohistory-ru-v2:4146 за хостовым nginx.

Security

Все автоматические проверки описаны в SECURITY.md:

  • Layer A (на каждый push): Trivy + npm audit
  • Layer B (weekly cron на rd.hhivp.com): Nuclei DAST
  • Layer C (на push + MR): Hadolint + GitLeaks + Semgrep

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

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

История

  • 2026-05-21: v2 — Astro 5 + Content Collections.
  • 2026-05-23: WordPress v1 контейнер удалён, бэкапы в /opt/backup/.

Контакты

Description
������� ������ ������� � Vite+React (v2 ��������)
Readme 1.8 MiB
Languages
Astro 45.4%
JavaScript 24%
TypeScript 14.7%
Python 8.7%
CSS 4.5%
Other 2.7%