presenton/presenton
요약
Presenton은 사용자가 모델과 데이터를 완전히 제어할 수 있는 오픈 소스 AI 프레젠테이션 생성 도구입니다. Docker를 통한 자체 호스팅과 데스크톱 앱을 지원하며, 다양한 LLM API 및 로컬 모델(Ollama)과 연동하여 PPTX 및 PDF를 생성할 수 있습니다.
핵심 포인트
- SaaS 종속 없는 완전한 자체 호스팅 및 로컬 실행 지원
- OpenAI, Anthropic, Ollama 등 다양한 AI 모델 연동 가능
- 사용자 API 키를 직접 사용하는 BYOK 방식 채택
- HTML/Tailwind CSS 기반 커스텀 템플릿 및 MCP 서버 내장
- 편집 가능한 PPTX 및 PDF 내보내기 기능 제공
Quickstart (빠른 시작) ·
Docs (문서) ·
Youtube (유튜브) ·
Discord (디스코드)
SaaS 종속 없음 · 강제 구독 없음 · 모델 및 데이터에 대한 완전한 제어권
Presenton의 차별점은 무엇인가요?
- Docker 패키지를 통해 웹에서 완전히 self-hosted (자체 호스팅) 하여 사용하거나 - 데스크톱 앱(Mac, Windows & Linux)을 다운로드하세요
- OpenAI, Gemini, Vertex AI, Azure OpenAI, Amazon Bedrock, Fireworks, Together AI, Anthropic, LM Studio, Ollama 또는 커스텀 모델과 연동 가능
- AI 프레젠테이션 생성 API 제공
- 완전한 오픈 소스 (Apache 2.0)
- 사용자의 디자인/템플릿과 함께 사용 가능
완전 편집 가능한 PPTX 내보내기
Tip
Star us! (스타를 눌러주세요!) ⭐는 여러분의 지지를 나타내며 저희가 계속해서 개발을 이어갈 수 있는 격려가 됩니다! 😇
자신만의 모델 제공자(BYOK, Bring Your Own Key)를 사용하여 AI 기반 프레젠테이션을 생성하거나, 완전한 제어와 데이터 프라이버시를 위해 모든 것을 자신의 기기에서 로컬로 실행하세요.
Available Platforms (사용 가능한 플랫폼)
| 플랫폼 | 아키텍처 | 패키지 | 다운로드 |
|---|---|---|---|
| macOS | Apple Silicon / Intel | .dmg | Download ↗ |
| Windows | x64 | .exe | Download ↗ |
| Linux | x64 | .deb | Download ↗ |
Deploy to Cloud Providers (클라우드 제공업체에 배포)
Presenton은 여러분의 AI 프레젠테이션 워크플로우에 대한 완전한 제어권을 제공합니다. 모델을 선택하고, 경험을 맞춤화하며, 데이터를 비공개로 유지하세요.
- 커스텀 템플릿 및 테마 (Custom Templates & Themes) — HTML과 Tailwind CSS를 사용하여 무제한의 프레젠테이션 디자인을 생성하세요.
- AI 템플릿 생성 (AI Template Generation) — 기존 PowerPoint 문서를 기반으로 프레젠테이션 템플릿을 생성합니다.
- 유연한 생성 (Flexible Generation) — 프롬프트(Prompt) 또는 업로드된 문서를 통해 프레젠테이션을 구축합니다.
- 내보내기 준비 완료 (Export Ready) — 전문적인 서식을 갖춘 PowerPoint (PPTX) 및 PDF로 저장하세요.
- 내장된 MCP 서버 (Built-In MCP Server) — 모델 컨텍스트 프로토콜 (Model Context Protocol)을 통해 프레젠테이션을 생성합니다.
- 사용자 API 키 사용 (Bring Your Own Key) — OpenAI, Google Gemini, Vertex AI, Azure OpenAI, Anthropic Claude 또는 기타 호환 가능한 제공업체의 API 키를 직접 사용하세요. 사용한 만큼만 비용을 지불하며, 숨겨진 수수료나 구독료가 없습니다.
- Ollama 통합 (Ollama Integration) — 오픈 소스 모델을 로컬에서 실행하여 완전한 프라이버시를 유지하세요.
- OpenAI API 호환 (OpenAI API Compatible) — 사용자의 모델을 사용하여 모든 OpenAI 호환 엔드포인트(Endpoint)에 연결하세요.
- 멀티 제공업체 지원 (Multi-Provider Support) — 텍스트 및 이미지 생성 제공업체를 자유롭게 조합하여 사용하세요.
- 다재다능한 이미지 생성 (Versatile Image Generation) — DALL-E 3, Gemini Flash, Pexels 또는 Pixabay 중에서 선택하세요.
- 풍부한 미디어 지원 (Rich Media Support) — 전문적인 프레젠테이션을 위한 아이콘, 차트 및 커스텀 그래픽을 지원합니다.
- 로컬 실행 (Runs Locally) — 모든 프로세싱은 사용자의 장치에서 이루어지며, 클라우드 의존성이 없습니다.
- API 배포 (API Deployment) — 팀을 위한 자체 API 서비스로 호스팅하세요.
- 완전한 오픈 소스 (Fully Open-Source) — Apache 2.0 라이선스로 제공되며, 검사, 수정 및 기여가 가능합니다.
- Docker 준비 완료 (Docker Ready) — 로컬 모델을 위한 GPU 지원을 포함하여 단 한 번의 명령으로 배포할 수 있습니다.
- Electron 데스크톱 앱 (Electron Desktop App) — Windows, macOS, Linux에서 Presenton을 네이티브 데스크톱 애플리케이션으로 실행하세요 (브라우저가 필요하지 않습니다).
- ChatGPT로 로그인 (Sign in with ChatGPT) — 무료 또는 유료 ChatGPT 계정을 사용하여 로그인하고 즉시 프레젠테이션 제작을 시작하세요. 별도의 API 키가 필요하지 않습니다.
설치나 설정 없이 브라우저에서 직접 Presenton을 실행하세요. 어디서든 즉시 프레젠테이션 제작을 시작할 수 있습니다.
Presenton은 두 가지 방식으로 실행할 수 있습니다:
로컬 개발 스택을 설치할 필요 없이 단 한 번의 명령으로 설정할 수 있는 Docker, 또는 네이티브 앱 경험을 제공하는 Electron 데스크톱 앱(개발 또는 오프라인 사용에 이상적)입니다.
옵션 1: Electron (데스크톱 앱)
Presenton을 네이티브 데스크톱 애플리케이션으로 실행합니다. LLM 및 이미지 제공자(API 키 등)는 앱 내에서 설정할 수 있습니다. 번들링된 백엔드(backend)를 실행할 때 Docker에서 사용되는 것과 동일한 환경 변수(environment variables)가 적용됩니다.
사전 요구 사항 (Prerequisites): Node.js (LTS), npm, Python 3.11, 그리고 servers/fastapi에 있는 공유 FastAPI 백엔드를 위한 uv가 필요합니다.
설치 (Setup) (최초 1회)
cd electron npm run setup:env
이 명령은 Node 의존성(dependencies)을 설치하고, FastAPI 서버에서 uv sync를 실행하며, Next.js 의존성을 설치합니다.
개발 모드로 실행 (Run in Development)
npm run dev
이 명령은 TypeScript를 컴파일하고 Electron을 시작합니다. 백엔드(backend)와 UI는 데스크톱 창 내부에서 로컬로 실행됩니다.
배포용 빌드 (Build Distributable) (선택 사항) Windows, macOS 또는 Linux용 설치 프로그램을 생성하려면:
npm run build:all npm run dist
출력 파일은 electron/dist (또는 electron-builder 설정에 지정된 위치)에 저장됩니다.
옵션 2: Docker
Presenton 시작 Linux/MacOS (Bash/Zsh Shell):
docker run -it --name presenton -p 5000:80 -v "./app_data:/app_data" ghcr.io/presenton/presenton:latest
Windows (PowerShell):
docker run -it --name presenton -p 5000:80 -v "${PWD}\app_data:/app_data" ghcr.io/presenton/presenton:latest
Presenton 열기
원하는 브라우저에서 http://localhost:5000을 열어 Presenton을 사용하세요.
참고: Presenton을 다른 포트 번호로 실행하려면 5000을 원하는 다른 포트 번호로 바꿀 수 있습니다.
아래 목록은 이 저장소의 docker-compose.yml (production, production-gpu, development, development-gpu)에서 전달되는 환경 변수와 일치합니다. compose 파일 옆에 .env 파일을 만들어 값을 넣거나, docker compose up을 실행하기 전에 변수를 내보내기(export) 하세요. Electron 앱의 백엔드는 Docker 외부에서 실행될 때도 동일한 이름의 변수를 읽을 수 있습니다. 코드 내에 다른 선택적 변수들이 존재하지만 (예: 고급 Mem0 경로, LiteParse 러너, 또는 Next.js와 FastAPI가 동일 출처(same-origin)가 아닐 때의 FAST_API_INTERNAL_URL), 이들은 docker-compose.yml에 연결되어 있지 않습니다.
지원되는 이름은 servers/fastapi/utils/get_env.py 및 servers/nextjs/ 아래의 Next.js 서버 유틸리티에서 확인할 수 있습니다.
CAN_CHANGE_KEYS=[true/false]: API 키를 숨기고 수정할 수 없게 만들려면 false로 설정하세요. LLM=[openai/google/vertex/azure/anthropic/lmstudio/ollama/custom/codex]: 사용할 LLM을 선택하세요. OPENAI_API_KEY: LLM이 openai인 경우 필수입니다. OPENAI_MODEL: LLM이 openai인 경우 필수입니다(기본값: gpt-4.1). GOOGLE_API_KEY: LLM이 google인 경우 필수입니다. GOOGLE_MODEL: LLM이 google인 경우 필수입니다(기본값: models/gemini-2.0-flash). VERTEX_MODEL: LLM이 vertex인 경우 필수입니다(기본값: gemini-2.5-flash). VERTEX_API_KEY: LLM=vertex를 위한 선택적 인증 경로(Vertex Express)입니다. VERTEX_PROJECT/VERTEX_LOCATION: GCP 프로젝트 자격 증명을 사용하는 경우 LLM=vertex를 위한 선택적 인증 경로입니다(VERTEX_API_KEY와 함께 사용하지 마세요). VERTEX_BASE_URL: 선택적인 Vertex 게이트웨이/기본 URL 재정의입니다. AZURE_OPENAI_MODEL: LLM이 azure인 경우 필수입니다(배포/모델 이름). AZURE_OPENAI_API_KEY: LLM이 azure인 경우 필수입니다. AZURE_OPENAI_API_VERSION: LLM이 azure인 경우 필수입니다(예: 2024-10-21). AZURE_OPENAI_ENDPOINT/AZURE_OPENAI_BASE_URL: LLM이 azure인 경우 최소 하나는 필수입니다. AZURE_OPENAI_DEPLOYMENT: LLM이 azure인 경우 선택적인 배포 재정의입니다. BEDROCK_REGION: LLM이 bedrock인 경우 선택 사항입니다(기본값: us-east-1). BEDROCK_MODEL: LLM이 bedrock인 경우 필수입니다(예: us.anthropic.claude-3-5-haiku-20241022-v1:0). BEDROCK_API_KEY: LLM이 bedrock인 경우 선택 사항입니다(API 키 인증 모드). BEDROCK_AWS_ACCESS_KEY_ID/BEDROCK_AWS_SECRET_ACCESS_KEY: LLM이 bedrock인 경우 선택 사항입니다(AWS 키 인증 모드; BEDROCK_API_KEY를 사용할 때는 함께 사용하지 마세요).
설정되지 않은 경우).BEDROCK_AWS_SESSION_TOKEN: LLM이 bedrock인 경우 사용하는 선택 사항인 세션 토큰 (session token).
BEDROCK_PROFILE_NAME: LLM이 bedrock인 경우 사용하는 선택 사항인 AWS 프로필 이름 (AWS profile name).
FIREWORKS_API_KEY: LLM이 fireworks인 경우 필수 사항.
FIREWORKS_MODEL: LLM이 fireworks인 경우 필수 사항 (예시: accounts/fireworks/models/llama-v3p1-8b-instruct).
FIREWORKS_BASE_URL: LLM이 fireworks인 경우 선택 사항 (기본값: https://api.fireworks.ai/inference/v1).
TOGETHER_API_KEY: LLM이 together인 경우 필수 사항.
TOGETHER_MODEL: LLM이 together인 경우 필수 사항 (예시: openai/gpt-oss-20b).
TOGETHER_BASE_URL: LLM이 together인 경우 선택 사항 (기본값: https://api.together.ai/v1).
ANTHROPIC_API_KEY: LLM이 anthropic인 경우 필수 사항.
ANTHROPIC_MODEL: LLM이 anthropic인 경우 필수 사항 (기본값: claude-3-5-sonnet-20241022).
CODEX_MODEL: LLM이 codex인 경우 필수 사항 (Codex OAuth 흐름; 콜백을 위해 호스트 포트 1455를 매핑하여 구성하십시오).
CUSTOM_LLM_URL: LLM이 custom인 경우 OpenAI 호환 베이스 URL (base URL).
CUSTOM_LLM_API_KEY: LLM이 custom인 경우 API 키.
CUSTOM_MODEL: LLM이 custom인 경우 모델 ID (model id).
LMSTUDIO_BASE_URL: LLM이 lmstudio인 경우 선택 사항인 LM Studio 베이스 URL (기본값: http://localhost:1234/v1; 생략 시 /v1이 자동으로 추가됨).
LMSTUDIO_API_KEY: LLM이 lmstudio인 경우 선택 사항인 API 키.
LMSTUDIO_MODEL: LLM이 lmstudio인 경우 필수 사항 (예시: openai/gpt-oss-20b).
DISABLE_THINKING=[true/false]: true인 경우, 커스텀 LLM에서 "thinking" 기능을 비활성화합니다.
WEB_GROUNDING=[true/false]: true인 경우, OpenAI, Google, Anthropic 모델에 대해 웹 검색 (web search)을 활성화합니다.
EXTENDED_REASONING=[true/false]: 구성된 스택에서 지원되는 경우 확장된 추론 (extended reasoning)을 활성화합니다.
LLM이 ollama인 경우 다음을 사용하십시오:
OLLAMA_URL: Ollama HTTP API의 베이스 URL (예: Docker 환경에서의 http://host.docker.internal:11434).
OLLAMA_MODEL: Ollama의 모델 이름 (예: llama3.2:3b).
START_OLLAMA=[true/false]: 컨테이너 엔트리포인트 (start.js
): 선택적 설치 + ollama serve.
기본값은 false (development / production compose).
Mem0는 로컬 Qdrant + SQLite (OSS)를 사용합니다; 메모리는 프레젠테이션별로 범위가 지정됩니다.
기본적으로 Docker 런타임은 이제 Mem0를 로컬 Ollama 호환 LLM 엔드포인트로 가리키므로, 초기화를 위해 더 이상 OpenAI 키가 필요하지 않습니다. 대신 OpenAI를 사용하려면 MEM0_LLM_BASE_URL / MEM0_LLM_API_KEY를 OpenAI 호환 엔드포인트 및 키로 설정하십시오.
Docker 이미지는 빌드 중에 기본 spaCy 모델 (en_core_web_sm)을 설치하므로, Mem0는 각 실행 시 추가 설정 없이 시작할 수 있습니다.
| 변수 (Variable) | 용도 (Purpose) |
|---|---|
| MEM0_ENABLED | true/false (compose 기본값 true). |
| MEM0_LLM_MODEL | Mem0 LLM 모델 이름 (compose 기본값 또는 OLLAMA_MODEL인 llama3.1:latest). |
| MEM0_LLM_API_KEY | OpenAI 호환 클라이언트를 위한 Mem0 LLM API 키 자리 표시자 (compose 기본값 ollama). |
| MEM0_LLM_BASE_URL | Mem0 LLM 기본 URL (compose 기본값 또는 OLLAMA_URL인 http://host.docker.internal:11434). |
| MEM0_DIR | 루트 디렉토리 (compose 기본값 /app_data/mem0). |
| MEM0_EMBEDDER_PROVIDER | 임베더 (Embedder) 백엔드 (compose 기본값 fastembed). |
| MEM0_EMBEDDER_MODEL | 모델 ID (compose 기본값 BAAI/bge-small-en-v1.5). |
| MEM0_EMBEDDING_DIMS | 벡터 크기 (compose 기본값 384). |
| MEM0_SPACY_MODEL | 선택적 spaCy 모델 재정의 (기본값 en_core_web_sm). |
| MEM0_REQUIRE_SPACY_MODEL | true로 유지 (기본값). Mem0가 spaCy 표제어 추출 (lemmatization) 없이 실행되기를 의도적으로 원하는 경우에만 false로 설정하십시오. |
| 변수 (Variable) | 용도 (Purpose) |
|---|---|
| LITEPARSE_DPI | OCR 렌더링 DPI (compose 기본값 120). |
| LITEPARSE_NUM_WORKERS | 워커 (Worker) 수 (compose 기본값 1). |
DATABASE_URL: SQLAlchemy URL; 설정되지 않은 경우, 앱은 앱 데이터 아래의 SQLite로 폴백 (fallback) 합니다. MIGRATE_DATABASE_ON_STARTUP: Compose는 모든 서비스에 대해 true를 설정하여 시작 시 마이그레이션이 실행되도록 합니다.
이 변수들은 docker-compose.yml과 일치합니다. IMAGE_PROVIDER는 백엔드 (pexels, pixabay, gemini_flash, nanobanana_pro, dall-e-3, gpt-image-1.5, comfyui)를 선택합니다.
, open_webui
). OpenAI 이미지 모드에는 OPENAI_API_KEY를, Gemini 이미지 모드에는 GOOGLE_API_KEY를 사용합니다 (LLM 섹션과 동일한 키).
DISABLE_IMAGE_GENERATION=[true/false]: 슬라이드 이미지 생성을 비활성화합니다.
IMAGE_PROVIDER: 제공자 ID (위의 enum 참조).
PEXELS_API_KEY: Pexels 스톡 이미지.
PIXABAY_API_KEY: Pixabay 스톡 이미지.
DALL_E_3_QUALITY=[standard/hd]: dall-e-3 사용 시 선택 사항 (기본값 standard).
GPT_IMAGE_1_5_QUALITY=[low/medium/high]: gpt-image-1.5 사용 시 선택 사항 (기본값 medium).
COMFYUI_URL/COMFYUI_WORKFLOW: 셀프 호스팅되는 ComfyUI 워크플로우 JSON.
OPEN_WEBUI_IMAGE_URL/OPEN_WEBUI_IMAGE_API_KEY: Open WebUI 호환 이미지 엔드포인트.
OPENAI_COMPAT_IMAGE_BASE_URL/OPENAI_COMPAT_IMAGE_API_KEY/OPENAI_COMPAT_IMAGE_MODEL: 이미지 요청을 모든 OpenAI 호환 /v1/images/* 엔드포인트(LiteLLM, Azure, vLLM Gateway 등)로 보내기 위해 openai_compatible을 사용하는 경우 필수입니다.
DISABLE_ANONYMOUS_TRACKING=[true/false]: 익명 텔레메트리 (telemetry)를 비활성화하려면 true로 설정합니다.
Presenton은 인스턴스당 **단일 관리자 계정 (single admin account)**을 사용합니다. 자격 증명은 app_data에 저장됩니다 (해싱됨; userConfig.json 참조). Compose의 경우 -e를 사용하거나 .env를 통해 전달하십시오:
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Trending All (daily)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기