1
+ # Rendiff FFmpeg API - Production Configuration Template
2
+ # Copy this file to .env and configure for your environment
3
+
4
+ # =============================================================================
5
+ # CORE API SETTINGS
6
+ # =============================================================================
7
+ API_HOST = 0.0.0.0
8
+ API_PORT = 8000
9
+ API_WORKERS = 4
10
+ API_RELOAD = false
11
+ API_LOG_LEVEL = info
12
+ VERSION = 1.0.0
13
+
14
+ # =============================================================================
15
+ # DATABASE CONFIGURATION (PostgreSQL - Fully Configured in Docker)
16
+ # =============================================================================
17
+ # PostgreSQL is fully configured and managed in Docker Compose
18
+ # No manual setup required - database and schema created automatically
19
+ DATABASE_URL = postgresql://ffmpeg_user:ffmpeg_secure_pass_2025@postgres:5432/ffmpeg_api
20
+ DATABASE_POOL_SIZE = 20
21
+ DATABASE_MAX_OVERFLOW = 40
22
+ DATABASE_POOL_TIMEOUT = 30
23
+ DATABASE_POOL_RECYCLE = 3600
24
+
25
+ # Database connection retry settings
26
+ DATABASE_RETRY_ATTEMPTS = 5
27
+ DATABASE_RETRY_DELAY = 2
28
+
29
+ # =============================================================================
30
+ # QUEUE CONFIGURATION (Redis - Fully Configured in Docker)
31
+ # =============================================================================
32
+ # Redis is fully configured and optimized in Docker Compose
33
+ # No manual setup required - Redis configured for video processing workloads
34
+ REDIS_URL = redis://redis:6379/0
35
+ REDIS_MAX_CONNECTIONS = 100
36
+ REDIS_RETRY_ON_TIMEOUT = true
37
+ REDIS_HEALTH_CHECK_INTERVAL = 30
38
+ REDIS_SOCKET_KEEPALIVE = true
39
+ REDIS_SOCKET_KEEPALIVE_OPTIONS = {}
40
+
41
+ # =============================================================================
42
+ # STORAGE CONFIGURATION
43
+ # =============================================================================
44
+ # Choose one storage backend: local, s3
45
+ STORAGE_BACKEND = local
46
+
47
+ # Local storage settings
48
+ STORAGE_PATH = ./storage
49
+ TEMP_PATH = /tmp/rendiff
50
+
51
+ # S3 storage settings (when STORAGE_BACKEND=s3)
52
+ AWS_ACCESS_KEY_ID = your-access-key-id
53
+ AWS_SECRET_ACCESS_KEY = your-secret-access-key
54
+ AWS_S3_BUCKET = your-bucket-name
55
+ AWS_S3_REGION = us-east-1
56
+ # Optional: For S3-compatible services (MinIO, DigitalOcean Spaces, etc.)
57
+ # AWS_ENDPOINT_URL=https://nyc3.digitaloceanspaces.com
58
+
59
+ # =============================================================================
60
+ # WORKER CONFIGURATION
61
+ # =============================================================================
62
+ WORKER_CONCURRENCY = 4
63
+ WORKER_PREFETCH_MULTIPLIER = 1
64
+ WORKER_MAX_TASKS_PER_CHILD = 100
65
+ WORKER_TASK_TIME_LIMIT = 21600
66
+
67
+ # =============================================================================
68
+ # FFMPEG SETTINGS
69
+ # =============================================================================
70
+ FFMPEG_THREADS = 0
71
+ FFMPEG_PRESET = medium
72
+ FFMPEG_CRF = 23
73
+ FFMPEG_HARDWARE_ACCELERATION = auto
74
+
75
+ # =============================================================================
76
+ # SECURITY SETTINGS
77
+ # =============================================================================
78
+ API_KEY_HEADER = X-API-Key
79
+ ENABLE_API_KEYS = true
80
+ ENABLE_IP_WHITELIST = false
81
+ IP_WHITELIST = 10.0.0.0/8,192.168.0.0/16
82
+
83
+ # Generate secure API keys for production
84
+ # You can generate keys with: openssl rand -hex 32
85
+ ADMIN_API_KEY = your-admin-api-key-here
86
+ DEFAULT_API_KEY = your-default-api-key-here
87
+
88
+ # =============================================================================
89
+ # CORS CONFIGURATION
90
+ # =============================================================================
91
+ # Comma-separated list of allowed origins
92
+ CORS_ORIGINS = http://localhost:3000,https://yourdomain.com
93
+
94
+ # =============================================================================
95
+ # MONITORING & OBSERVABILITY
96
+ # =============================================================================
97
+ ENABLE_METRICS = true
98
+ METRICS_PORT = 9000
99
+ ENABLE_TRACING = false
100
+ TRACING_ENDPOINT = http://jaeger:14268/api/traces
101
+
102
+ # =============================================================================
103
+ # RESOURCE LIMITS
104
+ # =============================================================================
105
+ MAX_UPLOAD_SIZE = 10737418240 # 10GB
106
+ MAX_JOB_DURATION = 21600 # 6 hours
107
+ MAX_CONCURRENT_JOBS_PER_KEY = 10
108
+ JOB_RETENTION_DAYS = 7
109
+
110
+ # =============================================================================
111
+ # WEBHOOK CONFIGURATION
112
+ # =============================================================================
113
+ WEBHOOK_TIMEOUT = 30
114
+ WEBHOOK_MAX_RETRIES = 3
115
+ WEBHOOK_RETRY_DELAY = 60
116
+
117
+ # =============================================================================
118
+ # OPTIONAL: VIRUS SCANNING
119
+ # =============================================================================
120
+ ENABLE_VIRUS_SCAN = false
121
+ CLAMAV_HOST = clamav
122
+ CLAMAV_PORT = 3310
123
+
124
+ # =============================================================================
125
+ # GENAI FEATURES (OPTIONAL - REQUIRES GPU)
126
+ # =============================================================================
127
+ # Enable AI-enhanced video processing features
128
+ GENAI_ENABLED = false
129
+
130
+ # GPU Configuration (when GENAI_ENABLED=true)
131
+ GENAI_GPU_ENABLED = true
132
+ GENAI_GPU_DEVICE = cuda:0
133
+ GENAI_GPU_MEMORY_LIMIT = 8192 # MB
134
+
135
+ # Model Configuration
136
+ GENAI_MODEL_PATH = ./models/genai
137
+ GENAI_MODEL_CACHE_SIZE = 3
138
+ GENAI_ESRGAN_MODEL = RealESRGAN_x4plus
139
+ GENAI_VIDEOMAE_MODEL = MCG-NJU/videomae-base
140
+ GENAI_VMAF_MODEL = vmaf_v0.6.1
141
+ GENAI_DOVER_MODEL = dover_mobile
142
+
143
+ # Performance Settings
144
+ GENAI_PARALLEL_WORKERS = 2
145
+ GENAI_INFERENCE_TIMEOUT = 300
146
+ GENAI_BATCH_PROCESSING = true
147
+
148
+ # Scene Detection
149
+ GENAI_SCENE_THRESHOLD = 30.0
150
+ GENAI_SCENE_MIN_LENGTH = 1.0
151
+
152
+ # Caching
153
+ GENAI_ENABLE_CACHE = true
154
+ GENAI_CACHE_TTL = 86400
155
+ GENAI_CACHE_SIZE = 1000
156
+
157
+ # Monitoring
158
+ GENAI_ENABLE_METRICS = true
159
+ GENAI_LOG_INFERENCE_TIME = true
160
+
161
+ # =============================================================================
162
+ # DEVELOPMENT SETTINGS (NOT FOR PRODUCTION)
163
+ # =============================================================================
164
+ DEBUG = false
165
+ TESTING = false
166
+
167
+ # =============================================================================
168
+ # DOCKER-SPECIFIC SETTINGS
169
+ # =============================================================================
170
+ # Used in Docker deployments
171
+ COMPOSE_PROJECT_NAME = ffmpeg-api
172
+ DOCKER_REGISTRY = your-registry.com
173
+ IMAGE_TAG = latest
0 commit comments