# 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 `` с 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`](SECURITY.md): - **Layer A** (на каждый push): Trivy + npm audit - **Layer B** (weekly cron на rd.hhivp.com): Nuclei DAST - **Layer C** (на push + MR): Hadolint + GitLeaks + Semgrep ## Локальная разработка ```bash 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/`. ## Контакты - Email: admin@hhivp.com - Site: https://hhivp.com/