1+ # Production Environment Configuration for FFprobe API
2+ # CRITICAL: Change all default values before deploying to production!
3+
4+ # =============================================================================
5+ # DEPLOYMENT METADATA
6+ # =============================================================================
7+ VERSION=1.0.0
8+ BUILD_DATE=
9+ VCS_REF=
10+ TARGETPLATFORM=linux/amd64
11+
12+ # =============================================================================
13+ # DOMAIN AND NETWORKING
14+ # =============================================================================
15+ DOMAIN=your-domain.com
16+ API_PORT=8080
17+ EXTERNAL_HTTP_PORT=80
18+ EXTERNAL_HTTPS_PORT=443
19+
20+ # =============================================================================
21+ # SECURITY CONFIGURATION
22+ # =============================================================================
23+
24+ # API Authentication (CRITICAL: Change in production)
25+ # Generate with: openssl rand -hex 32
26+ API_KEY=CHANGE_ME_32_CHARS_MINIMUM_SECRET_KEY_HERE_PROD
27+
28+ # JWT Secret (CRITICAL: Change in production)
29+ # Generate with: openssl rand -hex 32
30+ JWT_SECRET=CHANGE_ME_32_CHARS_MINIMUM_JWT_SECRET_HERE_PROD
31+
32+ # Encryption Key (CRITICAL: Change in production)
33+ # Generate with: openssl rand -hex 32
34+ ENCRYPTION_KEY=CHANGE_ME_32_CHARS_MINIMUM_ENCRYPTION_KEY_PROD
35+
36+ # Security Features
37+ ENABLE_AUTH=true
38+ ENABLE_RATE_LIMIT=true
39+ ENABLE_CSRF=true
40+ ENABLE_CORS=false
41+ CORS_ORIGINS=https://your-domain.com,https://admin.your-domain.com
42+
43+ # SSL/TLS Configuration
44+ SSL_CERT_PATH=/etc/ssl/certs/your-domain.crt
45+ SSL_KEY_PATH=/etc/ssl/private/your-domain.key
46+ SSL_CHAIN_PATH=/etc/ssl/certs/your-domain-chain.crt
47+
48+ # =============================================================================
49+ # DATABASE CONFIGURATION
50+ # =============================================================================
51+
52+ # PostgreSQL Primary
53+ POSTGRES_HOST=postgres
54+ POSTGRES_PORT=5432
55+ POSTGRES_DB=ffprobe_production
56+ POSTGRES_USER=ffprobe_prod
57+ # Generate with: openssl rand -base64 32
58+ POSTGRES_PASSWORD=CHANGE_ME_STRONG_DATABASE_PASSWORD_HERE
59+
60+ # Database Connection Pool
61+ DB_MAX_CONNECTIONS=50
62+ DB_MAX_IDLE_CONNECTIONS=10
63+ DB_CONNECTION_TIMEOUT=30s
64+ DB_IDLE_TIMEOUT=30m
65+
66+ # SSL Mode (require, verify-ca, verify-full)
67+ POSTGRES_SSL_MODE=require
68+
69+ # =============================================================================
70+ # REDIS CONFIGURATION
71+ # =============================================================================
72+
73+ # Redis Primary
74+ REDIS_HOST=redis
75+ REDIS_PORT=6379
76+ REDIS_DB=0
77+ # Generate with: openssl rand -base64 32
78+ REDIS_PASSWORD=CHANGE_ME_STRONG_REDIS_PASSWORD_HERE
79+
80+ # Redis Connection Pool
81+ REDIS_MAX_CONNECTIONS=20
82+ REDIS_MIN_IDLE_CONNECTIONS=5
83+ REDIS_CONNECTION_TIMEOUT=10s
84+
85+ # =============================================================================
86+ # APPLICATION CONFIGURATION
87+ # =============================================================================
88+
89+ # Environment
90+ GO_ENV=production
91+ LOG_LEVEL=warn
92+ LOG_FORMAT=json
93+ DEBUG_MODE=false
94+
95+ # File Processing
96+ MAX_FILE_SIZE=53687091200
97+ MAX_CONCURRENT_UPLOADS=10
98+ UPLOAD_TIMEOUT=3600
99+ PROCESSING_TIMEOUT=7200
100+ CLEANUP_TEMP_FILES=true
101+
102+ # Rate Limiting
103+ RATE_LIMIT_REQUESTS_PER_MINUTE=100
104+ RATE_LIMIT_BURST_SIZE=20
105+ RATE_LIMIT_ENABLE_SLIDING_WINDOW=true
106+
107+ # =============================================================================
108+ # STORAGE AND DATA PATHS
109+ # =============================================================================
110+
111+ # Primary data directory (ensure this exists and has proper permissions)
112+ DATA_PATH=/opt/ffprobe/data
113+
114+ # SSL certificates directory
115+ SSL_PATH=/opt/ffprobe/ssl
116+
117+ # Application directories (auto-created relative to DATA_PATH)
118+ UPLOAD_DIR=/opt/ffprobe/data/uploads
119+ REPORTS_DIR=/opt/ffprobe/data/reports
120+ TEMP_DIR=/opt/ffprobe/data/temp
121+ CACHE_DIR=/opt/ffprobe/data/cache
122+ BACKUP_DIR=/opt/ffprobe/data/backup
123+ LOG_DIR=/opt/ffprobe/data/logs
124+
125+ # =============================================================================
126+ # MONITORING AND OBSERVABILITY
127+ # =============================================================================
128+
129+ # Metrics and Monitoring
130+ ENABLE_METRICS=true
131+ ENABLE_TRACING=true
132+ METRICS_PORT=9090
133+ PROMETHEUS_RETENTION_TIME=30d
134+ PROMETHEUS_RETENTION_SIZE=10GB
135+
136+ # Grafana
137+ GRAFANA_PASSWORD=CHANGE_ME_STRONG_GRAFANA_PASSWORD_HERE
138+ GRAFANA_ADMIN_USER=admin
139+
140+ # Health Checks
141+ HEALTH_CHECK_TIMEOUT=10s
142+ HEALTH_CHECK_INTERVAL=30s
143+ STARTUP_PROBE_TIMEOUT=60s
144+
145+ # Logging
146+ ENABLE_ACCESS_LOGGING=true
147+ ENABLE_AUDIT_LOGGING=true
148+ LOG_RETENTION_DAYS=90
149+
150+ # =============================================================================
151+ # EXTERNAL SERVICES
152+ # =============================================================================
153+
154+ # Email Configuration (for notifications)
155+ SMTP_HOST=smtp.your-provider.com
156+ SMTP_PORT=587
157+ 158+ SMTP_PASSWORD=CHANGE_ME_SMTP_PASSWORD
159+ 160+ SMTP_TLS=true
161+
162+ # Cloud Storage (if using)
163+ # AWS S3
164+ AWS_REGION=us-east-1
165+ AWS_ACCESS_KEY_ID=
166+ AWS_SECRET_ACCESS_KEY=
167+ S3_BUCKET_NAME=ffprobe-production-storage
168+
169+ # Google Cloud Storage
170+ GCS_PROJECT_ID=
171+ GCS_BUCKET_NAME=ffprobe-production-storage
172+ GOOGLE_APPLICATION_CREDENTIALS=/opt/ffprobe/config/gcs-credentials.json
173+
174+ # Azure Blob Storage
175+ AZURE_STORAGE_ACCOUNT=
176+ AZURE_STORAGE_KEY=
177+ AZURE_CONTAINER_NAME=ffprobe-production
178+
179+ # =============================================================================
180+ # PERFORMANCE TUNING
181+ # =============================================================================
182+
183+ # Go Runtime
184+ GOMAXPROCS=0
185+ GOGC=100
186+ GOMEMLIMIT=8GiB
187+
188+ # Docker Resource Limits (used by compose files)
189+ API_MEMORY_LIMIT=16G
190+ API_CPU_LIMIT=8.0
191+ API_MEMORY_RESERVATION=8G
192+ API_CPU_RESERVATION=4.0
193+
194+ DB_MEMORY_LIMIT=4G
195+ DB_CPU_LIMIT=4.0
196+ DB_MEMORY_RESERVATION=2G
197+ DB_CPU_RESERVATION=2.0
198+
199+ REDIS_MEMORY_LIMIT=2G
200+ REDIS_CPU_LIMIT=2.0
201+ REDIS_MEMORY_RESERVATION=1G
202+ REDIS_CPU_RESERVATION=1.0
203+
204+ # =============================================================================
205+ # BACKUP AND DISASTER RECOVERY
206+ # =============================================================================
207+
208+ # Backup Configuration
209+ ENABLE_AUTO_BACKUP=true
210+ BACKUP_SCHEDULE=0 2 * * *
211+ BACKUP_RETENTION_DAYS=30
212+ BACKUP_COMPRESSION=true
213+ BACKUP_ENCRYPTION=true
214+
215+ # Backup Storage
216+ BACKUP_STORAGE_TYPE=local
217+ BACKUP_S3_BUCKET=ffprobe-backups-production
218+ BACKUP_ENCRYPTION_KEY=CHANGE_ME_BACKUP_ENCRYPTION_KEY_32_CHARS
219+
220+ # =============================================================================
221+ # NOTIFICATIONS AND ALERTS
222+ # =============================================================================
223+
224+ # Slack Notifications
225+ SLACK_WEBHOOK_URL=https://hooks.slack.com/services/YOUR/SLACK/WEBHOOK
226+ SLACK_CHANNEL=#ffprobe-alerts
227+ ENABLE_SLACK_ALERTS=true
228+
229+ # PagerDuty Integration
230+ PAGERDUTY_INTEGRATION_KEY=
231+ ENABLE_PAGERDUTY_ALERTS=false
232+
233+ # Email Alerts
234+ 235+ ENABLE_EMAIL_ALERTS=true
236+
237+ # =============================================================================
238+ # DEVELOPMENT AND DEBUG (Production: Keep disabled)
239+ # =============================================================================
240+
241+ # Debug Features (NEVER enable in production)
242+ ENABLE_PPROF=false
243+ ENABLE_DEBUG_ENDPOINTS=false
244+ ENABLE_COLORS=false
245+
246+ # Development Tools (NEVER enable in production)
247+ ENABLE_HOT_RELOAD=false
248+ ENABLE_MOCK_AUTH=false
249+ SKIP_AUTH_FOR_HEALTH=true
250+
251+ # =============================================================================
252+ # COMPLIANCE AND AUDIT
253+ # =============================================================================
254+
255+ # GDPR Compliance
256+ ENABLE_GDPR_MODE=true
257+ DATA_RETENTION_DAYS=365
258+ ENABLE_RIGHT_TO_DELETE=true
259+
260+ # Audit Logging
261+ AUDIT_LOG_LEVEL=info
262+ AUDIT_LOG_RETENTION_DAYS=2555 # 7 years
263+ ENABLE_DATA_ACCESS_LOGGING=true
264+
265+ # Privacy
266+ ANONYMIZE_IP_ADDRESSES=true
267+ ENABLE_PRIVACY_MODE=true
268+
269+ # =============================================================================
270+ # FEATURE FLAGS
271+ # =============================================================================
272+
273+ # API Features
274+ ENABLE_BATCH_PROCESSING=true
275+ ENABLE_WEBHOOK_CALLBACKS=true
276+ ENABLE_QUALITY_ANALYSIS=true
277+ ENABLE_HLS_ANALYSIS=true
278+ ENABLE_LLM_INTEGRATION=false
279+
280+ # Storage Features
281+ ENABLE_CLOUD_STORAGE=false
282+ ENABLE_CDN_INTEGRATION=false
283+ ENABLE_STORAGE_COMPRESSION=true
284+
285+ # Advanced Features
286+ ENABLE_AI_ANALYSIS=false
287+ ENABLE_VIDEO_THUMBNAILS=true
288+ ENABLE_SUBTITLE_EXTRACTION=true
289+
290+ # =============================================================================
291+ # THIRD-PARTY INTEGRATIONS
292+ # =============================================================================
293+
294+ # Content Delivery Network
295+ CDN_PROVIDER=cloudflare
296+ CDN_API_KEY=
297+ CDN_ZONE_ID=
298+
299+ # Analytics
300+ GOOGLE_ANALYTICS_ID=
301+ ENABLE_USAGE_ANALYTICS=false
302+
303+ # Error Tracking
304+ SENTRY_DSN=
305+ ENABLE_ERROR_TRACKING=false
306+
307+ # =============================================================================
308+ # MAINTENANCE AND OPERATIONS
309+ # =============================================================================
310+
311+ # Maintenance Windows
312+ MAINTENANCE_MODE=false
313+ MAINTENANCE_MESSAGE="System maintenance in progress"
314+ MAINTENANCE_ALLOWED_IPS=127.0.0.1,10.0.0.0/8
315+
316+ # Operational Settings
317+ ENABLE_GRACEFUL_SHUTDOWN=true
318+ SHUTDOWN_TIMEOUT=30s
319+ STARTUP_DELAY=0s
320+
321+ # Resource Cleanup
322+ CLEANUP_INTERVAL=1h
323+ TEMP_FILE_MAX_AGE=24h
324+ CACHE_MAX_AGE=7d
325+
326+ # =============================================================================
327+ # VALIDATION CHECKSUMS (for deployment verification)
328+ # =============================================================================
329+
330+ # Generate these during deployment
331+ DEPLOYMENT_CHECKSUM=
332+ CONFIG_CHECKSUM=
333+ BINARY_CHECKSUM=
334+
335+ # =============================================================================
336+ # DEPLOYMENT NOTES
337+ # =============================================================================
338+
339+ # Required Actions Before Production Deployment:
340+ # 1. Change ALL passwords and secrets above
341+ # 2. Create SSL certificates and place in SSL_PATH
342+ # 3. Create DATA_PATH directory with proper permissions (755, owner: 1001:1001)
343+ # 4. Configure firewall rules for exposed ports
344+ # 5. Set up monitoring alerts
345+ # 6. Configure backup storage
346+ # 7. Test disaster recovery procedures
347+ # 8. Update DNS records
348+ # 9. Configure load balancer health checks
349+ # 10. Validate security scanning results
350+
351+ # Security Checklist:
352+ # [ ] All default passwords changed
353+ # [ ] SSL certificates installed and valid
354+ # [ ] Firewall configured
355+ # [ ] Rate limiting tested
356+ # [ ] Authentication working
357+ # [ ] HTTPS redirects configured
358+ # [ ] Security headers enabled
359+ # [ ] Vulnerability scan completed
360+ # [ ] Penetration testing completed
361+ # [ ] Backup and restore tested
0 commit comments