Первоначальная версия VidConf

This commit is contained in:
2026-07-23 01:04:01 +03:00
commit 896455381a
335 changed files with 61527 additions and 0 deletions

105
.env.example Normal file
View File

@@ -0,0 +1,105 @@
# --- Database ---
POSTGRES_USER=vidconf
POSTGRES_PASSWORD=vidconf
POSTGRES_DB=vidconf
DATABASE_URL=postgresql+asyncpg://vidconf:vidconf@localhost:5432/vidconf
# --- Redis ---
REDIS_URL=redis://localhost:6379/0
# --- Seed admin user ---
SEED_ADMIN_EMAIL=admin@vidconf.example
SEED_ADMIN_PASSWORD=change-me
# --- Plugins ---
PLUGINS_CONFIG_PATH=config/plugins.yaml
# --- Auth (JWT + email-подтверждение) ---
JWT_SECRET=change-me-generate-a-long-random-secret
ACCESS_TOKEN_TTL_MINUTES=15
REFRESH_TOKEN_TTL_DAYS=14
EMAIL_VERIFICATION_TTL_HOURS=24
FRONTEND_URL=http://localhost:5173
# false только для dev по http://localhost (Safari не сохраняет
# Secure-cookie без HTTPS); в проде обязательно true.
AUTH_COOKIE_SECURE=false
# --- LiveKit (dev placeholders, replace in real .env) ---
LIVEKIT_API_KEY=devkey
LIVEKIT_API_SECRET=change-me-livekit-secret
LIVEKIT_URL=ws://localhost:7880
# URL, который получает браузер клиента для подключения к LiveKit SFU.
LIVEKIT_PUBLIC_URL=ws://localhost:7880
# --- Coturn (dev placeholders) ---
TURN_REALM=vidconf.local
TURN_STATIC_AUTH_SECRET=change-me-turn-secret
# --- Транскрибация (профиль compose `transcribe`: egress + worker-transcriber) ---
# Общий путь тома `recordings` (egress пишет .ogg-треки, worker-transcriber
# читает их для faster-whisper). Внутри docker-сети менять не нужно —
# значение по умолчанию (см. deploy/docker-compose.yml) уже совпадает
# с точкой монтирования тома в обоих сервисах.
RECORDINGS_DIR=/recordings
# --- Email (рассылка саммари + .ics-приглашения) ---
# `console` — дефолт для dev (письмо только логируется, ссылка подтверждения
# email берётся из логов); `smtp` — реальная отправка через aiosmtplib.
# Переключатель — только .env (секреты SMTP никогда не попадают в БД/админку).
EMAIL_BACKEND=console
SMTP_HOST=localhost
SMTP_PORT=587
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_START_TLS=true
SMTP_USE_TLS=false
SMTP_FROM=VidConf <no-reply@vidconf.example>
SMTP_TIMEOUT_S=30
# --- Версия инстанса (релиз v0.0.1) ---
# install.sh копирует значение из корневого файла VERSION при каждой
# установке/обновлении — руками менять не нужно.
VIDCONF_VERSION=0.0.1
# --- Профили compose — install.sh выставляет по выбранному
# пресету инсталлятора (1/2 — media; 3 — +transcribe,llm; 4 — те же,
# WHISPER_MODEL/LLM_MODEL_* другого уровня; 5 — +transcribe-gpu,llm-gpu). ---
COMPOSE_PROFILES=media
# --- Настройки модулей инстанса под пресет ---
# install.sh пишет их по выбранному пресету, backend
# читает их при первом бутстрапе instance_settings (lifespan) вместо
# дефолтного «всё enabled: true» из config/plugins.yaml; те же значения
# использует scripts.apply_preset_settings при повторном применении. Пусто —
# бутстрап берёт дефолты plugins.yaml (как раньше, для dev без install.sh). ---
BOOTSTRAP_CHAT_ENABLED=
BOOTSTRAP_TRANSCRIPTION_ENABLED=
BOOTSTRAP_AI_LEVEL=
# --- Обнаруженное железо (install.sh, ADR-004) — читает
# backend/services/ai_levels.py для детекта доступности уровней AI в
# админке; НЕ влияет на то, что реально поднимает docker compose
# (это делает COMPOSE_PROFILES выше) — используется только для
# рекомендации/причин недоступности.
HW_CPUS=
HW_RAM_MB=
HW_GPU_NAME=
HW_VRAM_MB=
# --- Транскрибация: модель faster-whisper уровня AI (профили `transcribe`/
# `transcribe-gpu`) — small (min) / medium (medium) / large-v3 (max, только
# GPU), см. ADR-004. Пишет install.sh по выбранному пресету. ---
WHISPER_MODEL=small
# --- Суммаризация: модель Qwen3.5 уровня AI (профили `llm`/`llm-gpu`) —
# см. ADR-004 и deploy/llm/download-model.sh. Пишет install.sh по выбранному
# пресету; значения ниже — дефолт уровня `min`. ---
LLM_MODEL_FILE=qwen3.5-4b-instruct-q4_k_m.gguf
LLM_MODEL_URL=https://huggingface.co/unsloth/Qwen3.5-4B-GGUF/resolve/main/Qwen3.5-4B-Q4_K_M.gguf
LLM_MODEL_MIN_SIZE=2000000000
LLM_TOKENIZER_FILE=qwen3.5-4b-instruct.tokenizer.json
LLM_TOKENIZER_URL=https://huggingface.co/Qwen/Qwen3.5-4B/resolve/main/tokenizer.json
# --- Мониторинг (профиль compose `monitoring`) ---
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=change-me-grafana