Преминете към основното съдържание

Конфигурация

Licensing Server се конфигурира изцяло чрез environment variables. В development се зареждат от .env файл (чрез godotenv), а в production се подават като secrets/env vars в Docker container.

Зареждане

  1. godotenv.Load() -- зарежда .env файл ако съществува (dev only)
  2. config.Load() -- чете всички env vars с fallback стойности
  3. RSA ключовете се четат от env var или от файл
  4. Production validation -- при GIN_MODE=release се проверяват задължителни настройки

Пълен списък на променливите

Database

ПроменливаDefaultЗадължителнаОписание
DATABASE_URLpostgresql://dictaro:dictaro-dev@localhost:5433/dictaro?sslmode=disableДаPostgreSQL connection string. В production изисква sslmode=require.

JWT / RSA Keys

ПроменливаDefaultЗадължителнаОписание
JWT_PRIVATE_KEY--Да*PEM съдържание на RSA private key
JWT_PUBLIC_KEY--Да*PEM съдържание на RSA public key
JWT_PRIVATE_KEY_PATHkeys/private.pemНеПът до private key файл (fallback)
JWT_PUBLIC_KEY_PATHkeys/public.pemНеПът до public key файл (fallback)
JWT_EXPIRY_DAYS7НеДни до изтичане на JWT token

*Задължителни са или env vars (JWT_PRIVATE_KEY/JWT_PUBLIC_KEY), или файловете на пътищата. Сървърът не стартира без тях.

Application

ПроменливаDefaultЗадължителнаОписание
BASE_URLhttp://localhost:8000ДаПубличен URL на сървъра (за redirect URLs, email links)
CORS_ORIGINShttp://localhost:3000ДаПозволени CORS origins (JSON array или comma-separated)
SESSION_SECRETchange-me-in-productionДаSecret за session cookie encryption. В production: минимум 32 символа.
PORT8000НеHTTP порт за основния сървър
METRICS_PORT9090НеHTTP порт за Prometheus metrics
GIN_MODEreleaseНеGin framework mode (release или debug)

OAuth -- Google

ПроменливаDefaultЗадължителнаОписание
GOOGLE_CLIENT_ID--За Google OAuthGoogle OAuth Client ID
GOOGLE_CLIENT_SECRET--За Google OAuthGoogle OAuth Client Secret

OAuth -- Microsoft Azure

ПроменливаDefaultЗадължителнаОписание
AZURE_CLIENT_ID--За Azure OAuthAzure App Registration Client ID
AZURE_CLIENT_SECRET--За Azure OAuthAzure App Registration Client Secret
AZURE_TENANT_IDcommonНеAzure AD tenant. common = multi-tenant (personal + work accounts).

OAuth -- GitHub

ПроменливаDefaultЗадължителнаОписание
GITHUB_CLIENT_ID--За GitHub OAuthGitHub OAuth App Client ID
GITHUB_CLIENT_SECRET--За GitHub OAuthGitHub OAuth App Client Secret

Stripe Billing

ПроменливаDefaultЗадължителнаОписание
STRIPE_SECRET_KEY--ДаStripe API secret key (sk_test_... или sk_live_...)
STRIPE_WEBHOOK_SECRET--Да (prod)Stripe webhook signing secret (whsec_...). В production не може да е празен или whsec_placeholder.
STRIPE_PRODUCT_ID--ДаStripe Product ID (prod_...) за Dictaro Pro subscription

Email (Resend)

ПроменливаDefaultЗадължителнаОписание
RESEND_API_KEY--За email функцииResend API key. Ако е празен, email-ите се принтират в stdout (dev mode).
EMAIL_FROMDictaro <noreply@dictaro.ai>НеАдрес на изпращача за email-и

Cloudflare Turnstile

ПроменливаDefaultЗадължителнаОписание
TURNSTILE_SITE_KEY--Да (prod)Публичен ключ, вграден в login HTML
TURNSTILE_SECRET_KEY--Да (prod)Секретен ключ за server-side верификация. В production е задължителен.

Usage Quota

ПроменливаDefaultЗадължителнаОписание
QUOTA_MINUTES10НеQuota в минути per цикъл за free потребители
COOLDOWN_HOURS5НеCooldown период в часове след изчерпване на quota
TRIAL_DAYS7НеTrial период в дни за нови потребители
TYPING_RATIO4.0НеМножител за изчисляване на спестено време от типене

Device Account Limiting

ПроменливаDefaultЗадължителнаОписание
DEVICE_ACCOUNTS_MAX2НеМаксимален брой отделни акаунти per устройство в cooldown прозорец

Development

ПроменливаDefaultЗадължителнаОписание
DEV_DEFAULT_PLAN--НеDefault план за нови потребители. Задайте pro за да пропуснете Stripe в dev.

Redirect URIs

ПроменливаDefaultЗадължителнаОписание
ALLOWED_REDIRECT_URIShttp://localhost,http://127.0.0.1Да (prod)Comma-separated списък от позволени redirect URI prefix-и

Production Validation

При GIN_MODE=release сървърът отказва да стартира ако:

Тези проверки предотвратяват случайно деплойване с dev настройки в production.

Примерен .env файл

# Database
DATABASE_URL=postgresql://dictaro:dictaro-dev@localhost:5433/dictaro?sslmode=disable

# Application
BASE_URL=http://localhost:8000
CORS_ORIGINS=["http://localhost:3000","http://localhost:9876"]
SESSION_SECRET=change-me-in-production-min-32-chars

# JWT RSA Keys (PEM content или file paths за local dev)
JWT_PRIVATE_KEY=
JWT_PUBLIC_KEY=
JWT_PRIVATE_KEY_PATH=keys/private.pem
JWT_PUBLIC_KEY_PATH=keys/public.pem
JWT_EXPIRY_DAYS=7

# OAuth
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
AZURE_CLIENT_ID=
AZURE_CLIENT_SECRET=
AZURE_TENANT_ID=common
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=

# Stripe
STRIPE_SECRET_KEY=sk_test_...
STRIPE_WEBHOOK_SECRET=whsec_...
STRIPE_PRODUCT_ID=prod_...

# Email (Resend)
RESEND_API_KEY=
EMAIL_FROM=Dictaro <noreply@dictaro.ai>

# Bot Protection (Cloudflare Turnstile)
TURNSTILE_SITE_KEY=
TURNSTILE_SECRET_KEY=

# Usage Quota
QUOTA_MINUTES=10
COOLDOWN_HOURS=5
TRIAL_DAYS=7
TYPING_RATIO=4.0

# Dev: auto-assign pro plan
DEV_DEFAULT_PLAN=