-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
475 lines (384 loc) · 17 KB
/
Copy path.env.example
File metadata and controls
475 lines (384 loc) · 17 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
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
#================================================================================================
# TelemetryFlow Core - ENVIRONMENT CONFIGURATION
#================================================================================================
#
# Sources:
# - Backend (NestJS API)
# - Frontend (Vue 3 / Vite)
# - Docker Compose (Infrastructure)
#
# SECURITY NOTICE:
# This file contains DEFAULT VALUES suitable for DEVELOPMENT ONLY.
# DO NOT use these values in production environments.
#
# Before deploying to production:
# 1. Generate secure secrets: pnpm run generate:secrets
# 2. Change all default passwords and credentials
# 3. Configure CORS_ORIGIN with specific trusted domains
#
# Quick Start: README.md
# Documentation: docs/
#
#================================================================================================
#================================================================================================
# [1] APPLICATION CONFIGURATION
#================================================================================================
APP_NAME=TelemetryFlow
NODE_ENV=development
# Backend API Port (NestJS)
PORT=3000
# Frontend Dev Server Port (Vite) — only used in local dev, not Docker
FRONTEND_PORT=3101
# Log level: debug | info | warn | error
LOG_LEVEL=info
# Timezone
TZ=UTC
# CORS Configuration
# Development: * allows all origins
# Production: MUST specify comma-separated list of trusted origins (no wildcards)
CORS_ORIGIN=*
# Domain Configuration
MAIN_DOMAIN=telemetryflow.id
DEMO_DOMAIN=demo.telemetryflow.id
# Version
VERSION=1.4.0
#================================================================================================
# [2] FRONTEND — APPLICATION SETTINGS
#================================================================================================
TELEMETRYFLOW_BASE_URL=/
TELEMETRYFLOW_APP_TITLE="TELEMETRYFLOW"
TELEMETRYFLOW_APP_CODE="TFO-Viz"
# Enable mock data for development
TELEMETRYFLOW_USE_MOCK=false
# Default refresh interval (ms)
TELEMETRYFLOW_REFRESH_INTERVAL=5000
# Enable frontend caching
TELEMETRYFLOW_ENABLE_CACHE=true
TELEMETRYFLOW_CACHE_TTL=300000
#================================================================================================
# [3] FRONTEND — API ENDPOINTS
#================================================================================================
# Core API endpoint
TELEMETRYFLOW_API_URL=http://localhost:3000
TELEMETRYFLOW_IAM_API_URL=http://localhost:3000
# API base URL for frontend → backend
TELEMETRYFLOW_API_BASE_URL=http://localhost:3000
# Frontend datatable configuration
DATATABLE_MAX_ROWS=5000
TELEMETRYFLOW_LIMIT_DATA=5000
TELEMETRYFLOW_LIMIT_DATA_MAX=100000
TELEMETRYFLOW_SCAN_LIMIT_DATA=5000000
# GitHub repository URL
GITHUB_REPOSITORY_URL=https://github.com/telemetryflow/telemetryflow-core
#================================================================================================
# [4] FRONTEND — AUTHENTICATION & SSO
#================================================================================================
TELEMETRYFLOW_API_KEY_ID=
TELEMETRYFLOW_API_KEY_SECRET=
TELEMETRYFLOW_API_KEY_HEADER=x-api-key
# Login credentials (admin dashboard)
TELEMETRYFLOW_VIZ_USERNAME=demo.telemetryflow
TELEMETRYFLOW_VIZ_EMAIL=demo.telemetryflow@telemetryflow.id
TELEMETRYFLOW_VIZ_PASSWORD=
# SSO Authentication Providers
TELEMETRYFLOW_SSO_GOOGLE=false
TELEMETRYFLOW_SSO_MICROSOFT=false
TELEMETRYFLOW_SSO_APPLE=false
TELEMETRYFLOW_SSO_SLACK=false
TELEMETRYFLOW_SSO_COGNITO=false
TELEMETRYFLOW_SSO_GITHUB=false
# reCAPTCHA v3
TELEMETRYFLOW_RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=
RECAPTCHA_MIN_SCORE=0.5
#================================================================================================
# [5] FRONTEND — WHITE LABEL / BRANDING
#================================================================================================
TELEMETRYFLOW_BRAND_NAME="TelemetryFlow Core"
TELEMETRYFLOW_BRAND_TAGLINE="IAM, AI Assistant & Audit Platform"
TELEMETRYFLOW_DOMAIN=demo.telemetryflow.id
TELEMETRYFLOW_GITHUB_URL=https://github.com/telemetryflow/telemetryflow-core
# Logo Paths (relative to src/assets)
TELEMETRYFLOW_LOGO_LIGHT=src/assets/tfo-logo-light.svg
TELEMETRYFLOW_LOGO_DARK=src/assets/tfo-logo-dark.svg
TELEMETRYFLOW_LOGO_ICON=src/assets/favicon.svg
TELEMETRYFLOW_LOGO_WIDTH=180px
TELEMETRYFLOW_LOGO_HEIGHT=auto
TELEMETRYFLOW_COPYRIGHT_COMPANY=TelemetryFlow
TELEMETRYFLOW_COPYRIGHT_YEAR=2026
TELEMETRYFLOW_SHOW_POWERED_BY=false
TELEMETRYFLOW_LINK_WEBSITE=https://telemetryflow.id
TELEMETRYFLOW_LINK_DOCS=https://docs.telemetryflow.id
TELEMETRYFLOW_LINK_SUPPORT=https://support.telemetryflow.id
#================================================================================================
# [6] BACKEND — LOGGING CONFIGURATION
#================================================================================================
# Choose logging implementation:
# nestjs — Native NestJS Logger (console only)
# winston — Winston Logger with multiple transports
LOGGER_TYPE=winston
LOG_PRETTY_PRINT=false
LOG_FORMAT=json
LOG_COLORIZE=false
LOG_SKIP_PATHS=/health,/metrics,/healthz,/ready
#------------------------------------------------------------------------------------------------
# OpenTelemetry Log Transport
#------------------------------------------------------------------------------------------------
OTEL_LOGS_ENABLED=true
#------------------------------------------------------------------------------------------------
# File Transport (Daily Rotation)
#------------------------------------------------------------------------------------------------
LOG_FILE_ENABLED=false
LOG_FILE_DIRNAME=logs
LOG_FILE_FILENAME=app-%DATE%.log
LOG_FILE_DATE_PATTERN=YYYY-MM-DD
LOG_FILE_ZIPPED=true
LOG_FILE_MAX_SIZE=20m
LOG_FILE_MAX_FILES=14d
LOG_FILE_JSON=true
#------------------------------------------------------------------------------------------------
# ClickHouse Log Transport
#------------------------------------------------------------------------------------------------
CLICKHOUSE_LOGS_ENABLED=false
CLICKHOUSE_LOGS_TABLE=logs
CLICKHOUSE_FLUSH_INTERVAL=5000
CLICKHOUSE_BUFFER_LIMIT=2000
CLICKHOUSE_REQUEST_TIMEOUT=120
#================================================================================================
# [7] BACKEND — OPENTELEMETRY CONFIGURATION
#================================================================================================
OTEL_ENABLED=true
OTEL_SERVICE_NAME=telemetryflow-core
SERVICE_VERSION=1.4.0
SERVICE_NAMESPACE=telemetryflow
SERVICE_TEAM=core
# OTEL Exporter endpoint
# Development: http://localhost:4318 | Docker: http://otel-collector:4318
OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
#================================================================================================
# [8] BACKEND — POSTGRESQL CONFIGURATION
#================================================================================================
# Note: Docker containers get POSTGRES_HOST=postgres override from docker-compose.yml
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DB=telemetryflow_db
POSTGRES_USER=tfo_admin
POSTGRES_USERNAME=tfo_admin
POSTGRES_PASSWORD=
# TypeORM aliases
DATABASE_HOST=localhost
DATABASE_PORT=5432
DATABASE_NAME=telemetryflow_db
DATABASE_USERNAME=tfo_admin
DATABASE_SSL=false
DATABASE_POOL_SIZE=10
DATABASE_LOGGING=false
#================================================================================================
# [9] BACKEND — CLICKHOUSE CONFIGURATION
#================================================================================================
# Note: Docker containers get CLICKHOUSE_HOST override from docker-compose.yml
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_HTTP_PORT=8123
CLICKHOUSE_NATIVE_PORT=9000
CLICKHOUSE_DB=telemetryflow_db
CLICKHOUSE_USER=tfo_admin
CLICKHOUSE_PASSWORD=
#================================================================================================
# [10] BACKEND — REDIS CONFIGURATION
#================================================================================================
# Redis is used for: L2 Cache, BullMQ Queues, Sessions
# Note: Docker containers get REDIS_HOST override from docker-compose.yml
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
REDIS_MAX_MEMORY=1024mb
# Redis Database Separation
REDIS_DB=0
REDIS_SESSION_DB=0
REDIS_CACHE_DB=0
REDIS_QUEUE_DB=1
#================================================================================================
# [11] BACKEND — NATS CONFIGURATION (Event Streaming)
#================================================================================================
# Note: Docker containers get NATS_URL override from docker-compose.yml
NATS_URL=nats://localhost:4222
NATS_CLUSTER_ID=telemetryflow-cluster
#================================================================================================
# [12] BACKEND — CACHE CONFIGURATION (Multi-Level L1/L2)
#================================================================================================
CACHE_L1_ENABLED=true
CACHE_L1_TTL=60
CACHE_L1_MAX_SIZE=5000
CACHE_L2_ENABLED=true
CACHE_L2_TTL=3600
CACHE_KEY_PREFIX=tf:cache:
CACHE_ENABLED=true
CACHE_DEBUG=false
#================================================================================================
# [13] BACKEND — BULLMQ QUEUE CONFIGURATION
#================================================================================================
ENABLE_BULLMQ=true
#------------------------------------------------------------------------------------------------
# Queue Worker Concurrency
#------------------------------------------------------------------------------------------------
QUEUE_EVENTS_CONCURRENCY=3
QUEUE_ALERTS_CONCURRENCY=2
QUEUE_NOTIFICATIONS_CONCURRENCY=1
QUEUE_CLEANUP_CONCURRENCY=1
#------------------------------------------------------------------------------------------------
# Queue Rate Limits (jobs per second)
#------------------------------------------------------------------------------------------------
QUEUE_ALERT_RATE_LIMIT=100
#------------------------------------------------------------------------------------------------
# Queue Retry Configuration
#------------------------------------------------------------------------------------------------
QUEUE_MAX_ATTEMPTS=5
QUEUE_BACKOFF_DELAY=2000
#------------------------------------------------------------------------------------------------
# Queue Job Cleanup
#------------------------------------------------------------------------------------------------
QUEUE_KEEP_COMPLETED=1000
QUEUE_KEEP_FAILED=5000
QUEUE_COMPLETED_AGE=86400
QUEUE_FAILED_AGE=604800
QUEUE_ENABLED=true
QUEUE_DEBUG=false
#================================================================================================
# [14] BACKEND — API KEYS, JWT & SESSION
#================================================================================================
# SECURITY CRITICAL: These secrets MUST be changed in production
# Generate: pnpm run generate:secrets
JWT_SECRET=
JWT_REFRESH_SECRET=
JWT_ACCESS_EXPIRY=24h
JWT_REFRESH_EXPIRY=30d
JWT_EXPIRES_IN=24h
SESSION_SECRET=
ENCRYPTION_KEY=
MFA_ENCRYPTION_KEY=
LLM_ENCRYPTION_KEY=
#================================================================================================
# [15] BACKEND — EMAIL / SMTP CONFIGURATION
#================================================================================================
SMTP_ENABLED=false
SMTP_HOST=smtp.telemetryflow.id
SMTP_PORT=587
SMTP_SECURE=true
SMTP_USER=
SMTP_PASSWORD=
SMTP_FROM="TelemetryFlow Core <noreply@telemetryflow.id>"
SMTP_FROM_ADDRESS=noreply@telemetryflow.id
SMTP_FROM_NAME=TelemetryFlow Core
SMTP_REPLY_TO=support@telemetryflow.id
APP_URL=http://localhost:3000
#================================================================================================
# [16] BACKEND — RATE LIMITING CONFIGURATION
#================================================================================================
THROTTLE_TTL=60000
THROTTLE_LIMIT=500
#================================================================================================
# [17] BACKEND — DEFAULT CONFIGURATION
#================================================================================================
# Default Organization ID for alert rule evaluation
DEFAULT_ORGANIZATION_ID=
HOSTNAME=localhost
#================================================================================================
# [18] DOCKER-COMPOSE CONFIGURATION
#================================================================================================
# Usage:
# Core services only: docker-compose --profile core up -d
# Core + monitoring: docker-compose --profile core --profile monitoring up -d
# All services: docker-compose --profile all up -d
#
# Profiles:
# - core : postgres, clickhouse, redis, nats, backend, frontend
# - monitoring : Jaeger
# - tools : Portainer
# - all : All services
#------------------------------------------------------------------------------------------------
# Volume Configuration
#------------------------------------------------------------------------------------------------
VOLUMES_BASE_PATH=/opt/data/docker/telemetryflow-core
VOLUMES_DRIVER=local
#------------------------------------------------------------------------------------------------
# Data Paths (for bind mounts)
#------------------------------------------------------------------------------------------------
DATA_POSTGRESQL=/opt/data/docker/telemetryflow-core/postgresql
DATA_CLICKHOUSE=/opt/data/docker/telemetryflow-core/clickhouse
DATA_REDIS=/opt/data/docker/telemetryflow-core/redis
DATA_NATS=/opt/data/docker/telemetryflow-core/nats
DATA_PORTAINER=/opt/data/docker/telemetryflow-core/portainer
#------------------------------------------------------------------------------------------------
# Configuration File Paths
#------------------------------------------------------------------------------------------------
CONFIG_POSTGRESQL=./config/postgresql/postgresql.conf
CONFIG_CLICKHOUSE=./config/clickhouse/config.xml
#================================================================================================
# [19] SERVICE VERSIONS
#================================================================================================
NODE_VERSION=22
POSTGRES_VERSION=16-alpine
CLICKHOUSE_VERSION=latest
REDIS_VERSION=7-alpine
NATS_VERSION=2-alpine
PORTAINER_VERSION=latest
#================================================================================================
# [20] CONTAINER NAMES
#================================================================================================
CONTAINER_BACKEND=telemetryflow_core_backend
CONTAINER_FRONTEND=telemetryflow_core_frontend
CONTAINER_POSTGRES=telemetryflow_core_postgres
CONTAINER_CLICKHOUSE=telemetryflow_core_clickhouse
CONTAINER_REDIS=telemetryflow_core_redis
CONTAINER_NATS=telemetryflow_core_nats
CONTAINER_PORTAINER=telemetryflow_core_portainer
#================================================================================================
# [21] PORT MAPPINGS
#================================================================================================
PORT_BACKEND=3000
PORT_FRONTEND=8080
PORT_POSTGRES=5432
PORT_CLICKHOUSE_HTTP=8123
PORT_CLICKHOUSE_NATIVE=9000
PORT_REDIS=6379
PORT_NATS_CLIENT=4222
PORT_NATS_MONITOR=8222
PORT_PORTAINER=9100
PORT_PORTAINER_HTTPS=9443
#================================================================================================
# [22] STATIC IP ADDRESSES (Docker internal networking)
#================================================================================================
# Network Subnet: 172.154.0.0/16
CONTAINER_IP_BACKEND=172.154.154.10
CONTAINER_IP_FRONTEND=172.154.154.80
CONTAINER_IP_POSTGRES=172.154.154.20
CONTAINER_IP_REDIS=172.154.154.30
CONTAINER_IP_NATS=172.154.154.35
CONTAINER_IP_CLICKHOUSE=172.154.154.40
CONTAINER_IP_PORTAINER=172.154.154.5
#================================================================================================
# PRODUCTION DEPLOYMENT SECURITY CHECKLIST
#================================================================================================
#
# [ ] JWT_SECRET changed to 32+ character random string
# [ ] JWT_REFRESH_SECRET changed to 32+ character random string
# [ ] SESSION_SECRET changed to 32+ character random string (different from JWT)
# [ ] ENCRYPTION_KEY changed to 32+ character random string
# [ ] MFA_ENCRYPTION_KEY changed to 32+ character random string
# [ ] LLM_ENCRYPTION_KEY changed to 32+ character random string
# [ ] CORS_ORIGIN set to specific trusted domains (no wildcard)
# [ ] POSTGRES_PASSWORD changed from default
# [ ] CLICKHOUSE_PASSWORD changed from default
# [ ] REDIS_PASSWORD set to a strong password
# [ ] All database users have restricted permissions (least privilege)
# [ ] HTTPS/TLS enabled at reverse proxy (nginx/traefik)
# [ ] SMTP_ENABLED=true with production SMTP server
# [ ] NODE_ENV=production
# [ ] Environment variables stored securely (secrets manager, not in git)
# [ ] Backup and disaster recovery plan in place
#
# Generate Secure Secrets:
# pnpm run generate:secrets
#
#================================================================================================