-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.example
More file actions
159 lines (140 loc) · 5.49 KB
/
env.example
File metadata and controls
159 lines (140 loc) · 5.49 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
# Server Configuration
SERVER_HOST=0.0.0.0
SERVER_PORT=8080
SERVER_READ_TIMEOUT=15s
SERVER_WRITE_TIMEOUT=15s
SERVER_IDLE_TIMEOUT=120s
SERVER_GRACEFUL_SHUTDOWN_TIMEOUT=10s
# Database Configuration
DB_HOST=postgres
# DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_NAME=go_backend_db
DB_SSLMODE=disable
DB_MAX_OPEN_CONNS=25
DB_MAX_IDLE_CONNS=5
DB_CONN_MAX_LIFETIME=5m
DB_CONN_MAX_IDLE_TIME=10m
# Redis Configuration
REDIS_HOST=redis
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_DB=0
REDIS_POOL_SIZE=50
REDIS_MIN_IDLE_CONNS=10
REDIS_DIAL_TIMEOUT=2s
REDIS_READ_TIMEOUT=2s
REDIS_WRITE_TIMEOUT=2s
# OTP Flow Configuration
OTP_CODE_LENGTH=6
OTP_TTL=2m
OTP_RESEND_COOLDOWN=2m
OTP_MAX_ATTEMPTS=3
OTP_TENANT_CACHE_TTL=5m
OTP_PROVIDER_TIMEOUT=2s
# OTP send rate limit (legacy phone-only values remain supported)
OTP_SEND_RATE_LIMIT_ENABLED=false
OTP_SEND_RATE_LIMIT_MAX=5
OTP_SEND_RATE_LIMIT_WINDOW=10m
OTP_SEND_RATE_LIMIT_STRATEGY=fixed_window
OTP_SEND_RATE_LIMIT_PHONE_ENABLED=true
OTP_SEND_RATE_LIMIT_PHONE_STRATEGY=fixed_window
OTP_SEND_RATE_LIMIT_PHONE_MAX=5
OTP_SEND_RATE_LIMIT_PHONE_WINDOW=10m
OTP_SEND_RATE_LIMIT_TENANT_ENABLED=false
OTP_SEND_RATE_LIMIT_TENANT_STRATEGY=fixed_window
OTP_SEND_RATE_LIMIT_TENANT_MAX=100
OTP_SEND_RATE_LIMIT_TENANT_WINDOW=1s
# Fake SMS Provider Configuration
OTP_FAKE_SMS_MIN_DELAY=20ms
OTP_FAKE_SMS_MAX_DELAY=30ms
# Local/dev only: stores plaintext OTP in Redis key debug:otp-code:{tenant_id}:{phone}
OTP_FAKE_SMS_DEBUG_CODE_REDIS=false
OTP_FAKE_SMS_DEBUG_CODE_TTL=60s
# MongoDB Configuration
MONGO_URI=mongodb://root:secret@mongo:27017/admin?authSource=admin
MONGO_DB=otp_bench
MONGO_COLLECTION=benchmark_kv
MONGO_MAX_POOL_SIZE=200
MONGO_MIN_POOL_SIZE=20
MONGO_CONNECT_TIMEOUT=2s
MONGO_SERVER_SELECTION_TIMEOUT=2s
MONGO_SOCKET_TIMEOUT=2s
MONGO_HEARTBEAT_INTERVAL=10s
# JWT Configuration
JWT_SECRET_KEY=your-secret-key-change-in-production-min-32-chars
JWT_REFRESH_SECRET=your-refresh-secret-key-change-in-production-min-32-chars
JWT_EXPIRATION=24h
# Application Configuration
GIN_MODE=debug
# GIN_MODE=release
# Logging Configuration
LOG_LEVEL=info
# OpenTelemetry Tracing Configuration
OTEL_TRACING_ENABLED=true
OTEL_SERVICE_NAME=go-backend-service
OTEL_SERVICE_VERSION=1.0.0
# Tempo Configuration (برای ارسال traces به Tempo)
# برای اجرای محلی با Tempo: OTEL_TEMPO_ENDPOINT=localhost:4318
# برای Docker Compose: OTEL_TEMPO_ENDPOINT=tempo:4318
# OTEL_TEMPO_ENABLED=true
# OTEL_TEMPO_ENDPOINT=localhost:4318
# Jaeger Configuration (برای ارسال traces به Jaeger)
# برای اجرای محلی: OTEL_JAEGER_ENDPOINT=localhost:4320
# برای Docker Compose: OTEL_JAEGER_ENDPOINT=jaeger:4318
# OTEL_JAEGER_ENABLED=true
# OTEL_JAEGER_ENDPOINT=localhost:4320
# Route-Based Tracing Policy Configuration
# این تنظیمات به شما امکان کنترل sampling traces بر اساس route را میدهد
# برای غیرفعال کردن policy و استفاده از رفتار پیشفرض (sample همه traces):
# OTEL_ROUTE_POLICY_ENABLED=false
# فعالسازی route-based policy
OTEL_ROUTE_POLICY_ENABLED=true
# Routes که همیشه trace میشوند (ALWAYS)
# برای endpoints مهم که میخواهید همیشه trace شوند
OTEL_ROUTE_ALWAYS=/delayed-hello,/test-error
# Routes که هرگز trace نمیشوند (DROP)
# برای endpoints پرترافیک که نمیخواهید trace شوند (مثل /metrics)
OTEL_ROUTE_DROP=/metrics
# Routes با sampling ratio (RATIO)
# فرمت: path=ratio (ratio باید بین 0.0 و 1.0 باشد)
# مثال: /health=0.01 یعنی 1% از requests به /health trace میشوند
# برای endpoints پرترافیک که میخواهید گاهی trace شوند
OTEL_ROUTE_RATIO=/health=0.01,/live=0.01,/ready=0.01
# Default policy برای routes که در لیستهای بالا نیستند
# مقادیر ممکن: always, ratio, drop
# always: همه traces را sample میکند (پیشفرض)
# ratio: از OTEL_ROUTE_DEFAULT_RATIO استفاده میکند
# drop: هیچ trace ای sample نمیکند
OTEL_ROUTE_DEFAULT=always
# Default ratio (فقط زمانی استفاده میشود که OTEL_ROUTE_DEFAULT=ratio)
# باید بین 0.0 و 1.0 باشد (مثلاً 0.01 = 1%, 0.1 = 10%, 1.0 = 100%)
OTEL_ROUTE_DEFAULT_RATIO=1.0
# ============================================================================
# Load Testing Sampling Policy (Optional)
# ============================================================================
# این تنظیمات برای جلوگیری از overload شدن Jaeger/Tempo در طول تستهای با بار بالا
# برای اطلاعات بیشتر، به docs/LOAD_TESTING_TRACING_SAMPLING.md مراجعه کنید
#
# برای فعالسازی load test sampling policy، تنظیمات زیر را جایگزین کنید:
#
# # Load Test Sampling Policy (Drop high-volume endpoints)
# OTEL_ROUTE_POLICY_ENABLED=true
# OTEL_ROUTE_ALWAYS=/test-error,/delayed-hello
# OTEL_ROUTE_DROP=/hello,/health,/ready,/live,/metrics
# OTEL_ROUTE_DEFAULT=drop
# OTEL_ROUTE_DEFAULT_RATIO=1.0
#
# یا برای sampling با 0.1%:
#
# # Load Test Sampling Policy (0.1% sampling for high-volume endpoints)
# OTEL_ROUTE_POLICY_ENABLED=true
# OTEL_ROUTE_ALWAYS=/test-error,/delayed-hello
# OTEL_ROUTE_DROP=/metrics
# OTEL_ROUTE_RATIO=/hello=0.001,/health=0.001,/ready=0.001,/live=0.001
# OTEL_ROUTE_DEFAULT=drop
# OTEL_ROUTE_DEFAULT_RATIO=1.0
#
# بعد از اتمام load test، به تنظیمات پیشفرض بالا برگردید.