본문으로 건너뛰기

© 2026 Molayo

GH Trending릴리즈2026. 05. 23. 19:58

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 (사용 가능한 플랫폼)

플랫폼아키텍처패키지다운로드
macOSApple Silicon / Intel.dmgDownload ↗
Windowsx64.exeDownload ↗
Linuxx64.debDownload ↗

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.pyservers/nextjs/ 아래의 Next.js 서버 유틸리티에서 확인할 수 있습니다.

CAN_CHANGE_KEYS=[true/false]: API 키를 숨기고 수정할 수 없게 만들려면 false로 설정하세요. LLM=[openai/google/vertex/azure/anthropic/lmstudio/ollama/custom/codex]: 사용할 LLM을 선택하세요. OPENAI_API_KEY: LLMopenai인 경우 필수입니다. OPENAI_MODEL: LLMopenai인 경우 필수입니다(기본값: gpt-4.1). GOOGLE_API_KEY: LLMgoogle인 경우 필수입니다. GOOGLE_MODEL: LLMgoogle인 경우 필수입니다(기본값: models/gemini-2.0-flash). VERTEX_MODEL: LLMvertex인 경우 필수입니다(기본값: 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: LLMazure인 경우 필수입니다(배포/모델 이름). AZURE_OPENAI_API_KEY: LLMazure인 경우 필수입니다. AZURE_OPENAI_API_VERSION: LLMazure인 경우 필수입니다(예: 2024-10-21). AZURE_OPENAI_ENDPOINT/AZURE_OPENAI_BASE_URL: LLMazure인 경우 최소 하나는 필수입니다. AZURE_OPENAI_DEPLOYMENT: LLMazure인 경우 선택적인 배포 재정의입니다. BEDROCK_REGION: LLMbedrock인 경우 선택 사항입니다(기본값: us-east-1). BEDROCK_MODEL: LLMbedrock인 경우 필수입니다(예: us.anthropic.claude-3-5-haiku-20241022-v1:0). BEDROCK_API_KEY: LLMbedrock인 경우 선택 사항입니다(API 키 인증 모드). BEDROCK_AWS_ACCESS_KEY_ID/BEDROCK_AWS_SECRET_ACCESS_KEY: LLMbedrock인 경우 선택 사항입니다(AWS 키 인증 모드; BEDROCK_API_KEY를 사용할 때는 함께 사용하지 마세요).

설정되지 않은 경우).BEDROCK_AWS_SESSION_TOKEN: LLMbedrock인 경우 사용하는 선택 사항인 세션 토큰 (session token).
BEDROCK_PROFILE_NAME: LLMbedrock인 경우 사용하는 선택 사항인 AWS 프로필 이름 (AWS profile name).
FIREWORKS_API_KEY: LLMfireworks인 경우 필수 사항.
FIREWORKS_MODEL: LLMfireworks인 경우 필수 사항 (예시: accounts/fireworks/models/llama-v3p1-8b-instruct).
FIREWORKS_BASE_URL: LLMfireworks인 경우 선택 사항 (기본값: https://api.fireworks.ai/inference/v1).
TOGETHER_API_KEY: LLMtogether인 경우 필수 사항.
TOGETHER_MODEL: LLMtogether인 경우 필수 사항 (예시: openai/gpt-oss-20b).
TOGETHER_BASE_URL: LLMtogether인 경우 선택 사항 (기본값: https://api.together.ai/v1).
ANTHROPIC_API_KEY: LLManthropic인 경우 필수 사항.
ANTHROPIC_MODEL: LLManthropic인 경우 필수 사항 (기본값: claude-3-5-sonnet-20241022).
CODEX_MODEL: LLMcodex인 경우 필수 사항 (Codex OAuth 흐름; 콜백을 위해 호스트 포트 1455를 매핑하여 구성하십시오).
CUSTOM_LLM_URL: LLMcustom인 경우 OpenAI 호환 베이스 URL (base URL).
CUSTOM_LLM_API_KEY: LLMcustom인 경우 API 키.
CUSTOM_MODEL: LLMcustom인 경우 모델 ID (model id).
LMSTUDIO_BASE_URL: LLMlmstudio인 경우 선택 사항인 LM Studio 베이스 URL (기본값: http://localhost:1234/v1; 생략 시 /v1이 자동으로 추가됨).
LMSTUDIO_API_KEY: LLMlmstudio인 경우 선택 사항인 API 키.
LMSTUDIO_MODEL: LLMlmstudio인 경우 필수 사항 (예시: 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)을 활성화합니다.

LLMollama인 경우 다음을 사용하십시오:

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_ENABLEDtrue/false (compose 기본값 true).
MEM0_LLM_MODELMem0 LLM 모델 이름 (compose 기본값 또는 OLLAMA_MODELllama3.1:latest).
MEM0_LLM_API_KEYOpenAI 호환 클라이언트를 위한 Mem0 LLM API 키 자리 표시자 (compose 기본값 ollama).
MEM0_LLM_BASE_URLMem0 LLM 기본 URL (compose 기본값 또는 OLLAMA_URLhttp://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_MODELtrue로 유지 (기본값). Mem0가 spaCy 표제어 추출 (lemmatization) 없이 실행되기를 의도적으로 원하는 경우에만 false로 설정하십시오.
변수 (Variable)용도 (Purpose)
LITEPARSE_DPIOCR 렌더링 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가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0