Гайд для сценария «человек зашёл по ссылке и потестил». Демо-режим (DEMO_MODE=true)
даёт анонимным посетителям права analyst Default-тенанта с защитой бюджета:
- per-IP лимиты: 6 анализов/мин и 40 запросов/мин на посетителя;
- жёсткий кап демо-тенанта: 200 проверок/месяц (
DEMO_MAX_CHECKS_PER_MONTH); /metricsскрыт от анонимов (METRICS_PUBLIC=false).
Полный контроль, доступ к WB/Ozon из РФ, постоянный диск (история и evidence живут между рестартами). Стоимость: ~300–500 ₽/мес за VPS 1 vCPU / 2 GB.
# На сервере:
git clone <repo> && cd FakeDetect
cp .env.example .env
# Минимальный .env для демо:
# GEMINI_API_KEY=AIza... # бесплатный тариф aistudio.google.com
# DEMO_MODE=true
# LOG_FORMAT=json # опционально
docker compose up -d --buildHTTPS через Caddy (авто-cert):
# /etc/caddy/Caddyfile
demo.yourdomain.ru {
reverse_proxy 127.0.0.1:8000
}
Обновление: git pull && docker compose up -d --build.
Плюсы: деплой из GitHub в два клика, TLS из коробки. Минусы: free-tier контейнеры засыпают (первый запрос ~30 сек) и эфемерный диск — SQLite и evidence/ пропадут при редеплое (для демо приемлемо; подключите их persistent disk при желании).
Настройки: Docker-деплой из репозитория, порт 8000, env те же
(GEMINI_API_KEY, DEMO_MODE=true).
-
DEMO_MODE=true→ анонимы = analyst + per-IP лимиты - Кап демо-тенанта 200 проверок/мес (бюджет Gemini защищён)
-
/metricsзакрыт (METRICS_PUBLIC=false) -
API_SECRET_KEYоставить пустым ИЛИ задать и добавить ключ в UI — не оставляйте прод-секреты в .env демо-машины - Telegram-токены на демо не указывать (алерты пойдут в ваш чат)
- Биллинг-вебхуки fail-closed без секретов
- Бэкап
fakedetect.db(cron: sqlite3 .backup) — опционально
Если инстанс обслуживает реальных клиентов (не анонимное демо), обязательно задайте
в .env:
API_SECRET_KEY=<случайная строка>
STRICT_AUTH=1
STRICT_AUTH=1 заставляет приложение отказаться стартовать, если API_SECRET_KEY
не задан, вместо тихого отката в open mode (все запросы = owner-права в Default
tenant). Без STRICT_AUTH забытый API_SECRET_KEY даёт warning в логах при
старте, но сервис всё равно поднимется в open mode — это осознанный компромисс
только для локальной разработки и публичного демо (см. F-C5 в
docs/COMPROMISES.md).
Gemini free tier: лимит RPM/RPD покрывает демо-трафик портфолио. Жёсткие предохранители внутри приложения: месячный кап тенанта + per-IP троттлинг + circuit breaker. Ожидаемый денежный расход при бесплатном тарифе Gemini: 0 ₽.