Конфигурация Doppler
Обзор
Doppler используется для хранения глобальных секретов — переменных, общих для всех интеграций. Секреты конкретных интеграций (API ключи CRM и т.д.) хранятся в D1.
┌─────────────────────────────────────────────────────────────────────┐
│ DOPPLER (Уровень 1) │
│ Глобальные секреты │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ШИФРОВАНИЕ: │
│ ├── CRYPTO_KEY — ключ для шифрования секретов в D1 │
│ └── CRYPTO_SALT — соль для PBKDF2 key derivation │
│ │
│ ВНЕШНИЕ СЕРВИСЫ (общие для всех интеграций): │
│ ├── OPENAI_API_KEY — OpenAI API │
│ ├── CLAUDE_API_KEY — Claude API │
│ ├── GROQ_API_KEY — Groq API │
│ ├── QDRANT_URL/API_KEY — Vector store │
│ └── UPSTASH_REDIS_URL/TOKEN — Rate limiting │
│ │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ CLOUDFLARE D1 (Уровень 2) │
│ Per-integration секреты │
├─────────────────────────────────────────────────────────────────────┤
│ Хранятся в таблице creds, зашифрованы CRYPTO_KEY + CRYPTO_SALT │
│ ├── sofa/NETHUNT_API_KEY │
│ ├── sofa/SAAS_ASSISTANT_ID │
│ └── rozetka/CRM_TOKEN │
└─────────────────────────────────────────────────────────────────────┘Полный список переменных Doppler
| Переменная | Описание | local | dev | prod |
|---|---|---|---|---|
CRYPTO_KEY | Ключ шифрования (64 hex символа) | Генерировать | Генерировать | Генерировать |
CRYPTO_SALT | Соль для шифрования (16+ символов) | Генерировать | Генерировать | Генерировать |
OPENAI_API_KEY | API ключ OpenAI | Опционально | Да | Да |
GROQ_API_KEY | API ключ Groq | Опционально | Да | Да |
SAAS_API_URL | URL SaaS API | https://api.dev.happ.tools | https://api.dev.happ.tools | https://api.happ.tools |
SAAS_ACCESS_TOKEN | Токен SaaS API | Да | Да | Да |
💡 D1/KV ID не хранятся в Doppler. Для local — подставляются автоматически скриптом
generate:env. Для dev/prod — указываются вwrangler.toml.tplили CI/CD.
Что нужно добавить в Doppler
Для всех окружений (local, dev, prod)
bash
# Генерация ключа шифрования
openssl rand -hex 32
# → a75a9de60aeebfc889967594f6aa94cfd745737486a441a83dc51c10928c89a1
# Добавить в Doppler
CRYPTO_KEY=<сгенерированный-ключ>
CRYPTO_SALT=integ-core # Любая строка 16+ символовКак добавить переменные в Doppler
Через веб-интерфейс
- Откройте https://dashboard.doppler.com
- Выберите проект
integ-core - Выберите конфиг (
local,devилиprod) - Нажмите "Add Secret"
- Введите имя переменной и значение
Через CLI
bash
# Для local
doppler secrets set CRYPTO_KEY <ключ> --config local
doppler secrets set CRYPTO_SALT integ-core --config local
# Для dev
doppler secrets set CRYPTO_KEY <ключ> --config dev
doppler secrets set CRYPTO_SALT integ-core-dev --config dev
# Для prod
doppler secrets set CRYPTO_KEY <ключ> --config prod
doppler secrets set CRYPTO_SALT integ-core-prod --config prodКак это работает
Когда вы запускаете
pnpm start sofa:generate-env.script.tsзагружает все секреты из Doppler- Подставляет placeholder ID для D1/KV в
wrangler.toml.tpl - Генерирует готовый
wrangler.toml - Копирует секреты в
.dev.vars - Запускает
wrangler dev
wrangler.tomlНЕ коммитится в git (добавлен в.gitignore)- Генерируется заново каждый раз
- Для local ID = placeholder, для dev/prod — реальные ID из wrangler.toml.tpl
Полная инструкция для разработчика
bash
# 1. Установить Doppler CLI
# https://docs.doppler.com/docs/install
# 2. Авторизоваться
doppler login
# 3. Выбрать проект
doppler setup
# Выберите проект "integ-core" и конфиг "local"
# 4. Запустить проект
docker compose up -d # Запустить Docker сервисы
pnpm install # Установить зависимости
pnpm start sofa # Запустить Sofa интеграцию
# Автоматически:
# - Загружаются все секреты из Doppler (local)
# - Генерируется .dev.vars файл
# - Генерируется wrangler.toml с placeholder D1/KV ID
# - Запускается wrangler devГотово! Никаких вручную вводимых секретов не требуется.