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