Compare commits

...

21 Commits

Author SHA1 Message Date
striker
71b37935c2 docs: добавить SEO-правила и заметку по RSS-агрегатору в CLAUDE.md
All checks were successful
deploy / deploy (push) Successful in 52s
security / security (push) Successful in 2m40s
2026-05-30 21:09:25 +03:00
striker
93c16e9ada fix(seo): добавить description всем 11 страницам и постам (были пустыми)
All checks were successful
deploy / deploy (push) Successful in 1m11s
security / security (push) Successful in 2m50s
2026-05-30 20:12:42 +03:00
striker
f006eedf71 chore(security): .gitignore + .gitleaks.toml защита от CMS-export leak
All checks were successful
deploy / deploy (push) Successful in 59s
security / security (push) Successful in 2m37s
Превентивная защита от случайной публикации 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
striker
d27b2f6719 fix(security): npm audit fix + GitLeaks allowlist for indexnow.js
All checks were successful
deploy / deploy (push) Successful in 1m5s
security / security (push) Successful in 2m41s
- npm audit fix: устранены 5 vulnerabilities (где возможно без --force):
  - path-to-regexp <0.1.13 (ReDoS, HIGH)
  - nodemailer 6.x patch
  - qs 6.7.x DoS (transitively через body-parser + express)

- .gitleaks.toml: расширен allowlist для scripts/indexnow.js* и
  scripts/indexnow-ping.sh — содержат публичный IndexNow KEY, не секрет.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 19:11:16 +03:00
striker
c2704ec3a1 fix(security): GitLeaks allowlist + Dockerfile DL4006 + npm audit в CI
Some checks failed
deploy / deploy (push) Has been cancelled
security / security (push) Has been cancelled
GitLeaks: 8 false-positives на vgrf_ru (IndexNow public key + legacy
WP plugin code) — добавлен .gitleaks.toml с allowlist:
- public/<32hex>.txt + корневой <32hex>.txt (IndexNow validation files)
- wp-content/** (legacy WordPress plugin code, не настоящие секреты)
- const KEY = '<32hex>' паттерн

Hadolint DL4006: добавлен SHELL pipefail в начале каждой stage.

npm audit: убран из Dockerfile (там кэшировался Docker layer'ом и
по факту не запускался при unchanged package-lock.json). Вынесен в
.gitea/workflows/security.yml как отдельный job — каждый push, реально.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 18:54:06 +03:00
striker
a32346fc3d feat(security): GitHub Actions security.yml (mirror coverage)
All checks were successful
deploy / deploy (push) Successful in 48s
security / security (push) Successful in 3m6s
Дополнительный security-сканирование на GitHub mirror: hadolint-action, gitleaks-action, semgrep, trivy-action. Запускается на push + PR + weekly cron (Mon 03:00 UTC).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:56:35 +03:00
striker
fb613d0b02 docs(readme): README с описанием стека, deploy и security (GitHub mirror)
Some checks failed
deploy / deploy (push) Has been cancelled
security / security (push) Has been cancelled
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:52:56 +03:00
striker
708ee41596 fix(security): nativе binaries вместо docker run (Gitea fix)
Some checks failed
deploy / deploy (push) Has been cancelled
security / security (push) Has been cancelled
Gitea act_runner не имеет docker внутри workflow-контейнера —
"docker not found" маскировался через `|| true`, Layer C по факту
не работал. Заменено на:
- Hadolint v2.12.0 binary (curl + chmod)
- GitLeaks v8.21.2 (tarball)
- Semgrep через python3 venv + pip

Все три по-прежнему warning-only, но теперь реально сканируют.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:49:24 +03:00
striker
bdccf62cee docs(security): SECURITY.md с описанием Layer A+B+C stack
All checks were successful
deploy / deploy (push) Successful in 1m5s
security / security (push) Successful in 9s
Описывает все автоматические проверки: Trivy, npm audit (A), Nuclei (B), Hadolint+GitLeaks+Semgrep (C). Email для приватных репортов: admin@hhivp.com.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:04:42 +03:00
striker
5689940853 feat(security): Hadolint + GitLeaks + Semgrep workflow (Layer C)
Some checks failed
deploy / deploy (push) Has been cancelled
security / security (push) Has been cancelled
Новый workflow .gitea/workflows/security.yml — параллельно с deploy.yml,
запускается на push в main + на PR. Все три инструмента warning-only:

- Hadolint: bad practices в Dockerfile
- GitLeaks: поиск секретов в истории (полный clone fetch-depth: 0)
- Semgrep: SAST с конфигами p/javascript + p/react + p/typescript + p/security-audit

Не блокируют deploy — findings собираются в логи job'а.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:51:04 +03:00
striker
3a2d66eb6c feat(security): Trivy в CI + npm audit в Dockerfile (Layer A)
Some checks failed
deploy / deploy (push) Has been cancelled
- Dockerfile: npm audit HIGH/CRITICAL warning-only после npm ci/install
- CI (для тех у кого ещё не было): Trivy scan собранного образа
  HIGH/CRITICAL severity, --ignore-unfixed, --exit-code 0 (warning-only)

Часть multi-layer security plan: Layer A (минимум), B (Nuclei DAST weekly cron)
и C (GitLeaks + Semgrep + Hadolint) — отдельными задачами в Singularity.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 16:47:09 +03:00
striker
f4923fd6b4 feat(footer): hover-pill credit «Сделано в hhivp.com» с border вместо плотного фона
All checks were successful
deploy / deploy (push) Successful in 54s
Паттерн Cuberto: только mark по умолчанию, при hover/focus раскрывается с текстом справа. SVG-mark в currentColor наследует цвет родителя — гармонирует с любой темой. Border 1px solid currentColor вместо плотного чёрного фона.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 07:00:27 +03:00
striker
e79fdf1c59 style(footer): mark на чёрном фоне 22px (вместо синего 18px)
All checks were successful
deploy / deploy (push) Successful in 1m16s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 06:43:50 +03:00
striker
29a5faadee feat(footer): робот hhivp вместо текстового mark в SVG
All checks were successful
deploy / deploy (push) Successful in 1m11s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 06:39:38 +03:00
striker
3868774a2b feat(footer): visible credit с маркой hhivp вместо длинного юр.лица
All checks were successful
deploy / deploy (push) Successful in 1m5s
SVG-mark 18px + «Разработка — hhivp.com» вместо «ООО АйТи Решения».
hhivp.com лучше для SEO direct match и memorability.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 06:36:02 +03:00
striker
3d42a588d4 feat(schema): add creator entity (hhivp.com) to WebSite JSON-LD
All checks were successful
deploy / deploy (push) Successful in 1m0s
Entity-сигнал для AI Overviews / Я.Нейро о тех-партнёрстве.
Связывает сайт с разработчиком через @id графа.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 05:07:49 +03:00
striker
182040c633 feat(footer): добавить подпись о техническом партнёре (по образу stbolshevik)
All checks were successful
deploy / deploy (push) Successful in 55s
2026-05-24 00:21:31 +03:00
striker
98c91f605b feat: Speculation Rules API in BaseLayout (prerender on hover/pointerdown)
All checks were successful
deploy / deploy (push) Successful in 1m10s
2026-05-23 23:56:41 +03:00
striker
3104eaf1ce chore(robots): add ChatGPT-User + OAI-SearchBot + Applebot-Extended
Some checks failed
deploy / deploy (push) Has been cancelled
2026-05-23 23:46:06 +03:00
d2bd3647d4 fix(ci): run trivy via SSH on web (docker not in Gitea runner) (#2)
All checks were successful
deploy / deploy (push) Successful in 1m3s
2026-05-21 15:31:52 +03:00
ffb3f94a57 feat(seo): discoverability + Schema.org + IndexNow + Trivy (#1)
Some checks failed
deploy / deploy (push) Failing after 13s
2026-05-21 14:25:14 +03:00
30 changed files with 915 additions and 262 deletions

View File

@@ -9,6 +9,9 @@ jobs:
deploy: deploy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install SSH client - name: Install SSH client
run: | run: |
apt-get update -qq apt-get update -qq
@@ -22,7 +25,7 @@ jobs:
printf '%s\n' "${{ secrets.SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts printf '%s\n' "${{ secrets.SSH_KNOWN_HOSTS }}" > ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts chmod 644 ~/.ssh/known_hosts
- name: Deploy to web.hhivp.com - name: Deploy + Trivy scan to web.hhivp.com
run: | run: |
ssh -i ~/.ssh/id_deploy striker@web.hhivp.com bash -s <<'REMOTE' ssh -i ~/.ssh/id_deploy striker@web.hhivp.com bash -s <<'REMOTE'
set -euo pipefail set -euo pipefail
@@ -43,9 +46,33 @@ jobs:
cd "$DEPLOY_PATH" cd "$DEPLOY_PATH"
mkdir -p data mkdir -p data
docker compose build docker compose build
# Trivy scan свежесобранного образа на хосте (docker есть здесь).
# ghcr.io вместо docker.io — обход rate limit. HIGH/CRITICAL warning-only.
echo "=== Trivy scan: pushkinohistory-ru-v2:latest ==="
docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/trivy-cache:/root/.cache/ \
ghcr.io/aquasecurity/trivy:latest image \
--severity HIGH,CRITICAL \
--ignore-unfixed \
--no-progress \
--exit-code 0 \
--timeout 5m \
pushkinohistory-ru-v2:latest || true
echo "=== Trivy scan done ==="
docker compose up -d docker compose up -d
sleep 5 sleep 5
docker compose ps docker compose ps
curl -fsS -o /dev/null -w "HEALTH HTTP %{http_code}\n" "$HEALTH_URL" curl -fsS -o /dev/null -w "HEALTH HTTP %{http_code}\n" "$HEALTH_URL"
docker image prune -af --filter "until=168h" >/dev/null 2>&1 || true docker image prune -af --filter "until=168h" >/dev/null 2>&1 || true
REMOTE REMOTE
- name: Setup Node.js for IndexNow
uses: actions/setup-node@v4
with:
node-version: '22'
- name: Notify IndexNow
run: npm run indexnow || true

View File

@@ -0,0 +1,72 @@
name: security
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
jobs:
security:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0 # GitLeaks нужна полная история
# ── 1. Hadolint: проверка Dockerfile ──────────────────────────────
# Установка нативного бинаря (act_runner не имеет docker внутри).
- name: Install Hadolint
run: |
if [ -f Dockerfile ]; then
curl -sSL https://github.com/hadolint/hadolint/releases/download/v2.12.0/hadolint-Linux-x86_64 -o /usr/local/bin/hadolint
chmod +x /usr/local/bin/hadolint
fi
- name: Run Hadolint
run: |
if [ -f Dockerfile ]; then
hadolint --no-fail Dockerfile || true
else
echo "No Dockerfile — skip"
fi
# ── 2. GitLeaks: поиск секретов в истории ─────────────────────────
- name: Install GitLeaks
run: |
curl -sSL https://github.com/gitleaks/gitleaks/releases/download/v8.21.2/gitleaks_8.21.2_linux_x64.tar.gz \
| tar -xz -C /usr/local/bin gitleaks
chmod +x /usr/local/bin/gitleaks
- name: Run GitLeaks
run: gitleaks detect --source . --no-banner --verbose --redact --exit-code 0 || true
# ── 3. Semgrep: SAST ──────────────────────────────────────────────
- name: Install Semgrep
run: |
apt-get update -qq
apt-get install -y --no-install-recommends python3-pip python3-venv
python3 -m venv /tmp/sg && /tmp/sg/bin/pip install --quiet semgrep
ln -sf /tmp/sg/bin/semgrep /usr/local/bin/semgrep
- name: Run Semgrep
run: |
semgrep --config=p/javascript --config=p/react --config=p/typescript --config=p/security-audit \
--severity=ERROR --severity=WARNING --no-error --quiet --metrics=off --timeout=120 . || true
# ── 4. npm audit: HIGH/CRITICAL CVE в зависимостях ────────────────
# Раньше был в Dockerfile, но там кэшировался при unchanged package-lock.json.
# Вынесен сюда — реально запускается каждый push.
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '22'
- name: npm audit
run: |
if [ -f package-lock.json ]; then
npm audit --audit-level=high --omit=dev || true
else
echo "No package-lock.json — skip npm audit"
fi

59
.github/workflows/security.yml vendored Normal file
View File

@@ -0,0 +1,59 @@
name: security
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
schedule:
# Каждый понедельник 03:00 UTC — независимый weekly scan
- cron: '0 3 * * 1'
permissions:
contents: read
security-events: write
jobs:
hadolint:
runs-on: ubuntu-latest
if: hashFiles('Dockerfile') != ''
steps:
- uses: actions/checkout@v4
- uses: hadolint/hadolint-action@v3.1.0
with:
dockerfile: Dockerfile
failure-threshold: error
continue-on-error: true
gitleaks:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: gitleaks/gitleaks-action@v2
continue-on-error: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
semgrep:
runs-on: ubuntu-latest
container:
image: returntocorp/semgrep:latest
steps:
- uses: actions/checkout@v4
- run: semgrep ci --config=p/javascript --config=p/react --config=p/typescript --config=p/security-audit
continue-on-error: true
trivy:
runs-on: ubuntu-latest
if: hashFiles('Dockerfile') != ''
steps:
- uses: actions/checkout@v4
- uses: aquasecurity/trivy-action@master
with:
scan-type: fs
scan-ref: .
severity: HIGH,CRITICAL
ignore-unfixed: true
exit-code: '0'

12
.gitignore vendored
View File

@@ -1,3 +1,13 @@
# Security: НЕ коммитить production logs и CMS data exports
# (могут содержать API keys, JWT, private_key). См. инцидент 2026-05-24.
content/logs/
content/data/
*.production.log
*.production.log.*
ghost.json
ghost.*.json
*.ghost.*.json
node_modules/ node_modules/
dist/ dist/
.astro/ .astro/
@@ -21,4 +31,4 @@ debug-*.png
# Vite-React backup (доступен через ветку vite-react-backup на origin) # Vite-React backup (доступен через ветку vite-react-backup на origin)
.vite/ .vite/

49
.gitleaks.toml Normal file
View File

@@ -0,0 +1,49 @@
# GitLeaks config для сателлитных сайтов hhivp.
# Extends default rules and adds allowlist for known false-positives.
# https://github.com/gitleaks/gitleaks#configuration
[extend]
useDefault = true
[allowlist]
description = "Allowlist for IndexNow public keys + legacy WP plugin code"
# Пути, которые целиком игнорируем
paths = [
# IndexNow validation file (32-hex .txt в корне или в public/).
# Это публичный ключ, по дизайну отдаётся всем — НЕ секрет.
'''public/[a-f0-9]{32}\.txt''',
'''^[a-f0-9]{32}\.txt$''',
# IndexNow ping-скрипты содержат `const KEY = '<32hex>'` —
# тот же публичный ключ, не секрет (для авторизации перед Яндекс/Bing API).
'''scripts/indexnow\.(js|mjs|sh|ts)$''',
'''scripts/indexnow-ping\.sh$''',
# Legacy WordPress plugin code (akismet, jetpack, wpforms-lite, wp-cache).
# Все "ключи" внутри — placeholder/template/internal параметры,
# не настоящие секреты. Импортировано из старого WP-сайта как static.
'''wp-content/.*''',
# Минифицированные ассеты — часто содержат hash'и/токены, не секреты.
'''.*\.min\.(js|css)$''',
'''dist/.*''',
'''build/.*''',
# Защита на случай возврата CMS exports / production logs в репо
# (см. инцидент 2026-05-24 с Ghost ghost_private_key + members_private_key).
# Сами файлы УЖЕ удалены из history через git filter-repo, allowlist —
# дополнительная защита для будущих commit'ов.
'''content/logs/.*''',
'''content/data/.*''',
'''.*\.production\.log(\.[0-9]+)?$''',
'''.*\.ghost\..*\.json$''',
]
# Конкретные паттерны, которые false-positive
regexes = [
# Наш scripts/indexnow.js: const KEY = '<32-hex>' — IndexNow public key.
'''const\s+KEY\s*=\s*['"][a-f0-9]{32}['"]''',
# Аналог для других форм объявления того же ключа.
'''KEY\s*[:=]\s*['"][a-f0-9]{32}['"]''',
]

View File

@@ -174,8 +174,17 @@ npm run preview
Если 4321 занят — Astro сам найдёт следующий свободный (4322 и т.д.). Если 4321 занят — Astro сам найдёт следующий свободный (4322 и т.д.).
## SEO — правила для контента
**Обязательно** для каждого нового поста/страницы в `src/content/{posts,pages}/*.md`:
- `description:` — уникальное, 120160 символов. **Не оставлять пустым** — пустая строка не падает на дефолт `SITE_DESCRIPTION`, а передаётся в `<meta>` как есть.
- `[slug].astro` передаёт `description={entry.data.description ?? ''}` → BaseLayout. Если `''` — meta пустой.
**RSS-агрегатор новостей:** источники добавляются в `src/data/feeds.json` (`{name, url, enabled: true, max}`). После push → CI → на следующем cron-тике (каждый час в `:12`) появятся на `/news/`.
## История ## История
- **2026-05-08:** v1 (WordPress 6.x) контейнеризован, миграция со str-u-01 на web.hhivp.com - **2026-05-08:** v1 (WordPress 6.x) контейнеризован, миграция со str-u-01 на web.hhivp.com
- **2026-05-14:** фикс trust-proxy.conf для Docker bridges (Better WP Security) - **2026-05-14:** фикс trust-proxy.conf для Docker bridges (Better WP Security)
- **2026-05-21:** v2 редизайн — Vite+React → Astro 5 (стек как у `anotherreflections-website-v2`). Cutover, бэкап старого WP в репо `pushkinohistory-ru` + БД на `db.hhivp.com` (~2 недели на наблюдение). - **2026-05-21:** v2 редизайн — Vite+React → Astro 5 (стек как у `anotherreflections-website-v2`). Cutover, бэкап старого WP в репо `pushkinohistory-ru` + БД на `db.hhivp.com` (~2 недели на наблюдение).
- **2026-05-30:** заполнены descriptions всем 11 страницам/постам (были пустыми → дубли в Я.Вебмастере).

View File

@@ -3,6 +3,7 @@
# ─── Stage 1: build static site (Astro SSG) ──────────────────────────────── # ─── Stage 1: build static site (Astro SSG) ────────────────────────────────
FROM node:22-alpine AS build FROM node:22-alpine AS build
WORKDIR /app WORKDIR /app
SHELL ["/bin/sh", "-o", "pipefail", "-c"]
COPY package.json package-lock.json* ./ COPY package.json package-lock.json* ./
RUN npm install --no-audit --no-fund RUN npm install --no-audit --no-fund

54
README.md Normal file
View File

@@ -0,0 +1,54 @@
# 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`](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/

45
SECURITY.md Normal file
View File

@@ -0,0 +1,45 @@
# Security Policy
## Supported versions
Только текущая версия `main` — site deployed continuously, отдельных release-веток нет.
## Reporting a vulnerability
Email: **admin@hhivp.com** (PGP опционально по запросу).
Просим **не публиковать** баг до подтверждения исправления (≤14 дней).
## Security stack (automated)
Этот репозиторий покрыт многоуровневой автоматической проверкой:
### Layer A — на каждый push в `main` (deploy CI)
- **Trivy** — сканирование Docker image на HIGH/CRITICAL CVE в OS-пакетах и npm-deps (warning-only, `--ignore-unfixed`).
- **npm audit** — проверка зависимостей на известные CVE в `Dockerfile` после `npm ci` (warning-only, `--audit-level=high --omit=dev`).
### Layer B — еженедельно (Sun 04:00 UTC, cron)
- **Nuclei** — DAST (Dynamic Application Security Testing) живого сайта. Шаблоны: exposures, misconfig, headers, CVE. Severity: HIGH+CRITICAL.
- Нотификация в Telegram при находках.
### Layer C — на каждый push в `main` + на MR/PR (`.gitea/workflows/security.yml`)
- **Hadolint** — bad practices в `Dockerfile`.
- **GitLeaks** — поиск секретов в git-истории (`fetch-depth: 0`).
- **Semgrep** — SAST (Static Application Security Testing) с конфигами `p/javascript`, `p/react`, `p/typescript`, `p/security-audit`.
Все три инструмента **warning-only** — не блокируют deploy, но finding'и видны в логах job'а.
### Дополнительно
- **152-ФЗ consent-gated analytics** — Я.Метрика и Google Analytics загружаются только после явного согласия пользователя в баннере cookies.
- **HTTPS-only** — Let's Encrypt cert, HSTS включён.
- **Security headers** — `X-Frame-Options`, `X-Content-Type-Options`, `Referrer-Policy`, `Permissions-Policy`, `Content-Security-Policy`.
- **Rate limiting** — на `/api/contact` (5 req/min per IP) + Cloudflare Turnstile widget.
## Contact
- Email: admin@hhivp.com
- Site: https://hhivp.com/

33
package-lock.json generated
View File

@@ -17,7 +17,6 @@
}, },
"devDependencies": { "devDependencies": {
"@types/sanitize-html": "^2.16.0", "@types/sanitize-html": "^2.16.0",
"fast-xml-parser": "^4.5.0",
"sharp": "^0.34.5" "sharp": "^0.34.5"
}, },
"engines": { "engines": {
@@ -2409,25 +2408,6 @@
"xml-naming": "^0.1.0" "xml-naming": "^0.1.0"
} }
}, },
"node_modules/fast-xml-parser": {
"version": "4.5.6",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.6.tgz",
"integrity": "sha512-Yd4vkROfJf8AuJrDIVMVmYfULKmIJszVsMv7Vo71aocsKgFxpdlpSHXSaInvyYfgw2PRuObQSW2GFpVMUjxu9A==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT",
"dependencies": {
"strnum": "^1.0.5"
},
"bin": {
"fxparser": "src/cli/cli.js"
}
},
"node_modules/fdir": { "node_modules/fdir": {
"version": "6.5.0", "version": "6.5.0",
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
@@ -4517,19 +4497,6 @@
"url": "https://github.com/sponsors/wooorm" "url": "https://github.com/sponsors/wooorm"
} }
}, },
"node_modules/strnum": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz",
"integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==",
"dev": true,
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/NaturalIntelligence"
}
],
"license": "MIT"
},
"node_modules/svgo": { "node_modules/svgo": {
"version": "4.0.1", "version": "4.0.1",
"resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz",

View File

@@ -10,7 +10,8 @@
"dev": "astro dev", "dev": "astro dev",
"build": "astro build", "build": "astro build",
"preview": "astro preview", "preview": "astro preview",
"astro": "astro" "astro": "astro",
"indexnow": "node scripts/indexnow.js"
}, },
"dependencies": { "dependencies": {
"@astrojs/rss": "^4.0.12", "@astrojs/rss": "^4.0.12",

View File

@@ -0,0 +1,6 @@
Contact: mailto:admin@pushkinohistory.ru
Contact: https://pushkinohistory.ru/privacy/
Expires: 2027-05-21T00:00:00.000Z
Preferred-Languages: ru, en
Canonical: https://pushkinohistory.ru/.well-known/security.txt
Policy: https://pushkinohistory.ru/privacy/

View File

@@ -0,0 +1 @@
9018cf11050b4f379b8cec01ae3239bb

7
public/hhivp-mark.svg Normal file
View File

@@ -0,0 +1,7 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 92 92" role="img" aria-label="hhivp" fill="currentColor">
<g transform="translate(-4 -2)">
<path d="M86.316,43.946V26.322h-8.331v9.961H70.46c-0.845-7.146-6.931-12.711-14.301-12.711H39.842c-7.37,0-13.456,5.564-14.301,12.711h-7.527v-6.162c3.013-1.554,4.934-4.675,4.934-8.083c0-3.775-2.382-7.199-5.928-8.519l-1.012-0.377v10.897H11.69V13.142l-1.012,0.376c-3.546,1.32-5.929,4.744-5.929,8.52c0,3.408,1.921,6.529,4.934,8.083v17.623h8.331v-9.96h7.428c-0.001,0.067-0.01,0.132-0.01,0.199v18.024c0,5.872,3.535,10.926,8.584,13.169l-1.052,4.606c-1.821,1.184-3.031,3.232-3.031,5.561c0,2.352,3.573,3.186,6.632,3.186c3.059,0,6.632-0.834,6.632-3.186c0-2.168-1.05-4.091-2.664-5.302l2.324-3.625h10.283l2.324,3.625c-1.614,1.211-2.664,3.133-2.664,5.301c0,2.352,3.573,3.186,6.632,3.186c3.06,0,6.632-0.834,6.632-3.186c0-2.33-1.209-4.378-3.03-5.562l-1.05-4.606c5.049-2.244,8.583-7.297,8.583-13.169V37.982c0-0.067-0.009-0.132-0.01-0.199h7.427v6.163c-3.012,1.553-4.932,4.674-4.932,8.083c0,3.775,2.382,7.199,5.928,8.52l1.012,0.377V50.027h4.317v10.898l1.012-0.377c3.545-1.32,5.928-4.744,5.928-8.52C91.25,48.62,89.329,45.5,86.316,43.946z M16.957,28.966l-0.442,0.199v17.079h-5.331V29.165l-0.442-0.199C8.013,27.74,6.25,25.021,6.25,22.038c0-2.778,1.546-5.329,3.94-6.649v10.151h7.318V15.388c2.394,1.321,3.939,3.872,3.939,6.649C21.448,25.021,19.685,27.74,16.957,28.966z M41.698,79.343c0,0.814-2.062,1.686-5.132,1.686c-3.07,0-5.132-0.872-5.132-1.686c0-2.83,2.303-5.132,5.133-5.132C39.396,74.211,41.698,76.513,41.698,79.343z M64.566,79.343c0,0.814-2.062,1.686-5.132,1.686c-3.07,0-5.132-0.872-5.132-1.686c0-2.83,2.303-5.132,5.133-5.132C62.264,74.211,64.566,76.513,64.566,79.343z M69.069,56.006c0,7.119-5.792,12.911-12.911,12.911H39.842c-7.119,0-12.91-5.792-12.91-12.911V37.982c0-7.119,5.792-12.91,12.91-12.91h16.316c7.119,0,12.911,5.792,12.911,12.91V56.006z M85.811,58.679V48.527h-7.317v10.151c-2.394-1.322-3.939-3.872-3.939-6.65c0-2.983,1.762-5.703,4.489-6.928l0.443-0.199v-17.08h5.331v17.08l0.443,0.199c2.728,1.226,4.491,3.945,4.491,6.928C89.75,54.808,88.205,57.358,85.811,58.679z"/>
<circle cx="40.222" cy="40.07" r="3.8"/>
<circle cx="55.78" cy="40.07" r="3.8"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

10
public/humans.txt Normal file
View File

@@ -0,0 +1,10 @@
/* SITE */
Site: История города Пушкино — pushkinohistory.ru
Last update: 2026-05-21
Standards: HTML5, CSS3, RSS 2.0
Components: Astro 6, nginx 1.29
Software: Docker, Gitea Actions
/* TEAM */
Maintained by: HHIVP
Contact: admin@pushkinohistory.ru

View File

@@ -4,8 +4,14 @@ Allow: /
# AI-crawlers # AI-crawlers
User-agent: GPTBot User-agent: GPTBot
Allow: / Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot User-agent: ClaudeBot
Allow: / Allow: /
User-agent: Applebot-Extended
Allow: /
User-agent: anthropic-ai User-agent: anthropic-ai
Allow: / Allow: /
User-agent: Google-Extended User-agent: Google-Extended

120
scripts/indexnow.js Normal file
View File

@@ -0,0 +1,120 @@
// IndexNow: уведомить Yandex/Bing о новых/обновлённых URL.
// Запускается после деплоя из CI или вручную:
// node scripts/indexnow.js
//
// IndexNow ключ хранится в файле public/<key>.txt — он должен быть доступен по
// тому же URL что и сайт, чтобы поисковики могли подтвердить ownership.
//
// Источник URL (по приоритету):
// 1) dist/sitemap-index.xml (Astro @astrojs/sitemap) + входящие sitemap-*.xml
// 2) dist/sitemap.txt / dist/sitemap.xml
// 3) fetch с прод-сайта: https://pushkinohistory.ru/sitemap-index.xml
// (для запуска из CI после удалённого деплоя — без локального build)
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const root = path.resolve(__dirname, '..');
const BASE = 'https://pushkinohistory.ru';
const HOST = 'pushkinohistory.ru';
const KEY = '9018cf11050b4f379b8cec01ae3239bb';
// На случай если кто-то удалит файл — пересоздадим автоматически.
const keyFile = path.join(root, 'public', `${KEY}.txt`);
if (!fs.existsSync(keyFile)) {
fs.writeFileSync(keyFile, KEY, 'utf-8');
console.log(`created key file: public/${KEY}.txt`);
}
function extractLocs(xml) {
return [...xml.matchAll(/<loc>([^<]+)<\/loc>/g)].map((m) => m[1].trim());
}
let urls = [];
const distDir = path.join(root, 'dist');
const sitemapIndex = path.join(distDir, 'sitemap-index.xml');
const sitemapTxt = path.join(distDir, 'sitemap.txt');
const fallbackTxt = path.join(distDir, 'sitemap.xml');
if (fs.existsSync(sitemapIndex)) {
const idx = fs.readFileSync(sitemapIndex, 'utf-8');
const subs = extractLocs(idx);
for (const sub of subs) {
// sub — абсолютный URL вида https://pushkinohistory.ru/sitemap-0.xml
const fname = sub.split('/').pop();
const localPath = path.join(distDir, fname);
if (fs.existsSync(localPath)) {
const subXml = fs.readFileSync(localPath, 'utf-8');
urls.push(...extractLocs(subXml));
} else {
console.warn(` sub-sitemap not found locally: ${localPath}`);
}
}
} else if (fs.existsSync(sitemapTxt)) {
urls = fs
.readFileSync(sitemapTxt, 'utf-8')
.split(/\r?\n/)
.map((l) => l.trim())
.filter((l) => l.startsWith('http'));
} else if (fs.existsSync(fallbackTxt)) {
const xml = fs.readFileSync(fallbackTxt, 'utf-8');
urls = extractLocs(xml);
} else {
console.log('no local sitemap found, fetching from production…');
try {
const idxResp = await fetch(`${BASE}/sitemap-index.xml`);
if (!idxResp.ok) throw new Error(`HTTP ${idxResp.status}`);
const idxXml = await idxResp.text();
const subs = extractLocs(idxXml);
for (const sub of subs) {
const subResp = await fetch(sub);
if (!subResp.ok) {
console.warn(` ${sub}: HTTP ${subResp.status}`);
continue;
}
const subXml = await subResp.text();
urls.push(...extractLocs(subXml));
}
} catch (e) {
console.error(`failed to fetch sitemap from ${BASE}: ${e.message}`);
process.exit(1);
}
}
// Дедупликация и фильтрация на всякий случай.
urls = [...new Set(urls)].filter((u) => u.startsWith(BASE));
if (urls.length === 0) {
console.error('no URLs collected — nothing to submit');
process.exit(1);
}
console.log(`Submitting ${urls.length} URLs to IndexNow…`);
const payload = {
host: HOST,
key: KEY,
keyLocation: `${BASE}/${KEY}.txt`,
urlList: urls,
};
async function submit(endpoint) {
try {
const r = await fetch(endpoint, {
method: 'POST',
headers: { 'Content-Type': 'application/json; charset=utf-8' },
body: JSON.stringify(payload),
});
console.log(` ${endpoint}: HTTP ${r.status}`);
} catch (e) {
console.error(` ${endpoint}: ${e.message}`);
}
}
await Promise.all([
submit('https://yandex.com/indexnow'),
submit('https://api.indexnow.org/indexnow'),
]);

View File

@@ -13,6 +13,14 @@ const year = new Date().getFullYear();
<a href="/privacy/">Политика</a> <a href="/privacy/">Политика</a>
</div> </div>
</div> </div>
<div class="container dev-credit">
<a href="https://hhivp.com/" target="_blank" rel="noopener" class="hhivp-credit" aria-label="Сделано в hhivp.com">
<span class="hhivp-credit-mark" aria-hidden="true">
<img src="/hhivp-mark.svg" alt="" width="20" height="20" />
</span>
<span class="hhivp-credit-text">Сделано&nbsp;в&nbsp;hhivp.com</span>
</a>
</div>
</footer> </footer>
<style> <style>
@@ -33,4 +41,42 @@ const year = new Date().getFullYear();
.footer-nav { display: flex; gap: 1.25rem; } .footer-nav { display: flex; gap: 1.25rem; }
.footer-nav a { color: var(--muted); text-decoration: none; } .footer-nav a { color: var(--muted); text-decoration: none; }
.footer-nav a:hover { color: var(--accent); } .footer-nav a:hover { color: var(--accent); }
.dev-credit {
margin-top: 0.75rem;
color: var(--muted);
text-align: center;
}
.hhivp-credit {
display: inline-flex;
align-items: center;
vertical-align: middle;
text-decoration: none;
color: inherit;
border: 1px solid currentColor;
border-radius: 999px;
padding: 3px;
gap: 0;
line-height: 1;
opacity: 0.6;
transition: gap 240ms ease, padding-right 240ms ease, opacity 240ms ease;
}
.hhivp-credit:hover,
.hhivp-credit:focus-visible {
opacity: 1;
gap: 8px;
padding-right: 12px;
outline: none;
}
.hhivp-credit-mark { display: inline-flex; flex-shrink: 0; }
.hhivp-credit-mark img { display: block; width: 20px; height: 20px; }
.hhivp-credit-text {
display: inline-block;
overflow: hidden;
white-space: nowrap;
max-width: 0;
font-size: 0.74rem;
transition: max-width 240ms ease;
}
.hhivp-credit:hover .hhivp-credit-text,
.hhivp-credit:focus-visible .hhivp-credit-text { max-width: 200px; }
</style> </style>

View File

@@ -1,16 +1,22 @@
--- ---
title: "Главная" title: "Главная"
slug: dobro-pozhalovat slug: dobro-pozhalovat
legacyId: 23 legacyId: 23
pubDate: 2010-02-22T18:52:14+03:00 pubDate: 2010-02-22T18:52:14+03:00
description: "" description: "Портал об истории, настоящем и будущем города Пушкино: краеведческие материалы, фотоархив и форум для жителей и всех, кто интересуется историей Пушкинского района."
oldSlug: "%d0%b4%d0%be%d0%b1%d1%80%d0%be-%d0%bf%d0%be%d0%b6%d0%b0%d0%bb%d0%be%d0%b2%d0%b0%d1%82%d1%8c" oldSlug: "%d0%b4%d0%be%d0%b1%d1%80%d0%be-%d0%bf%d0%be%d0%b6%d0%b0%d0%bb%d0%be%d0%b2%d0%b0%d1%82%d1%8c"
--- ---
<p style="text-align: center;"><strong><span style="color: #000000; size: 18;"><a href="/uploads/IMG_2156.jpg"><img class="aligncenter size-medium wp-image-42" title="Пушкино с высоты" src="/uploads/IMG_2156.jpg" alt="" width="300" height="225" /></a></span></strong></p> <p style="text-align: center;"><strong><span style="color: #000000; size: 18;"><a href="/uploads/IMG_2156.jpg"><img class="aligncenter size-medium wp-image-42" title="Пушкино с высоты" src="/uploads/IMG_2156.jpg" alt="" width="300" height="225" /></a></span></strong></p>
<p style="text-align: center;"><strong><span style="color: #000000; size: 18;">Приветствуем Вас на страницах портала, посвященного</span></strong></p> <p style="text-align: center;"><strong><span style="color: #000000; size: 18;">Приветствуем Вас на страницах портала, посвященного</span></strong></p>
<p style="text-align: center;"><strong>истории города Пушкино и всего что с ним связано!</strong></p> <p style="text-align: center;"><strong>истории города Пушкино и всего что с ним связано!</strong></p>
<p>В настоящее время портал находится в стадии разработки, но уже запущен тестовый <span style="text-decoration: underline;"><a href="http://forum.pushkinohistory.ru/">форум</a></span>, на котором уже можно общаться как с нами, создателями сайта, так и с другими пользователями. Надеемся, что вам здесь понравится!</p> <p>В настоящее время портал находится в стадии разработки, но уже запущен тестовый <span style="text-decoration: underline;"><a href="http://forum.pushkinohistory.ru/">форум</a></span>, на котором уже можно общаться как с нами, создателями сайта, так и с другими пользователями. Надеемся, что вам здесь понравится!</p>
<p style="text-align: right;">С уважением, администрация портала!</p>
<p style="text-align: center;"><a href="/uploads/IMG_2754.jpg"><img class="aligncenter size-medium wp-image-50" title="Мемориал" src="/uploads/IMG_2754.jpg" alt="" width="300" height="217" /></a></p>

View File

@@ -1,12 +1,15 @@
--- ---
title: "Форум" title: "Форум"
slug: forum slug: forum
legacyId: 94 legacyId: 94
pubDate: 2010-04-02T11:00:52+03:00 pubDate: 2010-04-02T11:00:52+03:00
description: "" description: "Форум сайта pushkinohistory.ru — площадка для общения жителей и гостей города Пушкино, обсуждения истории, новостей и событий."
--- ---
<p><meta http-equiv="Refresh" content="0;url=http://forum.pushkinohistory.ru"><br /> <p><meta http-equiv="Refresh" content="0;url=http://forum.pushkinohistory.ru"><br />
<center>перенаправление на форум....<br /> <center>перенаправление на форум....<br />
не хотите ждать - нажмите <b><a href="http://forum.pushkinohistory.ru" target="_self">сюда</a></b></center></p>

View File

@@ -1,21 +1,32 @@
--- ---
title: "Фото" title: "Фото"
slug: foto slug: foto
legacyId: 73 legacyId: 73
pubDate: 2010-03-27T23:00:41+03:00 pubDate: 2010-03-27T23:00:41+03:00
description: "" description: "Фотоархив города Пушкино: исторические и современные фотографии, виды города в разные эпохи."
oldSlug: "%d1%84%d0%be%d1%82%d0%be" oldSlug: "%d1%84%d0%be%d1%82%d0%be"
--- ---
<table style="height: 100%;" border="0" cellspacing="0" cellpadding="0" width="100%" align="center"> <table style="height: 100%;" border="0" cellspacing="0" cellpadding="0" width="100%" align="center">
<tbody> <tbody>
<tr width="100%"> <tr width="100%">
<td width="50%" align="center" valign="middle"> <td width="50%" align="center" valign="middle">
[caption id="attachment_87" align="aligncenter" width="150" caption="Прошлое"]<a href="http://www.pushkinohistory.ru/archives/75"><img class="size-full wp-image-87" title="pushkino" src="/uploads/pushkino.jpg" alt="Прошлое" width="150" height="200" /></a>[/caption]</td> [caption id="attachment_87" align="aligncenter" width="150" caption="Прошлое"]<a href="http://www.pushkinohistory.ru/archives/75"><img class="size-full wp-image-87" title="pushkino" src="/uploads/pushkino.jpg" alt="Прошлое" width="150" height="200" /></a>[/caption]</td>
<td width="50%" align="center" valign="middle">
[caption id="attachment_85" align="aligncenter" width="156" caption="Настоящее"]<a href="http://www.pushkinohistory.ru/archives/90"><img class="size-full wp-image-85 " title="pushkin1" src="/uploads/pushkin1.gif" alt="Настоящее" width="156" height="200" /></a>[/caption]</td>
</tr>
</tbody>
</table>

View File

@@ -1,59 +1,109 @@
--- ---
title: "История" title: "История"
slug: history slug: history
legacyId: 20 legacyId: 20
pubDate: 2010-02-22T18:46:33+03:00 pubDate: 2010-02-22T18:46:33+03:00
description: "" description: "История города Пушкино с XIV века: от боярина Григория Пушки до современного города. Краеведческие материалы, архивные сведения, история поселений Пушкинского района."
--- ---
<div id="postContainer32317411"> <div id="postContainer32317411">
<div id="post32317411"> <div id="post32317411">
<div> <div>
<div id="comment32317411"><a href="/uploads/post-78-1227537465.jpg"><img class="size-medium wp-image-39 alignleft" title="Станция Пушкино" src="/uploads/post-78-1227537465.jpg" alt="" width="300" height="191" /></a>По наиболее распространённой версии, название Пушкино произошло во второй половине XIV века, когда местностью по реке Уче владел боярин Григорий Александрович Морхинин, по прозвищу Пушка — предок поэта Александра Сергеевича Пушкина.Историк С. Б. Веселовский указывает: «По актам известно, что в конце XV века оно принадлежало как „старинное“ митрополитам всея Руси, а после учреждения патриаршества стало домовой вотчиной патриархов. Как и когда оно досталось митрополичьему дому, неизвестно. Возможно, что оно было приобретено в третьей четверти XIV в. митрополитом Алексеем непосредственно у Григория Пушки, но не исключена возможность, что оно было отчуждено кем-либо из многочисленных потомков Григория Пушки в XV в.». <div id="comment32317411"><a href="/uploads/post-78-1227537465.jpg"><img class="size-medium wp-image-39 alignleft" title="Станция Пушкино" src="/uploads/post-78-1227537465.jpg" alt="" width="300" height="191" /></a>По наиболее распространённой версии, название Пушкино произошло во второй половине XIV века, когда местностью по реке Уче владел боярин Григорий Александрович Морхинин, по прозвищу Пушка — предок поэта Александра Сергеевича Пушкина.Историк С. Б. Веселовский указывает: «По актам известно, что в конце XV века оно принадлежало как „старинное“ митрополитам всея Руси, а после учреждения патриаршества стало домовой вотчиной патриархов. Как и когда оно досталось митрополичьему дому, неизвестно. Возможно, что оно было приобретено в третьей четверти XIV в. митрополитом Алексеем непосредственно у Григория Пушки, но не исключена возможность, что оно было отчуждено кем-либо из многочисленных потомков Григория Пушки в XV в.».
Первое документальное упоминание о селе Пушкино относится к 1499 году («писцовая книга князя В. И. Голенина на митрополичье село Пушкино Московского уезда»). Село находилось на древнейшей в Северо-Восточной Руси торговой дороге по пути в Переславль, Ярославль, Вологду, что способствовало росту его населения и высокому достатку жителей. Первое документальное упоминание о селе Пушкино относится к 1499 году («писцовая книга князя В. И. Голенина на митрополичье село Пушкино Московского уезда»). Село находилось на древнейшей в Северо-Восточной Руси торговой дороге по пути в Переславль, Ярославль, Вологду, что способствовало росту его населения и высокому достатку жителей.
Летний театр в городском парке, начало 20 века Летний театр в городском парке, начало 20 века
Во 2-й половине XVIII века начинает развиваться ткацкий промысел: производство шерстяного сукна, каразеи, кушаков, шёлковых платков. В 1-й половине XIX века в с. Пушкино в это время открываются медный завод, шерстоткацкая фабрика, оснащённая одной из первых в Московском уезде механическими станками. К концу 19 столетия село превратилось в фабричный центр. Во 2-й половине XVIII века начинает развиваться ткацкий промысел: производство шерстяного сукна, каразеи, кушаков, шёлковых платков. В 1-й половине XIX века в с. Пушкино в это время открываются медный завод, шерстоткацкая фабрика, оснащённая одной из первых в Московском уезде механическими станками. К концу 19 столетия село превратилось в фабричный центр.
В 1867 года началось дачное строительство. В 1868 году было открыто земское училище для детей от 8 до 14 лет. В 1890 году на средства Арманда открылась библиотека. В 1867 года началось дачное строительство. В 1868 году было открыто земское училище для детей от 8 до 14 лет. В 1890 году на средства Арманда открылась библиотека.
В 1880 году недалеко от станции был разбит парк, и он стал излюбленным местом отдыха пушкинских дачников. В 1896 году на средства страхового общества «Якорь» был выстроен в парке летний театр, сгоревший летом 1993 года. В 1880 году недалеко от станции был разбит парк, и он стал излюбленным местом отдыха пушкинских дачников. В 1896 году на средства страхового общества «Якорь» был выстроен в парке летний театр, сгоревший летом 1993 года.
По данным справочника 1890 года в селе Пушкино, которое тогда входило в Мытищинскую волость Московского уезда Московской губернии, проживало 1164 человека, а в 1899 году проживало уже 1560 человек. Согласно границам населённых пунктов того времени село Пушкино находилось в 27 километрах от Москвы и в полутора километрах от станции «Пушкино» Московско-Ярославско-Архангельской железной дороги. От вокзала до станции «Пушкино» 30 километров. В то время в Пушкине располагалась квартира урядника, земское училище, училище при фабрике Арманд и богадельня. По данным справочника 1890 года в селе Пушкино, которое тогда входило в Мытищинскую волость Московского уезда Московской губернии, проживало 1164 человека, а в 1899 году проживало уже 1560 человек. Согласно границам населённых пунктов того времени село Пушкино находилось в 27 километрах от Москвы и в полутора километрах от станции «Пушкино» Московско-Ярославско-Архангельской железной дороги. От вокзала до станции «Пушкино» 30 километров. В то время в Пушкине располагалась квартира урядника, земское училище, училище при фабрике Арманд и богадельня.
В справочнике 1912 года на месте современного города указано два различных населённых пункта: В справочнике 1912 года на месте современного города указано два различных населённых пункта:
* село Пушкино в 233 двора, расположенное в 2,7 км от станции «Пушкино». В селе находились квартиры 2-х урядников, земское училище, фабрика Арманд, больница при фабрике и аптека, церковно-приходская школа, потребительская лавка, вольная пожарная дружина, казённая винная лавка, трактир 2-го разряда, трактир 3-го разряда, ренсковый погреб, две пивных трактирного промысла. * село Пушкино в 233 двора, расположенное в 2,7 км от станции «Пушкино». В селе находились квартиры 2-х урядников, земское училище, фабрика Арманд, больница при фабрике и аптека, церковно-приходская школа, потребительская лавка, вольная пожарная дружина, казённая винная лавка, трактир 2-го разряда, трактир 3-го разряда, ренсковый погреб, две пивных трактирного промысла.
* отдельно указано дачное место «Пушкино», расположенное в непосредственной близости от ж/д станции «Пушкино», без указания количества домов. В дачном месте находилась квартира пристава 4 стана и конно-полицейской стражи и церковно-приходская школа. Кроме того, в справочнике 1909 года в дачном посёлке числятся приют для выздоравливающих детей Беренштама, приют для излечения душевнобольных привилегированного сословия и лечебница Голубевской.<!--more-->В 1914 году в селе Пушкине располагалась почтово-телеграфная контора (заведующий Н. И. Лаврентьев). Почтовый адрес на станции «Пушкино» в 1914 году имело несколько предприятий: кирпичный завод Дмитриева в д. Чапчиково, шерстопрядильная фабрика братьев Кеворковых при с. Курове, шерстопрядильная, ткацкая и отделочная фабрика товарищества Лыжина при с. Вантеевке, красильно-аппретурная фабрика товарищества Ветерме, аппретурная фабрика Копылова и Анкудинова при д. Немичнове. Непосредственно в селе Пушкино находились два предприятия: * отдельно указано дачное место «Пушкино», расположенное в непосредственной близости от ж/д станции «Пушкино», без указания количества домов. В дачном месте находилась квартира пристава 4 стана и конно-полицейской стражи и церковно-приходская школа. Кроме того, в справочнике 1909 года в дачном посёлке числятся приют для выздоравливающих детей Беренштама, приют для излечения душевнобольных привилегированного сословия и лечебница Голубевской.<!--more-->В 1914 году в селе Пушкине располагалась почтово-телеграфная контора (заведующий Н. И. Лаврентьев). Почтовый адрес на станции «Пушкино» в 1914 году имело несколько предприятий: кирпичный завод Дмитриева в д. Чапчиково, шерстопрядильная фабрика братьев Кеворковых при с. Курове, шерстопрядильная, ткацкая и отделочная фабрика товарищества Лыжина при с. Вантеевке, красильно-аппретурная фабрика товарищества Ветерме, аппретурная фабрика Копылова и Анкудинова при д. Немичнове. Непосредственно в селе Пушкино находились два предприятия:
* Суконная фабрика Товарищества Суконной Мануфактуры, заведующий Н. С. Масленников (основана в 1883 году, в 1914 году 257 работающих, из которых 257 — мужчины); * Суконная фабрика Товарищества Суконной Мануфактуры, заведующий Н. С. Масленников (основана в 1883 году, в 1914 году 257 работающих, из которых 257 — мужчины);
* Механическая ткацкая и красильно-отделочная фабрика Е. Арманд, заведующий А. Л. Коль (основана в 1860 году, в 1914 году 1059 работающих, из которых 600 — мужчины). * Механическая ткацкая и красильно-отделочная фабрика Е. Арманд, заведующий А. Л. Коль (основана в 1860 году, в 1914 году 1059 работающих, из которых 600 — мужчины).
В 1914 году в селе Пушкине была аптека (провизор — В. Ф. Блументаль), Андреевская больница при фабрике Арманд (врачи А. Л. Коль и В. Ф. Буров), Богадельня для престарелых фабричных рабочих обоего пола, учреждённая потомственным почётным гражданином Евгением Ивановичем Арманд (заведующий Е. И. Арманд, призреваемых 18 человек). При станции «Пушкино» действовал приют императорского человеколюбивого общества для выздоравливающих детей имени Альберта и Анны Беренштам (заведующая Е. А. Алексеева, призреваемых 30 детей). В 1914 году в Пушкине было несколько начальных учебных заведений разных ведомств: Пушкинское I-е и Пушкинское II-е начальные земские начальные училища, начальная Пушкинская церковно-приходская школа.7 августа 1925 года Пушкино получает статус города. В его состав вошёл дачный посёлок у станции и часть села Пушкино. 12 июня 1929 года город Пушкино стал районным центром. В состав района вошли два рабочих посёлка — Ивантеевка и Красноармейск, дачный посёлок Мамонтовка; Софринская, Путиловская, Пушкинская волости; несколько селений Щелковской и Хотьковской волостей. В том же году из Москвы в Пушкино прошла первая электричка. Через год электропоезда шли уже до станции Правда. В 1914 году в селе Пушкине была аптека (провизор — В. Ф. Блументаль), Андреевская больница при фабрике Арманд (врачи А. Л. Коль и В. Ф. Буров), Богадельня для престарелых фабричных рабочих обоего пола, учреждённая потомственным почётным гражданином Евгением Ивановичем Арманд (заведующий Е. И. Арманд, призреваемых 18 человек). При станции «Пушкино» действовал приют императорского человеколюбивого общества для выздоравливающих детей имени Альберта и Анны Беренштам (заведующая Е. А. Алексеева, призреваемых 30 детей). В 1914 году в Пушкине было несколько начальных учебных заведений разных ведомств: Пушкинское I-е и Пушкинское II-е начальные земские начальные училища, начальная Пушкинская церковно-приходская школа.7 августа 1925 года Пушкино получает статус города. В его состав вошёл дачный посёлок у станции и часть села Пушкино. 12 июня 1929 года город Пушкино стал районным центром. В состав района вошли два рабочих посёлка — Ивантеевка и Красноармейск, дачный посёлок Мамонтовка; Софринская, Путиловская, Пушкинская волости; несколько селений Щелковской и Хотьковской волостей. В том же году из Москвы в Пушкино прошла первая электричка. Через год электропоезда шли уже до станции Правда.
Во время ВОВ свыше 36 тысяч жителей района были направлены в вооружённые силы. На территории Пушкинского района среди прочих была сформирована легендарная отдельная мотострелковая бригада особого назначения (ОМСБОН).Осенью 1941 года линия фронта проходила в 25 км от Пушкино и в 15 км от Тишково. В строительстве оборонительных сооружений на ближних подступах к столице в октябре-ноябре участвовало более 15 тысяч пушкинцев.
В 1953 году, город Пушкино был отнесён к категории городов областного подчинения. Началось бурное строительство, был застроен Московский проспект, построен микрорайон «Серебрянка». В 1970-е годы — микрорайон «Дзержинец».
Поэт Владимир Маяковский жил в Пушкино в летние сезоны 1920—1928 гг. Стало хрестоматийным стихотворение «Необычайное приключение», где вместо эпиграфа — точный адрес проживания поэта: «Пушкино. Акулова гора, дача Румянцева, 27 вёрст по Ярославской железной дороге». В 1969 году на Акуловой горе открылась библиотека — музей поэта.В 2009 году от дачи не осталось и следа, лишь поляна среди старых лип. И только памятник В.В. Маяковскому на вершине Акуловой горы напоминает о прошлых годах. В городе Пушкино находился приход убитого православного протоиерея Александра Меня (район Новая Деревня).
В Пушкинском районе действуют пять высших учебных заведений.
* Российский государственный университет туризма и сервиса
* Академия экономической безопасности МВД России
* Академия государственной противопожарной службы Министерства по делам ГО и ЧС и ликвидации последствий стихийных бедствий
* Институт технологии туризма
* Современная гуманитарная академия (Пушкинский филиал)
В районе работают также 46 общеобразовательных школ и шесть средних специальных образовательных учреждения.
* 2-е Московское областное музыкальное училище имени С. С. Прокофьева
* Пушкинский медицинский колледж
* Московский колледж сервиса
* Правдинский лесхоз-техникум
* Школа усовершенствования руководящего состава ведомственной охраны МПС РФ (набор учащихся не ведётся, преподавательский состав расформирован)
* Колледж экономики, политики и права
* Гимназия № 10 г. Пушкино
Пушкино — один из центров лесной науки России. На территории города находится Всероссийский научно-исследовательский институт лесоводства и механизации лесного хозяйства (ВНИИЛМ). Здание ВНИИЛМ расположено в центре дендрологического парка площадью 13 га.
Через Пушкино проходят Ярославское шоссе и линия железной дороги на Ярославль и Архангельск, являющаяся также началом Транссибирской магистрали. Моторвагонное депо Пушкино является главным на линии Москва — Сергиев Посад, железнодорожная станция — конечным пунктом многих электричек.
</div>
</div>
</div>
</div>

View File

@@ -1,23 +1,27 @@
--- ---
title: "C наступающим Новым 2014 Годом!" title: "C наступающим Новым 2014 Годом!"
slug: c-nastupayushhim-novym-2014-godom slug: c-nastupayushhim-novym-2014-godom
legacyId: 145 legacyId: 145
pubDate: 2013-12-31T19:29:10+03:00 pubDate: 2013-12-31T19:29:10+03:00
description: "" description: "Поздравление с Новым 2014 годом от администрации краеведческого портала pushkinohistory.ru."
categories: categories:
- "Главная" - "Главная"
- "Настоящее" - "Настоящее"
- "Техническое" - "Техническое"
categorySlugs: categorySlugs:
- "main" - "main"
- "today" - "today"
- "tech" - "tech"
author: "История города Пушкино" author: "История города Пушкино"
hideFromList: true hideFromList: true
--- ---
От лица администрации и от себя лично поздравляю всех с Новым годом! Желаю всем счастья, здоровья, сбытия всех Ваших мечт, финансового и душевного спокойствия, искорки в глазах и успехов в выполнении всех Ваших начинаний.Постарайтесь забыть все то плохое, что у Вас может быть случилось, помните, что свою жизнь Вы делаете и сами, а значит нужно стремиться к самому лучшему! Еще раз всех с праздником, до встречи уже в Новом году!) От лица администрации и от себя лично поздравляю всех с Новым годом! Желаю всем счастья, здоровья, сбытия всех Ваших мечт, финансового и душевного спокойствия, искорки в глазах и успехов в выполнении всех Ваших начинаний.Постарайтесь забыть все то плохое, что у Вас может быть случилось, помните, что свою жизнь Вы делаете и сами, а значит нужно стремиться к самому лучшему! Еще раз всех с праздником, до встречи уже в Новом году!)
&nbsp; &nbsp;
admin &amp; pushkinohistory.ru

View File

@@ -3,7 +3,7 @@ title: "Первые 20-градусные морозы"
slug: pervye-20-gradusnye-morozy slug: pervye-20-gradusnye-morozy
legacyId: 235 legacyId: 235
pubDate: 2026-01-05T02:26:32+03:00 pubDate: 2026-01-05T02:26:32+03:00
description: "" description: "Синоптики прогнозируют первые 20-градусные морозы в Москве и Московской области — местами до -25°C к концу следующей недели."
categories: categories:
- "Главная" - "Главная"
categorySlugs: categorySlugs:

View File

@@ -3,7 +3,7 @@ title: "Сегодня ночью россияне увидят первое с
slug: segodnya-nochyu-rossiyane-uvidyat-pervoe slug: segodnya-nochyu-rossiyane-uvidyat-pervoe
legacyId: 226 legacyId: 226
pubDate: 2026-01-04T04:19:20+03:00 pubDate: 2026-01-04T04:19:20+03:00
description: "" description: "Волчья Луна — первое суперполнолуние 2026 года: в ночь с 3 на 4 января Луна приблизится к Земле на максимальное расстояние, диск будет на 15% ярче обычного."
categories: categories:
- "Главная" - "Главная"
categorySlugs: categorySlugs:

View File

@@ -1,22 +1,28 @@
--- ---
title: "Старое, Старое Село" title: "Старое, Старое Село"
slug: staroe-staroe-selo slug: staroe-staroe-selo
legacyId: 137 legacyId: 137
pubDate: 2012-05-16T18:28:48+03:00 pubDate: 2012-05-16T18:28:48+03:00
description: "" description: "История древнего села в Пушкинском районе с XIV века: боярские владения, усадьбы Несвицких, предание о море и возрождении поселения. Автор — Василий Коршун."
categories: categories:
- "Главная" - "Главная"
categorySlugs: categorySlugs:
- "main" - "main"
author: "История города Пушкино" author: "История города Пушкино"
featured: true featured: true
featuredImage: "/uploads/IMG_2754.jpg" featuredImage: "/uploads/IMG_2754.jpg"
--- ---
<div align="justify"> Старое село и вправду является одним из древнейших поселений на территории Пушкинского района. По данным археологов оно возникло в конце XIII первой четверти XIV веков. Его возникновение связано, скорее всего, с началом бурного развития Московского княжества после татаро-монгольского нашествия. Расцвет села был, видимо, во второй половине XV в. Письменные источники доносят до нас весть о существовании в 1495-99 гг. <span style="color: #009900;"><em><span style="color: #006600;">Веденской*</span> </em></span>волости, принадлежавшей Великому Князю Иоанну Васильевичу. Несложный анализ топонимики позволяет предположить, что центром волости было село с церковью Введения во храм Пресвятой Богородицы. Нет особых оснований предполагать, что речь идет о каком-то другом поселении, так как Веденская в верховьях Прорванихи упоминается в 1503 г., правда, уже как деревня. Что ж, пожары церквей в те времена были делом обыденным… Согласно местной легенде, в незапамятные времена в селе произошел мор. Выжившие жители покинули насиженные места и, спустившись вниз по реке, основали селение с тем же названием. Видимо, речь в предании идет об эпидемии 1571 г., после которой село и вправду запустело. К этому же периоду относится основание села Введенского, которое дожило до нашего времени под тем же названием. Продолжая изучать вышеупомянутую легенду, мы узнаем, что жителей постоянно тянуло в родные места, и, спустя некоторое время, они вернулись на пепелище, основав поселение с названием Старое Веденское. И действительно, в середине XVII в. писцовые книги упоминают село Старое Веденское владения дьяка Семена Филатовича Домашнева. Как мы видим, местное придание целиком подтверждается документально. Это достаточно редкое явление, так как полет народной фантазии в вопросах трактования топонимики просто потрясающий! Что только не придумывают! Возьмем хотя бы то же Пушкино. И по Уче оно стояло (Поучкино), и пушки здесь отливали, и к опушке леса оно тяготело… Правда, мне видится, наиболее правдоподобным вариант академика С.Б. Веселовского, предполагавшего, что первым владельцем селения был в начале XIV века боярин Григорий Алек­сандрович Морхинин по прозвищу Пушка, и оно получило название по его имени, но документаль­ных доказательств этого нет. Действительно, почти 80% процентов древних названий связано с именами и фамилиями владельцев (<span style="color: #006600;"><em>Борково*, Елдегино*</em>,</span> Курово, Муромцево, Рахманово,<span style="color: #006600;"><em>Сафарино*</em></span>, Тишково, Царево и др.) На втором месте идут названия по церквям (Богородское, Введенское, Спасское и т.д.), на третьем особенности местности (Березняки, Могильцы, Нагорное, Подлипки, Подвязное и т.д.). Прочие варианты крайне редки, особенно для Московской области.</div> <div align="justify"> Старое село и вправду является одним из древнейших поселений на территории Пушкинского района. По данным археологов оно возникло в конце XIII первой четверти XIV веков. Его возникновение связано, скорее всего, с началом бурного развития Московского княжества после татаро-монгольского нашествия. Расцвет села был, видимо, во второй половине XV в. Письменные источники доносят до нас весть о существовании в 1495-99 гг. <span style="color: #009900;"><em><span style="color: #006600;">Веденской*</span> </em></span>волости, принадлежавшей Великому Князю Иоанну Васильевичу. Несложный анализ топонимики позволяет предположить, что центром волости было село с церковью Введения во храм Пресвятой Богородицы. Нет особых оснований предполагать, что речь идет о каком-то другом поселении, так как Веденская в верховьях Прорванихи упоминается в 1503 г., правда, уже как деревня. Что ж, пожары церквей в те времена были делом обыденным… Согласно местной легенде, в незапамятные времена в селе произошел мор. Выжившие жители покинули насиженные места и, спустившись вниз по реке, основали селение с тем же названием. Видимо, речь в предании идет об эпидемии 1571 г., после которой село и вправду запустело. К этому же периоду относится основание села Введенского, которое дожило до нашего времени под тем же названием. Продолжая изучать вышеупомянутую легенду, мы узнаем, что жителей постоянно тянуло в родные места, и, спустя некоторое время, они вернулись на пепелище, основав поселение с названием Старое Веденское. И действительно, в середине XVII в. писцовые книги упоминают село Старое Веденское владения дьяка Семена Филатовича Домашнева. Как мы видим, местное придание целиком подтверждается документально. Это достаточно редкое явление, так как полет народной фантазии в вопросах трактования топонимики просто потрясающий! Что только не придумывают! Возьмем хотя бы то же Пушкино. И по Уче оно стояло (Поучкино), и пушки здесь отливали, и к опушке леса оно тяготело… Правда, мне видится, наиболее правдоподобным вариант академика С.Б. Веселовского, предполагавшего, что первым владельцем селения был в начале XIV века боярин Григорий Алек­сандрович Морхинин по прозвищу Пушка, и оно получило название по его имени, но документаль­ных доказательств этого нет. Действительно, почти 80% процентов древних названий связано с именами и фамилиями владельцев (<span style="color: #006600;"><em>Борково*, Елдегино*</em>,</span> Курово, Муромцево, Рахманово,<span style="color: #006600;"><em>Сафарино*</em></span>, Тишково, Царево и др.) На втором месте идут названия по церквям (Богородское, Введенское, Спасское и т.д.), на третьем особенности местности (Березняки, Могильцы, Нагорное, Подлипки, Подвязное и т.д.). Прочие варианты крайне редки, особенно для Московской области.</div>
<div align="justify">     Однако вернемся в наше Старое Село. С конца XVII в. сельцо Старое Веденское принадлежало князьям Несвицким, род которых идет от великого князя литовского Гедимина: в 1704 г. стольнику Ивану Михайловичу Несвицкому, в 1709 г. его сыну Михаилу Ивановичу, а в 1720 г. вдове Михаила Иванович Марии Ивановне. Затем сельцо унаследовал их сын лейб гвардии Семеновского полка поручик князь Василий Михайлович Несвицкий, а в 1768 г. его брат Николай Михайлович. Тогда сельцо представляло собой типичную сельскую помещичью средней руки усадьбу той поры. Там находился деревянный господский дом, хозяйственные постройки и парк с диагональными аллеями при двух прудах. Интересно, что Василий Михайлович имел дом в Москве, который впоследствии принадлежал П.А. Офросимову, о котором уже в этом году сообщалось как о владельце сельца Паршино. Однако постепенно усадьба в Старом Веденском приходит в упадок и в 1852 г. селение упоминается как деревня Старое Село, владение коллежской советницы Марии Осиповны Зверевой. Под этим названием оно известно и в наши дни. <div align="justify">     Однако вернемся в наше Старое Село. С конца XVII в. сельцо Старое Веденское принадлежало князьям Несвицким, род которых идет от великого князя литовского Гедимина: в 1704 г. стольнику Ивану Михайловичу Несвицкому, в 1709 г. его сыну Михаилу Ивановичу, а в 1720 г. вдове Михаила Иванович Марии Ивановне. Затем сельцо унаследовал их сын лейб гвардии Семеновского полка поручик князь Василий Михайлович Несвицкий, а в 1768 г. его брат Николай Михайлович. Тогда сельцо представляло собой типичную сельскую помещичью средней руки усадьбу той поры. Там находился деревянный господский дом, хозяйственные постройки и парк с диагональными аллеями при двух прудах. Интересно, что Василий Михайлович имел дом в Москве, который впоследствии принадлежал П.А. Офросимову, о котором уже в этом году сообщалось как о владельце сельца Паршино. Однако постепенно усадьба в Старом Веденском приходит в упадок и в 1852 г. селение упоминается как деревня Старое Село, владение коллежской советницы Марии Осиповны Зверевой. Под этим названием оно известно и в наши дни.
</div> </div>
<div align="justify">   <em>  <span style="color: #006600;">* Названия приведены по написанию их в документах XV-XVIII вв. С этим связана одна буква «В» в названии Введенское. В названиях владельческих сел явно читаются фамилии владельцев Борков, Елдегин, Сафарин.</span></em></div> <div align="justify">   <em>  <span style="color: #006600;">* Названия приведены по написанию их в документах XV-XVIII вв. С этим связана одна буква «В» в названии Введенское. В названиях владельческих сел явно читаются фамилии владельцев Борков, Елдегин, Сафарин.</span></em></div>
Василий Коршун
Опубликовано: Пушкинский Вестник, № 2(259)  2005

View File

@@ -1,18 +1,19 @@
--- ---
title: "Внимание! Технические работы!" title: "Внимание! Технические работы!"
slug: vnimanie-texnicheskie-raboty-2 slug: vnimanie-texnicheskie-raboty-2
legacyId: 158 legacyId: 158
pubDate: 2015-05-29T01:33:35+03:00 pubDate: 2015-05-29T01:33:35+03:00
description: "" description: "2 июня 2015 года с 3:00 до 4:00 возможны кратковременные перебои в работе сайта в связи с плановыми техническими работами на серверах."
categories: categories:
- "Главная" - "Главная"
- "Техническое" - "Техническое"
categorySlugs: categorySlugs:
- "main" - "main"
- "tech" - "tech"
author: "История города Пушкино" author: "История города Пушкино"
hideFromList: true hideFromList: true
--- ---
2  июня  2015г. с 3 до 4 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с предоставлением услуг длительностью до 30 минут. 2  июня  2015г. с 3 до 4 утра, в связи с проведением технических работ на площадке оператора связи, обслуживающего нашу инфраструктуру, возможны перебои с предоставлением услуг длительностью до 30 минут.
Приносим  Вам  свои извинения за доставленные неудобства и надеемся на Ваше понимание!

View File

@@ -1,17 +1,19 @@
--- ---
title: "Внимание! Технические работы!" title: "Внимание! Технические работы!"
slug: vnimanie-texnicheskie-raboty slug: vnimanie-texnicheskie-raboty
legacyId: 142 legacyId: 142
pubDate: 2013-08-24T00:56:06+03:00 pubDate: 2013-08-24T00:56:06+03:00
description: "" description: "24 августа 2013 года с 2:00 до 4:00 возможны кратковременные перебои в работе сайта в связи с техническими работами на серверах."
categories: categories:
- "Главная" - "Главная"
categorySlugs: categorySlugs:
- "main" - "main"
author: "История города Пушкино" author: "История города Пушкино"
hideFromList: true hideFromList: true
--- ---
В связи с проведением технических работ на серверах с 02:00 до 04:00 24 августа 2013 г. возможны перерывы в работе до 30 минут. В связи с проведением технических работ на серверах с 02:00 до 04:00 24 августа 2013 г. возможны перерывы в работе до 30 минут.
Приносим свои извинения за доставленные неудобства.

View File

@@ -1,36 +1,56 @@
--- ---
title: "Воронино" title: "Воронино"
slug: voronino slug: voronino
legacyId: 139 legacyId: 139
pubDate: 2012-05-16T18:30:34+03:00 pubDate: 2012-05-16T18:30:34+03:00
description: "" description: "История исчезнувшего села Воронино в Пушкинском районе с XV века до пожара 1940-х годов: усадьбы Шереметевых, Долгоруковых, Верстовского и Толстых."
categories: categories:
- "Главная" - "Главная"
categorySlugs: categorySlugs:
- "main" - "main"
author: "История города Пушкино" author: "История города Пушкино"
featured: true featured: true
featuredImage: "/uploads/IMG_2156.jpg" featuredImage: "/uploads/IMG_2156.jpg"
--- ---
<div align="justify"><em>Населенного пункта с таким названием сейчас нет на карте Пушкинского района. Село сгорело в 1940-х гг. и более не возрождалось. Однако не хотелось бы, что бы его многовековая история была полностью забыта. Некоторые страницы ее мы попробуем сейчас приоткрыть.</em> <div align="justify"><em>Населенного пункта с таким названием сейчас нет на карте Пушкинского района. Село сгорело в 1940-х гг. и более не возрождалось. Однако не хотелось бы, что бы его многовековая история была полностью забыта. Некоторые страницы ее мы попробуем сейчас приоткрыть.</em>
Село известно с первой четверти XV в. Это подтверждает найденная там створка <em>энколпиона*</em> с изображением сюжета Крещения. Иконография ее близка к изделиям новгородской культовой металлопластики XIV в. Возможное время отливки XIV-XVI вв. Село известно с первой четверти XV в. Это подтверждает найденная там створка <em>энколпиона*</em> с изображением сюжета Крещения. Иконография ее близка к изделиям новгородской культовой металлопластики XIV в. Возможное время отливки XIV-XVI вв.
<a name="cutid1"></a><a href="http://pics.livejournal.com/pushkino_2009/pic/0009ywcp"><img src="http://pics.livejournal.com/pushkino_2009/pic/0009ywcp/s640x480" alt="" width="202" height="291" border="0" /></a> <a name="cutid1"></a><a href="http://pics.livejournal.com/pushkino_2009/pic/0009ywcp"><img src="http://pics.livejournal.com/pushkino_2009/pic/0009ywcp/s640x480" alt="" width="202" height="291" border="0" /></a>
</div> </div>
<div align="justify">Воронино с 1582 г. находится в дворцовом ведомстве. В 1619 г. по государевой грамоте дача села Воронино переходит в вотчину князьям Василию и Борису Петровичам Шереметевым и в поместье «князю Луке да сыну его Миките Щербатовым». В 1623 г. там числились два двора помещиков и деревянная церковь Покрова Пресвятой Богородицы. Впоследствии владение распадается на две части: левобережную Большое Воронино и правобережную Малое Воронино. Судьба церкви неизвестна, но в 1646 г. сельцо Большое Воронино вотчина боярина Василия Петровича Шереметева. Василий Петрович был талантливым военноначальником и помогал Богдану Хмельницкому в его борьбе с поляками в 1654-1655 гг. В 1677 г. Большое Воронино числится собственностью его сына Петра. Тогда же упоминается деревянная часовня при кладбище. В 1704 г. сельцо унаследовал Киевский губернатор, генерал-лейтенант Шереметев Владимир Петрович, который в 1710-х гг. отдает сельцо в качестве приданного за своей дочерью Анастасией при ее браке с лейб-гвардии Преображенского полка прапорщиком князем Алексеем Васильевичем Долгоруковым. Последний в 1720 г. пишет прошение о строительстве в Воронино деревянной церкви Успения Пресвятой Богородицы на месте бывшей Покровской церкви и получает разрешение. Когда была построена церковь, из дела не видно, но по «Ревизским сказкам» 1723-1727 гг. Воронино еще сельцо. Селом оно значится в 1748 г., когда им владеет княгиня Анастасия Владимировна, вдова Алексея Васильевича Долгорукова, дочь Владимира Петровича Шереметева. <div align="justify">Воронино с 1582 г. находится в дворцовом ведомстве. В 1619 г. по государевой грамоте дача села Воронино переходит в вотчину князьям Василию и Борису Петровичам Шереметевым и в поместье «князю Луке да сыну его Миките Щербатовым». В 1623 г. там числились два двора помещиков и деревянная церковь Покрова Пресвятой Богородицы. Впоследствии владение распадается на две части: левобережную Большое Воронино и правобережную Малое Воронино. Судьба церкви неизвестна, но в 1646 г. сельцо Большое Воронино вотчина боярина Василия Петровича Шереметева. Василий Петрович был талантливым военноначальником и помогал Богдану Хмельницкому в его борьбе с поляками в 1654-1655 гг. В 1677 г. Большое Воронино числится собственностью его сына Петра. Тогда же упоминается деревянная часовня при кладбище. В 1704 г. сельцо унаследовал Киевский губернатор, генерал-лейтенант Шереметев Владимир Петрович, который в 1710-х гг. отдает сельцо в качестве приданного за своей дочерью Анастасией при ее браке с лейб-гвардии Преображенского полка прапорщиком князем Алексеем Васильевичем Долгоруковым. Последний в 1720 г. пишет прошение о строительстве в Воронино деревянной церкви Успения Пресвятой Богородицы на месте бывшей Покровской церкви и получает разрешение. Когда была построена церковь, из дела не видно, но по «Ревизским сказкам» 1723-1727 гг. Воронино еще сельцо. Селом оно значится в 1748 г., когда им владеет княгиня Анастасия Владимировна, вдова Алексея Васильевича Долгорукова, дочь Владимира Петровича Шереметева.
<div align="center"><img src="http://pics.livejournal.com/pushkino_2009/pic/0009z9sk" alt="http://pics.livejournal.com/pushkino_2009/pic/0009z9sk" /></div> <div align="center"><img src="http://pics.livejournal.com/pushkino_2009/pic/0009z9sk" alt="http://pics.livejournal.com/pushkino_2009/pic/0009z9sk" /></div>
</div> </div>
<div align="justify">     В 1768 г. селом владел полковник, граф Василий Иванович Толстой, впоследствии ставший действительным статским советником. Его женою была Александра Ивановна, урожденная Майкова, сестра известного писатели Василия Ивановича Майкова. Их дочь Мария была выдана замуж за Павла Ивановича Фонвизина, писателя, директора Московского университета, брата великого комедиографа Дениса Ивановича Фонвизина. В конце 1760-х гг. усадьба Воронино представляла собой барский дом с флигелями и садом на заднем дворе. Через дорогу от дома стояла деревянная Успенская церковь, за которой начинался большой липовый парк. Южнее парка ютились крестьянские дворы. К концу века Толстой переустраивает усадьбу. На реке Вязь были поставлены запруды, в результате чего образовались три огромных каскадных пруда. От берега вверх поднимались пятью уступами террасы. На нижней находился обложенный дубовым тесом пруд для купания. На средней террасе был построен новый господский дом. Следующий ярус окаймлял его по бокам, образуя, видимо, также смотровые площадки. Весь этот комплекс утопал в зелени сада. По его северной и южной границам в специально вырытых каналах к Вязи струились два водным потока. На верхнем ярусе находились господское кладбище и церковь (в XX в. - деревянная часовня) при нем.</div> <div align="justify">     В 1768 г. селом владел полковник, граф Василий Иванович Толстой, впоследствии ставший действительным статским советником. Его женою была Александра Ивановна, урожденная Майкова, сестра известного писатели Василия Ивановича Майкова. Их дочь Мария была выдана замуж за Павла Ивановича Фонвизина, писателя, директора Московского университета, брата великого комедиографа Дениса Ивановича Фонвизина. В конце 1760-х гг. усадьба Воронино представляла собой барский дом с флигелями и садом на заднем дворе. Через дорогу от дома стояла деревянная Успенская церковь, за которой начинался большой липовый парк. Южнее парка ютились крестьянские дворы. К концу века Толстой переустраивает усадьбу. На реке Вязь были поставлены запруды, в результате чего образовались три огромных каскадных пруда. От берега вверх поднимались пятью уступами террасы. На нижней находился обложенный дубовым тесом пруд для купания. На средней террасе был построен новый господский дом. Следующий ярус окаймлял его по бокам, образуя, видимо, также смотровые площадки. Весь этот комплекс утопал в зелени сада. По его северной и южной границам в специально вырытых каналах к Вязи струились два водным потока. На верхнем ярусе находились господское кладбище и церковь (в XX в. - деревянная часовня) при нем.</div>
<div align="justify">     В начале XIX в. усадьбой владел Дмитрий Сергеевич Лужин, затем его сын, Иван. <img src="http://pics.livejournal.com/pushkino_2009/pic/0009xrkc" alt="http://pics.livejournal.com/pushkino_2009/pic/0009xrkc" width="169" height="206" />Иван Дмитриевич Лужин в двадцатилетнем возрасте был корнетом из эстандарт-юнкеров лейб-гвардии Конного полка. В 1831 г. он проявил себя в подавлении польского восстания, за что был награжден орденом Владимира 4 степени с бантом и назначен на должность флигель-адъютант Николая I. Через двенадцать лет он исправляющий должность московского обер-полицеймейстера, генерал-майор свиты,в 1854 г. курский, а два года спустя харьковский военный и гражданский губернатор. Перед отъездом из Москвы он продает Воронино А.Н. Верстовскому. <img src="http://pics.livejournal.com/pushkino_2009/pic/0009pwpk" alt="http://pics.livejournal.com/pushkino_2009/pic/0009pwpk" width="152" height="236" />Алексей Николаевич Верстовский родился в имении Селиверстово, близ села Мезинец, Козловского уезда Тамбовской губернии, расположенном на живописном берегу реки Лесной Воронеж. С детства у него проявился талант к музыке, которой он посвятил всю свою жизнь. Среди произведений композитора оперы "Пан Твардовский", "Цыгане", "Аскольдова могила", много романсов и баллад. <div align="justify">     В начале XIX в. усадьбой владел Дмитрий Сергеевич Лужин, затем его сын, Иван. <img src="http://pics.livejournal.com/pushkino_2009/pic/0009xrkc" alt="http://pics.livejournal.com/pushkino_2009/pic/0009xrkc" width="169" height="206" />Иван Дмитриевич Лужин в двадцатилетнем возрасте был корнетом из эстандарт-юнкеров лейб-гвардии Конного полка. В 1831 г. он проявил себя в подавлении польского восстания, за что был награжден орденом Владимира 4 степени с бантом и назначен на должность флигель-адъютант Николая I. Через двенадцать лет он исправляющий должность московского обер-полицеймейстера, генерал-майор свиты,в 1854 г. курский, а два года спустя харьковский военный и гражданский губернатор. Перед отъездом из Москвы он продает Воронино А.Н. Верстовскому. <img src="http://pics.livejournal.com/pushkino_2009/pic/0009pwpk" alt="http://pics.livejournal.com/pushkino_2009/pic/0009pwpk" width="152" height="236" />Алексей Николаевич Верстовский родился в имении Селиверстово, близ села Мезинец, Козловского уезда Тамбовской губернии, расположенном на живописном берегу реки Лесной Воронеж. С детства у него проявился талант к музыке, которой он посвятил всю свою жизнь. Среди произведений композитора оперы "Пан Твардовский", "Цыгане", "Аскольдова могила", много романсов и баллад.
В 1890 г. усадьбой владеет дочь статского советника Надежда Николаевна Топорова, в 1911 г. Арманды. Усадебный дом и церковь разобраны на стройматериал в 1930-х гг. От усадьбы сохранились в весьма заросшем состоянии постепенно переходящий в лес парк и пересохший пруд. Кое-где можно отыскать остатки построек.</div> В 1890 г. усадьбой владеет дочь статского советника Надежда Николаевна Топорова, в 1911 г. Арманды. Усадебный дом и церковь разобраны на стройматериал в 1930-х гг. От усадьбы сохранились в весьма заросшем состоянии постепенно переходящий в лес парк и пересохший пруд. Кое-где можно отыскать остатки построек.</div>
<div align="justify">     Находившееся на противоположном берегу реки сельцо Малое Воронино в 1677 г. в поместьи окольничего, князя Константина Осиповича Щербатова. Боярин и воевода, Константин Осипович был известен победами над поляками и над сообщниками Стеньки Разина, которых разбил наголову при селе Мурашкине. Он служил также судьей ямского приказа и енисейским воеводой.
<img src="http://pics.livejournal.com/pushkino_2009/pic/0009kq2b" alt="http://pics.livejournal.com/pushkino_2009/pic/0009kq2b" />В 1704 г. Малое Воронино во владении окольничего, князя Юрия Федоровича Щербатова, в 1719 г. советника Филиппа Алексеевича Ягужинского. Во второй половине XVIII в. здесь усадьба с господским домом и небольшим садом из плодовых деревьев, которая принадлежала статской советнице Елене Степановне Хвостовой. В середине XIX в. усадьбой владел Николай Лукич Долгов, представитель купеческого рода, известного по Москве в то время своей благотворительностью. Последний владелец усадьбы московский купец Е.С. Кротов. По местным легендам во время празднеств и гуляний Кротов щедро одаривал местных крестьян, бросая им с балкона господского дома медяки и серебряную мелочь. С приходом новой власти усадебный дом разобран на стройматериал. В некоторых местах сохранились отдельные деревья некогда большого парка. Неподалеку при деревнях Хвостово и Кобылино были имения Гвоздевых и А.Н. Телепневой, приобретенные в начале XX в. у Кротова. Местное предание гласит, что Кротов так назвал деревни в память о любимой лошади. Однако на самом деле это просто веселая выдумка. Эти деревни возникли очень давно и были названы по фамилиям хозяев, известных землевладельцев XV в. Кобылиных и Хвостовых.</div>
&nbsp;
<em>*Энколпионы небольшие коробочки или кресты с мощами святого, предназначенные для ношения на груди. </em>
<strong>Василий Коршун</strong>
Опубликовано: "Пушкинский Вестник" 2005 г. №11(268)
Фото (вверху) передано автору статьи С.В. Демидовым.

View File

@@ -26,6 +26,41 @@ const {
const fullTitle = title ? `${title} — ${SITE_TITLE}` : SITE_TITLE; const fullTitle = title ? `${title} — ${SITE_TITLE}` : SITE_TITLE;
const url = canonical ?? new URL(Astro.url.pathname, SITE_URL).toString(); const url = canonical ?? new URL(Astro.url.pathname, SITE_URL).toString();
const ogImageUrl = new URL(ogImage, SITE_URL).toString(); const ogImageUrl = new URL(ogImage, SITE_URL).toString();
const jsonLd = {
'@context': 'https://schema.org',
'@graph': [
{
'@type': 'WebSite',
'@id': `${SITE_URL}/#website`,
url: `${SITE_URL}/`,
name: SITE_TITLE,
description: SITE_DESCRIPTION,
inLanguage: 'ru-RU',
publisher: { '@id': `${SITE_URL}/#publisher` },
// creator — тех-партнёр (hhivp.com). Entity-сигнал для AI Overviews.
creator: {
'@type': 'Organization',
'@id': 'https://hhivp.com/#organization',
name: 'ООО «АйТи Решения»',
url: 'https://hhivp.com/',
sameAs: ['https://hhivp.com'],
},
},
{
'@type': 'NewsMediaOrganization',
'@id': `${SITE_URL}/#publisher`,
name: SITE_TITLE,
url: `${SITE_URL}/`,
logo: {
'@type': 'ImageObject',
url: `${SITE_URL}/favicon.svg`,
},
description:
'Краеведческое медиа: история, новости и фотолетопись подмосковного города Пушкино — от давних времён до наших дней.',
},
],
};
--- ---
<!doctype html> <!doctype html>
@@ -48,6 +83,31 @@ const ogImageUrl = new URL(ogImage, SITE_URL).toString();
<meta property="og:site_name" content={SITE_TITLE} /> <meta property="og:site_name" content={SITE_TITLE} />
<meta name="twitter:card" content="summary_large_image" /> <meta name="twitter:card" content="summary_large_image" />
<script type="application/ld+json" is:inline set:html={JSON.stringify(jsonLd)} />
<!--
Speculation Rules API (Chromium 122+) — prerender same-origin pages on
hover/pointerdown for near-instant navigation.
-->
<script type="speculationrules" is:inline set:html={JSON.stringify({
prerender: [
{
where: {
and: [
{ href_matches: '/*' },
{ not: { href_matches: '/assets/*' } },
{ not: { href_matches: '/uploads/*' } },
{ not: { href_matches: '/api/*' } },
{ not: { href_matches: '/sitemap*' } },
{ not: { href_matches: '/feed*' } },
{ not: { href_matches: '/llms*' } }
]
},
eagerness: 'moderate'
}
]
})} />
<Analytics /> <Analytics />
</head> </head>
<body> <body>