Skip to content

Configuration Reference

Carlos Cuadra edited this page Apr 21, 2025 · 4 revisions

MP4 Conversion Hub – Configuration Reference

This document contains a complete reference of environment variables used to configure the MP4 Conversion Hub application.


🔐 Authentication

Variable Default Description
ADMIN_USER admin Username for accessing the web interface.
ADMIN_PASSWORD changeme Password for the web interface. Change it in production!

🖥️ Proxy & CORS

Variable Default Description
TRUST_PROXY false If you're behind a proxy (e.g., Nginx, Docker bridge), specify its IP or CIDR. Use false if not behind a proxy.
CORS_ALLOWED_ORIGINS * Comma-separated list of origins allowed for CORS. Use * to allow all origins.

🎞️ Video Processing

Variable Default Description
CONCURRENCY 1 Number of concurrent video conversion jobs. Increase to utilize more CPU.
VIDEO_ENCODING_PRESET ultrafast FFmpeg encoding speed preset. Valid values: ultrafast, superfast, fast, medium, slow, etc.
VIDEO_CRF 28 Constant Rate Factor for video quality. Lower means higher quality. Range: 0–51. Recommended: 18–28.

🚦 Rate Limiting

General Rate Limit

Variable Default Description
GENERAL_RATE_LIMIT_MAX_ATTEMPTS 100 Max requests per IP before rate limiting is triggered.
GENERAL_RATE_LIMIT_COOLDOWN_MINUTES 1 Cooldown period (minutes) after hitting general limit.

Upload Rate Limit

Variable Default Description
UPLOAD_RATE_LIMIT_MAX_ATTEMPTS 5 Max upload requests before cooldown applies.
UPLOAD_RATE_LIMIT_COOLDOWN_MINUTES 1 Cooldown period (minutes) for uploads.
UPLOAD_SIZE_LIMIT_MB 3000 Max allowed upload file size in megabytes.

Authentication Rate Limit

Variable Default Description
AUTH_RATE_LIMIT_MAX_ATTEMPTS 3 Max failed login attempts before cooldown.
AUTH_RATE_LIMIT_COOLDOWN_MINUTES 5 Cooldown period (minutes) for failed login attempts.

🤖 AI-based Metadata Enrichment

Variable Default Description
GEMINI_API_KEY Google Gemini API key. Required for AI-based metadata classification.
TMDB_API_KEY TMDB (The Movie Database) API key. Used for enriching movie/series metadata.
LANGUAGE en-US Preferred language for metadata from Gemini and TMDB.
GEMINI_MODEL gemini-2.0-flash Gemini model to use. Supported values: gemini-1.0-pro, gemini-1.5-pro, gemini-1.5-flash, gemini-2.0-pro, gemini-2.0-flash, gemini-pro.

🔔 Webhooks

Variable Default Description
WEBHOOK_URL If set, a POST request with detailed processing results will be sent to this URL after every video job.

🛡️ ClamAV Auto-Update

Variable Default Description
DAILY_TASK_CRON 0 2 * * * Cron expression defining when the ClamAV DB update should run.
DAILY_TASK_TIMEZONE UTC Timezone to use for the scheduled update task (e.g. Europe/Madrid, America/New_York).

📄 Example .env File

# Authentication
ADMIN_USER=admin
ADMIN_PASSWORD=changeme

# Proxy & Networking
TRUST_PROXY=false
CORS_ALLOWED_ORIGINS=*

# Video Conversion
CONCURRENCY=1
VIDEO_ENCODING_PRESET=ultrafast
VIDEO_CRF=28

# Uploads
UPLOAD_SIZE_LIMIT_MB=3000
UPLOAD_RATE_LIMIT_MAX_ATTEMPTS=5
UPLOAD_RATE_LIMIT_COOLDOWN_MINUTES=1

# Authentication Rate Limits
AUTH_RATE_LIMIT_MAX_ATTEMPTS=3
AUTH_RATE_LIMIT_COOLDOWN_MINUTES=5

# General Rate Limits
GENERAL_RATE_LIMIT_MAX_ATTEMPTS=100
GENERAL_RATE_LIMIT_COOLDOWN_MINUTES=1

# AI Metadata Enrichment
GEMINI_API_KEY=your-gemini-api-key
TMDB_API_KEY=your-tmdb-api-key
GEMINI_MODEL=gemini-2.0-flash
LANGUAGE=es-ES

# Webhooks
WEBHOOK_URL=https://your-service.com/webhook-endpoint

🌐 Supported Language Codes

To customize the preferred language used in AI-based metadata enrichment, use the LANGUAGE environment variable.

LANGUAGE=es-ES

The following language codes are supported:

  • Afrikaans (af): af-ZA
  • Arabic (ar): ar-AE, ar-BH, ar-EG, ar-IQ, ar-JO, ar-LY, ar-MA, ar-QA, ar-SA, ar-TD, ar-YE
  • Belarusian (be): be-BY
  • Bulgarian (bg): bg-BG
  • Bengali (bn): bn-BD
  • Breton (br): br-FR
  • Catalan (ca): ca-AD, ca-ES
  • Chamorro (ch): ch-GU
  • Czech (cs): cs-CZ
  • Welsh (cy): cy-GB
  • Danish (da): da-DK
  • German (de): de-AT, de-CH, de-DE
  • Modern Greek (el): el-CY, el-GR
  • English (en): en-AG, en-AU, en-BB, en-BZ, en-CA, en-CM, en-GB, en-GG, en-GH, en-GI, en-GY, en-IE, en-JM, en-KE, en-LC, en-MW, en-NZ, en-PG, en-TC, en-US, en-ZM, en-ZW
  • Esperanto (eo): eo-EO
  • Spanish (es): es-AR, es-CL, es-DO, es-EC, es-ES, es-GQ, es-GT, es-HN, es-MX, es-NI, es-PA, es-PE, es-PY, es-SV, es-UY
  • Estonian (et): et-EE
  • Basque (eu): eu-ES
  • Persian (fa): fa-IR
  • Finnish (fi): fi-FI
  • French (fr): fr-BF, fr-CA, fr-CD, fr-CI, fr-FR, fr-GF, fr-GP, fr-MC, fr-ML, fr-MU, fr-PF
  • Irish (ga): ga-IE
  • Scottish Gaelic (gd): gd-GB
  • Galician (gl): gl-ES
  • Hebrew (he): he-IL
  • Hindi (hi): hi-IN
  • Croatian (hr): hr-HR
  • Hungarian (hu): hu-HU
  • Indonesian (id): id-ID
  • Italian (it): it-IT, it-VA
  • Japanese (ja): ja-JP
  • Georgian (ka): ka-GE
  • Kazakh (kk): kk-KZ
  • Kannada (kn): kn-IN
  • Korean (ko): ko-KR
  • Kirghiz (ky): ky-KG
  • Lithuanian (lt): lt-LT
  • Latvian (lv): lv-LV
  • Malayalam (ml): ml-IN
  • Marathi (mr): mr-IN
  • Malay (ms): ms-MY, ms-SG
  • Norwegian Bokmål (nb): nb-NO
  • Dutch (nl): nl-BE, nl-NL
  • Norwegian (no): no-NO
  • Panjabi (pa): pa-IN
  • Polish (pl): pl-PL
  • Portuguese (pt): pt-AO, pt-BR, pt-MZ, pt-PT
  • Romanian (ro): ro-MD, ro-RO
  • Russian (ru): ru-RU
  • Sinhala (si): si-LK
  • Slovak (sk): sk-SK
  • Slovenian (sl): sl-SI
  • Albanian (sq): sq-AL, sq-XK
  • Serbian (sr): sr-ME, sr-RS
  • Swedish (sv): sv-SE
  • Swahili (sw): sw-TZ
  • Tamil (ta): ta-IN
  • Telugu (te): te-IN
  • Thai (th): th-TH
  • Tagalog (tl): tl-PH
  • Turkish (tr): tr-TR
  • Ukrainian (uk): uk-UA
  • Urdu (ur): ur-PK
  • Vietnamese (vi): vi-VN
  • Chinese (zh): zh-CN, zh-HK, zh-SG, zh-TW
  • Zulu (zu): zu-ZA

🕑 Valid Timezones

To define when the ClamAV update should run, set both DAILY_TASK_CRON and DAILY_TASK_TIMEZONE.

You must provide a valid IANA timezone string. Some examples:

  • UTC
  • Europe/Madrid
  • America/New_York
  • Asia/Tokyo

📖 Full list of valid timezones:
https://en.wikipedia.org/wiki/List_of_tz_database_time_zones