Skip to main content

🔧 Core Configuration

  • CAN_CHANGE_KEYS Controls whether users can view or modify API keys via the interface. Set to "false" to keep keys hidden and locked, or "true" to allow modification. Example:
    CAN_CHANGE_KEYS="false"
    
  • LLM Select the Large Language Model (LLM) provider to use. Supported values: "openai", "google", "anthropic", "ollama", "custom" Example:
    LLM="openai"
    
  • DISABLE_IMAGE_GENERATION (optional) Disables image generation for slides. Supported values: "true", "false" Example:
    DISABLE_IMAGE_GENERATION="true"
    
  • DATABASE_URL (optional) Defines the external database connection URL. If not provided, the application will default to using SQLite for local storage. Supports both PostgreSQL and MySQL connection strings. Examples:
    DATABASE_URL="postgresql://user:password@host:port/dbname"
    DATABASE_URL="mysql://user:password@host:port/dbname"
    

🧠 Model Provider Specific Variables

  • WEB_GROUNDING (Optional) Uses web search and other tools to improve presentation quality. Supported LLM: "openai", "google", "anthropic" Example:
    WEB_GROUNDING="true"
    

🔹 OpenAI

  • OPENAI_API_KEY Required if LLM="openai" Example:
    OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"
    
  • OPENAI_MODEL (Optional) Defaults to gpt-4.1 if not specified Example:
    OPENAI_MODEL="gpt-4o"
    

🔹 Google

  • GOOGLE_API_KEY Required if LLM="google" Example:
    GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXX"
    
  • GOOGLE_MODEL (Optional) Defaults to models/gemini-2.0-flash if not specified Example:
    GOOGLE_MODEL="models/gemini-1.5-pro"
    
⚠️ Image generation is not supported in EU regions with Google.

🔹 Anthropic

  • ANTHROPIC_API_KEY Required if LLM="anthropic" Example:
    ANTHROPIC_API_KEY="sk-ant-xxxxxxxxxxxx"
    
  • ANTHROPIC_MODEL (Optional) Defaults to claude-3-5-sonnet-20241022 if not specified Example:
    ANTHROPIC_MODEL="claude-3-opus-20240229"
    

🔹 Ollama

  • OLLAMA_URL (Optional) URL of your custom Ollama server. Useful if you’re self-hosting. Example:
    OLLAMA_URL="http://localhost:11434"
    
  • OLLAMA_MODEL Required if LLM="ollama" Example:
    OLLAMA_MODEL="llama3.2:3b"
    

🔹 Custom (OpenAI-compatible LLMs)

  • CUSTOM_LLM_URL Required if LLM="custom" Example:
    CUSTOM_LLM_URL="https://api.your-custom-llm.com/v1"
    
  • CUSTOM_LLM_API_KEY (Optional) API key for custom LLM provider Example:
    CUSTOM_LLM_API_KEY="your_custom_key"
    
  • CUSTOM_MODEL Required if LLM="custom" Example:
    CUSTOM_MODEL="llama3.2:3b"
    
  • TOOL_CALL (Optional) If LLM="custom", uses Tool Call for structured outputs instead of JSON Schema. Example:
    TOOL_CALL="true"
    
  • DISABLE_THINKING (Optional) If LLM="custom", disables thinking for Custom Models. Example:
    DISABLE_THINKING="true"
    

🖼️ Image Providers

  • IMAGE_PROVIDER (Optional) Select the image provider to use. If DISABLE_IMAGE_GENERATION is "true", this variable is ignored. Supported values: "dall-e-3", "gpt-image-1.5", "gemini_flash", "nanobanana_pro", "pexels", "pixabay", "comfyui" Example:
    IMAGE_PROVIDER="pexels"
    

🔹 Pexels

  • PEXELS_API_KEY Used to fetch high-quality stock images from Pexels. Example:
    PEXELS_API_KEY="vzXXXXXXXXXXXXXX"
    

🔹 Pixabay

  • PIXABAY_API_KEY Used to fetch stock images from Pixabay. Example:
    PIXABAY_API_KEY="3883XXXXXXXXXXXXX"
    

🔹 DALL·E 3

  • OPENAI_API_KEY Required to generate images using DALL·E 3 via the OpenAI API. Example:
    OPENAI_API_KEY="sk-XXXXXXXXXXXXXXXX"
    
  • DALL_E_3_QUALITY (Optional) Controls the output quality. Supported values: "standard", "hd" (default: "standard"). Example:
    DALL_E_3_QUALITY="hd"
    

🔹 GPT Image 1.5

  • OPENAI_API_KEY Required if IMAGE_PROVIDER="gpt-image-1.5". Example:
    OPENAI_API_KEY="sk-XXXXXXXXXXXXXXXX"
    
  • GPT_IMAGE_1_5_QUALITY (Optional) Controls the rendering quality. Supported values: "low", "medium", "high" (default: "medium"). Example:
    GPT_IMAGE_1_5_QUALITY="high"
    

🔹 Gemini Flash

  • GOOGLE_API_KEY Used to access Gemini Flash Image generation. Example:
    GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXXXX"
    

🔹 Nanobanana Pro

  • GOOGLE_API_KEY Required if IMAGE_PROVIDER="nanobanana_pro". Example:
    GOOGLE_API_KEY="AIzaSyXXXXXXXXXXXXXX"
    

🔹 ComfyUI

Use your local ComfyUI server for image generation. See ComfyUI Integration for setup guide.
  • COMFYUI_URL URL of your ComfyUI server. Example:
    COMFYUI_URL="http://192.168.1.100:8188"
    
  • COMFYUI_WORKFLOW The workflow JSON exported from ComfyUI using “Export (API)”. Your prompt node must be renamed to “Input Prompt” in ComfyUI. Example:
    COMFYUI_WORKFLOW='{"6":{"inputs":{"text":"placeholder","clip":["4",1]},"class_type":"CLIPTextEncode","_meta":{"title":"Input Prompt"}}}'
    
💡 For ComfyUI setup, it’s recommended to configure via the Presenton Settings UI rather than environment variables, as workflow JSON can be large.

🐳 Docker Examples

Using cloud providers:
docker run -it --name presenton -p 5000:80 \
  -e LLM="openai" \
  -e OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx" \
  -e OPENAI_MODEL="gpt-4o" \
  -e CAN_CHANGE_KEYS="false" \
  -e IMAGE_PROVIDER="dall-e-3" \
  -v "./app_data:/app_data" \
  ghcr.io/presenton/presenton:latest
Using Ollama with Pexels:
docker run -it --name presenton -p 5000:80 \
  -e LLM="ollama" \
  -e OLLAMA_MODEL="llama3.2:3b" \
  -e OLLAMA_URL="http://host.docker.internal:11434" \
  -e CAN_CHANGE_KEYS="false" \
  -e IMAGE_PROVIDER="pexels" \
  -e PEXELS_API_KEY="your_pexels_key" \
  -v "./app_data:/app_data" \
  ghcr.io/presenton/presenton:latest