release: версия 0.0.2 + CHANGELOG
Поднята версия до 0.0.2 (VERSION, .env.example, docker-compose дефолт). Добавлен CHANGELOG.md с описанием изменений 0.0.1 → 0.0.2: харденинг безопасности (порты на loopback, redis requirepass), перенос конфигов деплоя в репозиторий (TLS-443, шаблоны, --env-file), fail-fast install.sh, руководство docs/deploy/DEPLOYMENT.md.
This commit is contained in:
@@ -98,7 +98,7 @@ SMTP_TIMEOUT_S=30
|
|||||||
# --- Версия инстанса (релиз v0.0.1) ---
|
# --- Версия инстанса (релиз v0.0.1) ---
|
||||||
# install.sh копирует значение из корневого файла VERSION при каждой
|
# install.sh копирует значение из корневого файла VERSION при каждой
|
||||||
# установке/обновлении — руками менять не нужно.
|
# установке/обновлении — руками менять не нужно.
|
||||||
VIDCONF_VERSION=0.0.1
|
VIDCONF_VERSION=0.0.2
|
||||||
|
|
||||||
# --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного
|
# --- Профили compose. Дефолт ниже (`media,monitoring`) — только для ручного
|
||||||
# `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг,
|
# `docker compose up` БЕЗ install.sh: медиа (LiveKit+coturn) + мониторинг,
|
||||||
|
|||||||
63
CHANGELOG.md
Normal file
63
CHANGELOG.md
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Изменения
|
||||||
|
|
||||||
|
Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.1.0/),
|
||||||
|
проект придерживается [семантического версионирования](https://semver.org/lang/ru/).
|
||||||
|
|
||||||
|
## [0.0.2] — 2026-07-26
|
||||||
|
|
||||||
|
Релиз воспроизводимого боевого развёртывания: конфигурация деплоя перенесена в
|
||||||
|
репозиторий как источник истины, устранён инцидент безопасности, добавлена
|
||||||
|
пошаговая инструкция для девопсов.
|
||||||
|
|
||||||
|
### Безопасность
|
||||||
|
- `postgres` и `redis` сняты с публикации на `0.0.0.0` и привязаны к `127.0.0.1`
|
||||||
|
(docker писал DNAT в обход `ufw`, порты были открыты в интернет).
|
||||||
|
- Порты `backend`, `livekit`-signaling, `prometheus`, `grafana`, `llm` также
|
||||||
|
переведены на loopback — наружу остаются только `80/443/7881` (+ UDP `54000-54100`).
|
||||||
|
- Для `redis` включена обязательная аутентификация (`--requirepass`); пароль
|
||||||
|
проброшен во всех потребителей (backend, worker, exporter, livekit, egress).
|
||||||
|
|
||||||
|
### Развёртывание и инфраструктура
|
||||||
|
- `nginx`/`coturn`/`livekit`: TLS на 443, http→https редирект, ACME-webroot;
|
||||||
|
конфиги вынесены в `*.template` и рендерятся через `deploy/render-templates.sh`
|
||||||
|
(`envsubst`). Секреты — только из `.env`, обязательны (`${VAR:?}`), без
|
||||||
|
небезопасных дефолтов.
|
||||||
|
- `--env-file .env` добавлен во все вызовы `docker compose` (без него compose не
|
||||||
|
подхватывал корневой `.env` и брал dev-дефолты — корень бага «конференции не
|
||||||
|
работают у других» и `WARN: LIVEKIT_API_KEY not set`).
|
||||||
|
- Мониторинг развязан от опционального LLM: `job=llm`/алерт `LlmDown`
|
||||||
|
закомментированы для профилей без `llm`/`llm-gpu`.
|
||||||
|
- `install.sh`: fail-fast валидация — установка останавливается с понятной
|
||||||
|
ошибкой, если на боевом домене остались dev-плейсхолдеры (`example.com`,
|
||||||
|
`ws://localhost`, `devkey` и т.п.), вместо тихого подъёма нерабочего прода.
|
||||||
|
- `install.sh`: флаг `--monitoring` (Grafana/Prometheus раньше не поднимались
|
||||||
|
ни в одном пресете).
|
||||||
|
- `.env.example` покрывает все параметры деплоя; дефолтные профили —
|
||||||
|
`media,monitoring`.
|
||||||
|
|
||||||
|
### Исправления
|
||||||
|
- `nginx`: `/openapi.json` больше не перехватывается SPA-фолбэком, а отдаётся
|
||||||
|
схемой backend.
|
||||||
|
- Предупреждение в `.env.example`: `LIVEKIT_PUBLIC_URL` в HTTPS-проде обязан
|
||||||
|
быть `wss://`.
|
||||||
|
|
||||||
|
### Документация
|
||||||
|
- Добавлено `docs/deploy/DEPLOYMENT.md` — полное руководство от голой Ubuntu 24
|
||||||
|
до рабочего `https://<домен>`: SSL, `.env`, профили, траблшутинг, доступ к
|
||||||
|
мониторингу через ssh-туннель, описание панелей, runbook включения
|
||||||
|
транскрибации/суммаризации. Ссылки добавлены в `README.md`.
|
||||||
|
- `docs/deploy/install.md`: задокументирован флаг `--monitoring`.
|
||||||
|
|
||||||
|
### Примечания по эксплуатации
|
||||||
|
- На боевом сервере исправлен certbot deploy-hook (`nginx -s reload` → `restart`):
|
||||||
|
без этого после автопродления сертификата nginx продолжал бы отдавать старый.
|
||||||
|
- TURN-раздача клиентам (`rtc.turn_servers` + TURN/TLS на 443) остаётся
|
||||||
|
опциональной — кросс-сетевое медиа проверено вживую и работает без неё;
|
||||||
|
нужна только для экстремального NAT (CGNAT/жёсткий корпоративный firewall).
|
||||||
|
|
||||||
|
## [0.0.1]
|
||||||
|
|
||||||
|
Первоначальная версия VidConf.
|
||||||
|
|
||||||
|
[0.0.2]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.2
|
||||||
|
[0.0.1]: https://github.com/MaxRonzhin/vidconf_rel/releases/tag/v0.0.1
|
||||||
@@ -82,7 +82,7 @@ services:
|
|||||||
MEDIA_ROOT: ${MEDIA_ROOT:-/app/media}
|
MEDIA_ROOT: ${MEDIA_ROOT:-/app/media}
|
||||||
# Версия инстанса (релиз v0.0.1) — install.sh копирует значение
|
# Версия инстанса (релиз v0.0.1) — install.sh копирует значение
|
||||||
# из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health.
|
# из файла VERSION (корень репозитория) в .env; отдаётся в GET /api/health.
|
||||||
VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.1}
|
VIDCONF_VERSION: ${VIDCONF_VERSION:-0.0.2}
|
||||||
# config/ лежит в корне репозитория и не попадает в образ (контекст сборки —
|
# config/ лежит в корне репозитория и не попадает в образ (контекст сборки —
|
||||||
# только backend/), поэтому plugins.yaml монтируется отдельно.
|
# только backend/), поэтому plugins.yaml монтируется отдельно.
|
||||||
volumes:
|
volumes:
|
||||||
|
|||||||
Reference in New Issue
Block a user