OVHserver/opt/02-core/presenton/README.md
SamoilenkoVadym 117de92709 feat: add Presenton AI presentation generator with Azure OpenAI integration
Deployed Presenton (AI-powered presentation generator) to production infrastructure.

Features:
- AI-generated presentations from text prompts and documents
- Azure OpenAI GPT-5 for text generation
- Azure OpenAI DALL-E 3 for image generation
- Export to PPTX and PDF formats
- Custom template support with HTML/Tailwind CSS
- Privacy-focused (local data processing)

Infrastructure:
- Container: ghcr.io/presenton/presenton:latest
- Domain: presentation.ai-impress.com
- SSL: Automatic via Traefik + Cloudflare DNS
- Network: traefik-public
- Resources: 1-2 CPU cores, 1-2GB RAM

Configuration:
- LLM: Azure OpenAI Custom endpoint (GPT-5)
- Images: Azure DALL-E 3
- API keys managed via .env (not committed)
- UI key management enabled (CAN_CHANGE_KEYS=true)

Services started:
- Nginx (port 80) - reverse proxy
- Next.js (port 3000) - frontend
- FastAPI (port 8000) - backend API
- MCP Server (port 8001) - Model Context Protocol

Location: /opt/02-core/presenton/

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-05 23:03:18 +00:00

5.5 KiB

Presenton - AI Presentation Generator

AI-powered presentation generator with Azure OpenAI integration.

Overview

Presenton is an open-source AI presentation generator that creates professional presentations from prompts, documents, or existing PowerPoint files. Privacy-focused alternative to Gamma, Beautiful.ai, and Decktopus.

Features

  • AI-generated presentations from text prompts
  • Document upload support (PDF, DOCX, PPTX)
  • Custom template creation (HTML + Tailwind CSS)
  • Export to PPTX and PDF formats
  • Model Context Protocol (MCP) server support
  • Local data processing (privacy-focused)

Architecture

presenton/
├── docker-compose.yml    # Container configuration with Traefik
├── .env                  # Azure OpenAI credentials
├── README.md            # This file
└── app_data/            # Persistent storage (auto-created)
    ├── presentations/   # Generated presentations
    ├── templates/       # Custom templates
    └── uploads/         # Uploaded documents

Technology Stack

Frontend:

  • Next.js (React)
  • Node.js 20
  • Port: 3000 (internal)

Backend:

  • FastAPI (Python 3.11)
  • Port: 8000 (internal)

Additional Services:

  • MCP Server (Port: 8001)
  • Nginx (Port: 80 - exposed via Traefik)

AI Integration:

  • Azure OpenAI GPT-5 (text generation)
  • Azure OpenAI DALL-E 3 (image generation)

Configuration

Environment Variables (.env)

LLM Configuration:

  • LLM=custom - Use custom Azure OpenAI endpoint
  • CUSTOM_LLM_URL - Azure OpenAI chat completions URL
  • CUSTOM_LLM_API_KEY - Azure API key
  • CUSTOM_MODEL=gpt-5 - Model name
  • TOOL_CALLS=true - Enable function calling

Image Generation:

  • IMAGE_PROVIDER=dall-e-3 - Use DALL-E 3 for images
  • OPENAI_API_KEY - Azure DALL-E API key

Advanced Features:

  • CAN_CHANGE_KEYS=true - Allow API key changes in UI
  • EXTENDED_REASONING=true - Enable for GPT-5
  • DISABLE_ANONYMOUS_TELEMETRY=true - Privacy

Traefik Integration

Presenton is configured to work with Traefik reverse proxy:

  • Domain: presentation.ai-impress.com
  • SSL: Automatic via Let's Encrypt (Cloudflare DNS)
  • Network: traefik-public

Usage

Start the service

cd /opt/02-core/presenton
docker compose up -d

View logs

docker logs presenton -f

Stop the service

docker compose down

Restart the service

docker compose restart

Update to latest version

docker compose pull
docker compose up -d

API Access

API Documentation:

Generate Presentation Endpoint:

POST /api/v1/ppt/presentation/generate

Example Request:

curl -X POST "https://presentation.ai-impress.com/api/v1/ppt/presentation/generate" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Create a presentation about AI trends in 2025",
    "slide_count": 10,
    "language": "en",
    "tone": "professional",
    "export_format": "pptx"
  }'

Troubleshooting

Container won't start

Check logs for errors:

docker logs presenton --tail 100

Check if Traefik network exists:

docker network ls | grep traefik-public

Azure OpenAI connection issues

Verify environment variables:

docker exec presenton env | grep -E "LLM|CUSTOM|OPENAI"

Test Azure OpenAI endpoint:

curl -X POST "https://aipmress-ai-n8n.cognitiveservices.azure.com/openai/deployments/gpt-5/chat/completions?api-version=2025-01-01-preview" \
  -H "Content-Type: application/json" \
  -H "api-key: YOUR_API_KEY" \
  -d '{"messages":[{"role":"user","content":"Hello"}]}'

DALL-E image generation not working

Azure DALL-E uses a different API format than OpenAI. If images fail to generate:

  1. Check logs: docker logs presenton | grep -i "dall-e"
  2. Verify DALL-E endpoint is accessible
  3. Consider using Pexels as alternative (free stock photos)

To switch to Pexels:

# Edit .env
IMAGE_PROVIDER=pexels
PEXELS_API_KEY=your_pexels_key  # Get free at https://www.pexels.com/api/

Performance issues

Increase container resources in docker-compose.yml:

deploy:
  resources:
    limits:
      cpus: '4'
      memory: 4G

Maintenance

Backup presentations

# Create backup
tar -czf presenton-backup-$(date +%Y%m%d).tar.gz app_data/

# Restore from backup
tar -xzf presenton-backup-YYYYMMDD.tar.gz

Clear cache and temp files

docker exec presenton sh -c "rm -rf /tmp/*"

Monitor disk usage

du -sh app_data/

Security

  • API keys stored in .env (excluded from Git)
  • SSL/HTTPS via Traefik with Let's Encrypt
  • Local data processing (no cloud uploads)
  • API key changes allowed via UI (can be locked with CAN_CHANGE_KEYS=false)

Resources

  • CPU: 1-2 cores (recommended)
  • RAM: 1-2 GB
  • Disk: ~1 GB (image) + presentations storage

Support

For issues specific to this deployment:

  • Check container logs: docker logs presenton
  • Review Traefik logs: docker logs traefik
  • Contact: AI-Impress Infrastructure Team

Last Updated: 2025-11-05 Version: latest Deployment: Production