-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path.env.example
More file actions
106 lines (87 loc) · 3.54 KB
/
Copy path.env.example
File metadata and controls
106 lines (87 loc) · 3.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# ==========================================
# NovelTrans Environment Configuration Template
# Copy this file to .env and fill in actual values
# ==========================================
# MySQL
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DB=novel_translator
MYSQL_USER=root
MYSQL_PASSWORD=your_mysql_password
# Redis
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
# JWT (at least 32 characters)
JWT_SECRET=your_jwt_secret_min_32_chars
# Mail (QQ Mail example)
MAIL_USERNAME=your_email@qq.com
MAIL_PASSWORD=your_smtp_authorization_code
# Internal service-to-service authentication (Java Backend ↔ Python Translation Service)
# Must be a strong random string, shared by both services
TRANSLATE_SERVICE_API_KEY=your_shared_secret_min_32_chars
# MTranServer — independent translation engine (direct HTTP connection from backend)
MTRAN_HOST=localhost
MTRAN_PORT=8989
MTRAN_API_KEY=your_mtran_secret_min_32_chars
# Mock mode: true = return simulated responses for dev/load-testing, false = connect to real MTranServer
MTRAN_MOCK=false
# Python LLM Engine Mock (optional, true = simulate translation, skip real API calls)
TRANSLATION_MOCK=false
# Rate limiting (optional, production defaults)
TRANSLATION_IP_RATE_LIMIT_MAX_REQUESTS=100
TRANSLATION_KEY_RATE_LIMIT_MAX_REQUESTS=1000
# Monthly translation quota (matches pricing plan: FREE 100K, PRO 500K, MAX 2M chars)
TRANSLATION_FREE_MONTHLY_CHARS=100000
TRANSLATION_PRO_MONTHLY_CHARS=500000
TRANSLATION_MAX_MONTHLY_CHARS=2000000
# Per-user concurrency limits (matches pricing plan: FREE 10, PRO 50, MAX 100)
TRANSLATION_LIMIT_FREE_CONCURRENCY=10
TRANSLATION_LIMIT_PRO_CONCURRENCY=50
TRANSLATION_LIMIT_MAX_CONCURRENCY=100
TRANSLATION_LIMIT_ANONYMOUS_CONCURRENCY=5
# TPM (tokens per minute) limits
TRANSLATION_LIMIT_FREE_TPM=10000
TRANSLATION_LIMIT_PRO_TPM=50000
TRANSLATION_LIMIT_MAX_TPM=200000
TRANSLATION_LIMIT_ANONYMOUS_TPM=1000
# Daily request limits (matches pricing plan: FREE 500, PRO 5000)
TRANSLATION_LIMIT_FREE_DAILY=500
TRANSLATION_LIMIT_PRO_DAILY=5000
TRANSLATION_LIMIT_MAX_DAILY=999999999
# Rate limit window (seconds)
TRANSLATION_IP_RATE_LIMIT_WINDOW_SECONDS=60
TRANSLATION_KEY_RATE_LIMIT_WINDOW_SECONDS=60
# LLM Translation API (DashScope / OpenAI compatible)
LLM_API_KEY=
LLM_BASE_URL=
LLM_MODEL=
# Embedding API (RAG Translation Memory)
# Option A: OpenAI-compatible API (recommended, supports DashScope, SiliconFlow, Zhipu, etc.)
EMBEDDING_PROVIDER=openai
EMBEDDING_OPENAI_API_KEY=sk-your_key
EMBEDDING_OPENAI_BASE_URL=https://api.openai.com
EMBEDDING_OPENAI_MODEL=text-embedding-3-small
# DashScope example:
# EMBEDDING_OPENAI_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
# EMBEDDING_OPENAI_MODEL=text-embedding-v4
# Option B: Ollama local self-hosted (requires NVIDIA GPU)
# EMBEDDING_PROVIDER=ollama
# EMBEDDING_OLLAMA_BASE_URL=http://localhost:11434
# EMBEDDING_OLLAMA_MODEL=bge-m3
# Translation OpenAI API (optional, direct OpenAI fallback)
TRANSLATION_OPENAI_API_KEY=
# Translation Service Thread Pool (optional, default 2)
TRANSLATE_MAX_WORKERS=2
# Stripe Payments (Test mode)
STRIPE_SECRET_KEY=sk_test_your_stripe_secret_key
STRIPE_WEBHOOK_SECRET=whsec_test_your_webhook_secret
STRIPE_SUCCESS_URL=http://localhost:7341/subscription/result
STRIPE_CANCEL_URL=http://localhost:7341/subscription/result?canceled=true
STRIPE_PRO_MONTHLY_PRICE_ID=price_pro_monthly
STRIPE_PRO_YEARLY_PRICE_ID=price_pro_yearly
STRIPE_MAX_MONTHLY_PRICE_ID=price_max_monthly
STRIPE_MAX_YEARLY_PRICE_ID=price_max_yearly
# Stripe Account ID prefix (for webhook stress-testing to generate event IDs)
STRIPE_ACCOUNT_PREFIX=YOUR_PREFIX