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>
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.
- URL: https://presentation.ai-impress.com
- Repository: https://github.com/presenton/presenton
- AI Provider: Azure OpenAI (GPT-5 + DALL-E 3)
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 endpointCUSTOM_LLM_URL- Azure OpenAI chat completions URLCUSTOM_LLM_API_KEY- Azure API keyCUSTOM_MODEL=gpt-5- Model nameTOOL_CALLS=true- Enable function calling
Image Generation:
IMAGE_PROVIDER=dall-e-3- Use DALL-E 3 for imagesOPENAI_API_KEY- Azure DALL-E API key
Advanced Features:
CAN_CHANGE_KEYS=true- Allow API key changes in UIEXTENDED_REASONING=true- Enable for GPT-5DISABLE_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:
- Swagger UI: https://presentation.ai-impress.com/api/v1/docs
- OpenAPI spec: https://presentation.ai-impress.com/api/v1/openapi.json
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:
- Check logs:
docker logs presenton | grep -i "dall-e" - Verify DALL-E endpoint is accessible
- 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
Links
- Official Docs: https://github.com/presenton/presenton
- Issue Tracker: https://github.com/presenton/presenton/issues
- Docker Hub: ghcr.io/presenton/presenton
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