docs: target an open alpha launch
CI / backend-and-migrations (push) Canceled after 0s
CI / astro-build (push) Canceled after 0s
CI / compose-e2e (push) Canceled after 0s

This commit is contained in:
ik
2026-09-07 09:27:11 +07:00
parent 24b33695b2
commit 16e4c071d1
7 changed files with 20 additions and 14 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ RF4 Spotter — неофициальный сервис свежих точек
## Статус разработки ## Статус разработки
Функциональный MVP и локальный production-контур готовы к закрытой альфе: официальный импорт, пользовательские заявки, модерация, объяснимый индекс, staging внешних источников, адаптивный Astro UI, миграции, резервное копирование, retention, мониторинг и security/accessibility-проверки реализованы. Автоматические импорты внешних источников выключены. Публичный запуск блокируют покупка и настройка сервера, DNS/TLS, реальные секреты, внешний backup и канал уведомлений. Функциональный MVP и локальный production-контур готовятся к открытой альфе: официальный импорт, пользовательские заявки, модерация, объяснимый индекс, staging внешних источников, адаптивный Astro UI, миграции, резервное копирование, retention, мониторинг и security/accessibility-проверки реализованы. Автоматические импорты внешних источников выключены. Публичный запуск блокируют покупка и настройка сервера, DNS/TLS, реальные секреты, внешний backup, канал уведомлений и публичные страницы правил/privacy.
RF4DB/RF4-STAT/RF4MAP/RF4 Posts принимаются только в изолированный staging и не влияют на индекс без ручного сопоставления и публикации. Для разрешённых community-источников действует интервал не менее 30 минут на источник. RF4DB/RF4-STAT/RF4MAP/RF4 Posts принимаются только в изолированный staging и не влияют на индекс без ручного сопоставления и публикации. Для разрешённых community-источников действует интервал не менее 30 минут на источник.
@@ -20,7 +20,7 @@ Host-side мониторинг контейнеров, readiness, диска, р
Ежедневный systemd timer создаёт проверяемую копию до retention-очистки, а production Compose ограничивает рост JSON-логов контейнеров. Ежедневный systemd timer создаёт проверяемую копию до retention-очистки, а production Compose ограничивает рост JSON-логов контейнеров.
Фактическое состояние DNS/TLS домена и серверный чек-лист ведутся в [`docs/deployment-status.md`](docs/deployment-status.md). Фактическое состояние DNS/TLS домена и серверный чек-лист ведутся в [`docs/deployment-status.md`](docs/deployment-status.md).
Результаты security review и остаточные ограничения закрытой альфы записаны в [`docs/security-review.md`](docs/security-review.md). Результаты security review и остаточные риски открытой альфы записаны в [`docs/security-review.md`](docs/security-review.md).
## Архитектура ## Архитектура
+6 -4
View File
@@ -1,4 +1,4 @@
# Развёртывание закрытой альфы rf4spotter.ru # Развёртывание открытой альфы rf4spotter.ru
Production-контур рассчитан на один Linux-сервер с Docker Compose. Наружу публикуются только Caddy `80/443`; PostgreSQL, FastAPI и MinIO не имеют host-портов. Административные страницы защищены одновременно Caddy Basic Auth и API bearer token. Production-контур рассчитан на один Linux-сервер с Docker Compose. Наружу публикуются только Caddy `80/443`; PostgreSQL, FastAPI и MinIO не имеют host-портов. Административные страницы защищены одновременно Caddy Basic Auth и API bearer token.
@@ -8,7 +8,7 @@ Production-контур рассчитан на один Linux-сервер с D
Создайте A-записи `rf4spotter.ru` и `files.rf4spotter.ru` на публичный IPv4 сервера. При наличии рабочего IPv6 добавьте AAAA для обоих имён. До запуска убедитесь, что извне доступны TCP 80/443 и UDP 443; SSH ограничьте своим IP или VPN. Порты 4321, 8000, 9000, 9001 и 5432 открывать нельзя. Создайте A-записи `rf4spotter.ru` и `files.rf4spotter.ru` на публичный IPv4 сервера. При наличии рабочего IPv6 добавьте AAAA для обоих имён. До запуска убедитесь, что извне доступны TCP 80/443 и UDP 443; SSH ограничьте своим IP или VPN. Порты 4321, 8000, 9000, 9001 и 5432 открывать нельзя.
Минимум для закрытой альфы: 2 vCPU, 4 ГБ RAM и 40 ГБ SSD. Рекомендуется 4 vCPU, 8 ГБ RAM и отдельное внешнее место для резервных копий. Минимум для открытой альфы: 2 vCPU, 4 ГБ RAM и 40 ГБ SSD. Рекомендуется 4 vCPU, 8 ГБ RAM и отдельное внешнее место для резервных копий.
## 2. Секреты ## 2. Секреты
@@ -145,10 +145,12 @@ systemctl list-timers rf4spotter-maintenance.timer
Проверка контролирует контейнеры, `/ready`, диск, свежесть backup и срок TLS. Установка systemd timer, пороги и порядок реакции описаны в [`docs/production-monitoring.md`](../docs/production-monitoring.md). До подключения реального канала уведомлений одного журнала systemd недостаточно. Проверка контролирует контейнеры, `/ready`, диск, свежесть backup и срок TLS. Установка systemd timer, пороги и порядок реакции описаны в [`docs/production-monitoring.md`](../docs/production-monitoring.md). До подключения реального канала уведомлений одного журнала systemd недостаточно.
## 9. Что ещё блокирует приглашение альфа-пользователей ## 9. Что ещё блокирует публичное открытие альфы
- подключение уведомлений о сбоях мониторинга; - подключение уведомлений о сбоях мониторинга;
- проверка DNS/TLS и полного запуска на целевом сервере; - проверка DNS/TLS и полного запуска на целевом сервере;
- внешнее зашифрованное хранилище резервных копий. - внешнее зашифрованное хранилище резервных копий.
- действующие `privacy@rf4spotter.ru` и `abuse@rf4spotter.ru`, публичные правила и privacy notice;
- проверка rate limit и очереди модерации под ожидаемой публичной нагрузкой.
До закрытия этих пунктов контур можно поднять для технической проверки домена, но не следует открывать форму реальным пользователям. До закрытия этих пунктов контур можно поднять для технической проверки домена, но не следует открывать форму без ограничения доступа.
+6 -2
View File
@@ -107,6 +107,9 @@
## Этап 5 — пилот ## Этап 5 — пилот
- [ ] Опубликовать правила открытой альфы и privacy notice, добавить явное согласие перед отправкой улова.
- [ ] Создать и проверить ящики `privacy@rf4spotter.ru` и `abuse@rf4spotter.ru`, определить срок реакции на обращения.
- [ ] Проверить публичные abuse-сценарии: burst заявок, крупные файлы, повторные отправки и рост очереди модерации.
- [ ] Зафиксировать короткий сценарий приёмки пилота и измеримые критерии: успешная отправка/модерация, понятность оценки, свежесть данных и допустимое время ответа. - [ ] Зафиксировать короткий сценарий приёмки пилота и измеримые критерии: успешная отправка/модерация, понятность оценки, свежесть данных и допустимое время ответа.
- [ ] Согласовать первые категории рекордов, водоёмы и виды рыб. - [ ] Согласовать первые категории рекордов, водоёмы и виды рыб.
- [ ] Наполнить базу небольшим разрешённым набором реальных данных. - [ ] Наполнить базу небольшим разрешённым набором реальных данных.
@@ -119,8 +122,9 @@
Технический production-контур, health/readiness, backup/restore и безопасные логи готовы. Следующие пункты выполняются строго по одному: Технический production-контур, health/readiness, backup/restore и безопасные логи готовы. Следующие пункты выполняются строго по одному:
1. подготовить сценарий и измеримые критерии закрытой альфы; 1. добавить публичные страницы правил и privacy notice, согласие формы и контакты `privacy`/`abuse`;
2. мониторинг, DNS/TLS и проверка production-профиля на целевом сервере. 2. подготовить сценарий и измеримые критерии открытой альфы, включая публичную нагрузку и злоупотребления;
3. мониторинг, DNS/TLS и проверка production-профиля на целевом сервере.
После каждого пункта необходимо: После каждого пункта необходимо:
+2 -2
View File
@@ -1,6 +1,6 @@
# Политика использования данных RF4 Spotter # Политика использования данных RF4 Spotter
Версия для закрытой альфы от 7 сентября 2026 года. Это проектная политика, а не замена условиям владельцев источников или требованиям применимого законодательства. Версия для открытой альфы от 7 сентября 2026 года. Это проектная политика, а не замена условиям владельцев источников или требованиям применимого законодательства.
## Область действия ## Область действия
@@ -24,7 +24,7 @@ RF4 Spotter обрабатывает официальные публичные
Технические сроки определены в `docs/data-retention.md`: попытки отправки — 1 день, непроверенные заявки — 30 дней, персональные поля одобренных заявок — 180 дней, непубликуемый staging — 90 дней, журнал модерации и provenance опубликованных записей — до 365 дней. Очистка выполняется только после успешной резервной копии. Технические сроки определены в `docs/data-retention.md`: попытки отправки — 1 день, непроверенные заявки — 30 дней, персональные поля одобренных заявок — 180 дней, непубликуемый staging — 90 дней, журнал модерации и provenance опубликованных записей — до 365 дней. Очистка выполняется только после успешной резервной копии.
Автор добровольной заявки может запросить удаление, указав идентификатор заявки и достаточные сведения для её поиска, по адресу `privacy@rf4spotter.ru`. При удалении очищаются ник, комментарий, исходная ссылка и скриншот; обезличенный факт модерационного действия сохраняется для аудита. До настройки действующего почтового ящика форма не должна открываться внешним альфа-пользователям. Автор добровольной заявки может запросить удаление, указав идентификатор заявки и достаточные сведения для её поиска, по адресу `privacy@rf4spotter.ru`; сообщения о злоупотреблениях принимаются на `abuse@rf4spotter.ru`. При удалении очищаются ник, комментарий, исходная ссылка и скриншот; обезличенный факт модерационного действия сохраняется для аудита. До настройки обоих ящиков форма не должна быть доступна публично.
Если запись изменена или удалена первичным источником, оператор при подтверждении снимает её с публикации и очищает производные персональные поля в ближайший цикл обслуживания. Резервные копии исчезают по собственному графику хранения и не используются для обычного чтения. Если запись изменена или удалена первичным источником, оператор при подтверждении снимает её с публикации и очищает производные персональные поля в ближайший цикл обслуживания. Резервные копии исчезают по собственному графику хранения и не используются для обычного чтения.
+1 -1
View File
@@ -1,4 +1,4 @@
# Политика хранения данных закрытой альфы # Политика хранения данных открытой альфы
Политика минимизирует персональные и диагностические данные, не разрушая обезличенную статистику клёва. Сроки считаются от `reported_at`, `created_at` или `last_seen_at` соответствующей записи. Политика минимизирует персональные и диагностические данные, не разрушая обезличенную статистику клёва. Сроки считаются от `reported_at`, `created_at` или `last_seen_at` соответствующей записи.
+1 -1
View File
@@ -1,4 +1,4 @@
# Мониторинг закрытой альфы # Мониторинг открытой альфы
`deploy/monitor.sh` — host-side проверка production-контура. Она не изменяет данные и не печатает секреты. Успех возвращает exit code `0` и одну строку `OK`; любая проблема возвращает `1`/`2` и строку `CRITICAL`. `deploy/monitor.sh` — host-side проверка production-контура. Она не изменяет данные и не печатает секреты. Успех возвращает exit code `0` и одну строку `OK`; любая проблема возвращает `1`/`2` и строку `CRITICAL`.
+2 -2
View File
@@ -1,6 +1,6 @@
# Production security review # Production security review
Проверка выполнена 7 сентября 2026 года для закрытой альфы. Она охватывает код и Compose-конфигурацию; firewall, SSH, DNS и фактические права файлов проверяются отдельно на целевом сервере. Проверка выполнена 7 сентября 2026 года и актуализирована для открытой альфы. Она охватывает код и Compose-конфигурацию; firewall, SSH, DNS и фактические права файлов проверяются отдельно на целевом сервере.
## Закрытые пункты ## Закрытые пункты
@@ -19,7 +19,7 @@
| Логи | query string, IP, Authorization и payload не журналируются; известные формы секретов редактируются | | Логи | query string, IP, Authorization и payload не журналируются; известные формы секретов редактируются |
| Персональные данные | действует документированная retention-очистка, причём backup выполняется раньше удаления | | Персональные данные | действует документированная retention-очистка, причём backup выполняется раньше удаления |
## Остаточные ограничения закрытой альфы ## Остаточные риски открытой альфы
- Basic Auth и bearer token общие для всех модераторов: персональная атрибуция и отзыв одной учётной записи отсутствуют. - Basic Auth и bearer token общие для всех модераторов: персональная атрибуция и отзыв одной учётной записи отсутствуют.
- Нет MFA и отдельного identity provider; admin credentials следует передавать только ограниченному числу операторов и ротировать при любом подозрении. - Нет MFA и отдельного identity provider; admin credentials следует передавать только ограниченному числу операторов и ротировать при любом подозрении.