本文记录 WSL2 + Docker 私有化部署 Presenton 的方案与命令。Presenton 是开源 AI 演示文稿生成器,文本生成走 Windows 宿主机 Ollama 模型 qwen2.5:3b,大纲与 PPTX 导出落盘本地,不依赖第三方 LLM API Key。
定位:实验 / PoC。 对照机器:Windows 10 + WSL2 Ubuntu,NVIDIA GeForce GTX 1060 6GB;Presenton 跑 WSL Docker,Ollama 跑 Windows 宿主机,实测模型 qwen2.5:3b。
效果预期: 本地 qwen2.5:3b 适合简单主题、页数少、结构直白的 PPT(如概述、提纲、内部分享初稿)。若需复杂逻辑、多层级大纲、行业深度内容或精美排版,建议在 Presenton Settings 切换 OpenAI / Gemini 等线上大模型,生成质量通常明显更好;本地方案侧重隐私、速度与零 API 成本。
目录
整体部署架构设计说明
WSL 环境前置校验标准
Windows 宿主机 Ollama 准备
Docker 私有化 Presenton 完整部署流程
私有化环境关键参数说明
部署后初始化与安全配置
容器生命周期运维命令
Presenton 核心能力概览
部署验证步骤
常见问题
适用场景与小结
应用链接
1. 整体部署架构设计说明
1.1 网络与存储架构链路
Windows 浏览器 ↔ WSL2 ↔ Docker Presenton(:5001) ↕ HTTPWindows 宿主机 Ollama(:11434) ← qwen2.5:3b存储层:~/data/presenton 持久挂载 /app_data(配置、PPTX、Mem0 向量库)
Presenton 容器不内置跑 Ollama,只通过 HTTP 调用宿主机 qwen2.5:3b;GPU 算力集中在 Windows Ollama,容器负责 Web UI、编排与导出。
1.2 私有化设计核心目标
数据不出域:提示词、上传文档、生成 PPTX 仅存 WSL 本地目录;
模型自主:LLM 与 Mem0 记忆模块均指向宿主机 Ollama qwen2.5:3b,无需 OpenAI Key;
可迁移:容器销毁后 ~/data/presenton 保留,重装即恢复;
时区统一:TZ=Asia/Shanghai,导出文件时间戳与业务一致。
1.3 对照机器与硬件参考
| 项目 | 内容 |
|---|
| 宿主机 | Windows 10 |
| WSL | Ubuntu(WSL2) |
| GPU | NVIDIA GeForce GTX 1060 6GB |
| 内存 | 建议 16GB+(系统 + qwen2.5:3b + Presenton 容器) |
| 磁盘 | ~/data/presenton 建议预留 5GB+ |
1060 6GB 说明: LLM 推理由 Windows Ollama 加载 qwen2.5:3b(约 1.9GB 量化)占 GPU,Presenton 容器主要负责 Web 与编排,本身几乎不占显存;生成 PPT 时建议关闭其他占 GPU 程序。
2. WSL 环境前置校验标准
docker -vsystemctl status docker
Docker 版本正常、服务 active (running) 即就绪。
hostname -Icurl -s -o /dev/null -w "HTTP %{http_code}\n" http://127.0.0.1:5001 || true可输出 WSL IP;5001 尚未占用属正常(部署后应返回 200)。
3. Windows 宿主机 Ollama 准备
Ollama 安装在 Windows 宿主机(非 WSL 内)。WSL2 下容器访问宿主机 Ollama,须用 /etc/resolv.conf 中的 nameserver IP(下文记为 WIN_HOST),host.docker.internal 在本环境可能不通。
3.1 安装并拉取模型
Windows PowerShell(管理员可选):
# 若未安装,到 Ollama 官网下载 Windows 安装包后执行:ollama --versionnvidia-smi# 允许 WSL / Docker 访问(当前会话;长期生效请写入系统环境变量)$env:OLLAMA_HOST="0.0.0.0:11434"ollama pull qwen2.5:3bollama list
nvidia-smi 应识别 GTX 1060 6GB。若更看重中文质量,可改用 qwen2.5:7b(约 4.7GB),名称须与下文 OLLAMA_MODEL 一致。
3.2 从 WSL 验证宿主机 Ollama 可达
WIN_HOST=$(grep nameserver /etc/resolv.conf | awk '{print $2}')curl -s "http://${WIN_HOST}:11434/api/tags" | head -c 200echo预期返回 JSON,且含 qwen2.5:3b。若连接失败,检查 Windows 防火墙是否放行 11434,或确认 OLLAMA_HOST=0.0.0.0:11434 已生效后重启 Ollama。
4. Docker 私有化 Presenton 完整部署流程
4.1 本地持久化目录
mkdir-p ~/data/presenton
4.2 启动容器(Ollama + qwen2.5:3b)
先取 Windows 宿主机 IP(WSL 内执行):
WIN_HOST=$(grep -m1 nameserver /etc/resolv.conf | awk '{print $2}')echo "OLLAMA at $WIN_HOST"启动容器:
docker run -d \--name presenton-private \--restart always \-p 5001:80 \-v ~/data/presenton:/app_data \-e TZ=Asia/Shanghai \-e DISABLE_ANONYMOUS_TRACKING=true \-e CAN_CHANGE_KEYS=true \-e LLM=ollama \-e OLLAMA_URL=http://${WIN_HOST}:11434 \-e OLLAMA_MODEL=qwen2.5:3b \-e START_OLLAMA=false \-e MEM0_ENABLED=false \-e MEM0_LLM_BASE_URL=http://${WIN_HOST}:11434 \-e MEM0_LLM_MODEL=qwen2.5:3b \-e DISABLE_IMAGE_GENERATION=true \-e WEB_GROUNDING=false \-e AUTH_USERNAME=admin \-e AUTH_PASSWORD=changeme123 \ ghcr.io/presenton/presenton:latestMEM0_ENABLED=false 关闭记忆模块,避免容器访问外网下载向量模型拖慢生成。
4.3 重建容器与健康检查
需释放 GPU 并重建时,在 WSL 执行:
WIN_HOST=$(grep -m1 nameserver /etc/resolv.conf | awk '{print $2}')curl -s "http://${WIN_HOST}:11434/api/generate" \-H 'Content-Type: application/json' \-d '{"model":"qwen2.5:3b","keep_alive":0}' >/dev/null || truedocker rm -f presenton-private 2>/dev/null || true# 再执行 4.2 节 docker run 整段命令健康检查:
docker ps --filter name=presenton-privatecurl -s -o /dev/null -w "HTTP %{http_code}\n" http://127.0.0.1:5001/4.4 部署启动有效性校验
docker ps--filtername=presenton-privatecurl -s -o /dev/null -w "HTTP %{http_code}\n" http://127.0.0.1:5001/docker logs -f presenton-private日志无持续报错,且 curl 返回 HTTP 200 时,可认为 Web 服务已就绪:
curl -s -o /dev/null -w "HTTP %{http_code}\n" http://127.0.0.1:5001/ls ~/data/presenton
5. 私有化环境关键参数说明
| 参数 | 作用 |
|---|
LLM=ollama | 文本 LLM 走 Ollama 协议 |
OLLAMA_URL=http://${WIN_HOST}:11434 | 容器访问 Windows 宿主机 Ollama(WIN_HOST 为 resolv.conf 的 nameserver) |
OLLAMA_MODEL | 固定为 qwen2.5:3b |
MEM0_LLM_MODEL | 固定为 qwen2.5:3b(与主模型一致) |
WEB_GROUNDING=false | 关闭联网搜索,减少额外 LLM 调用 |
MEM0_ENABLED=false | 关闭 Mem0,避免 HuggingFace 不可达时拖慢/失败 |
START_OLLAMA=false | 不在容器内再起 Ollama,避免双实例冲突 |
DISABLE_IMAGE_GENERATION=true | 关闭配图,纯本地文本链路 |
DISABLE_ANONYMOUS_TRACKING=true | 关闭匿名遥测 |
CAN_CHANGE_KEYS=true | 显示 Settings 模型配置;默认仍为 qwen2.5:3b |
-v ~/data/presenton:/app_data | PPTX、配置、Mem0 数据落盘 |
-p 5001:80 | Web UI 与 API 端口 |
本地模型:
| 模型 | 说明 |
|---|
qwen2.5:3b | 默认推荐;中文友好,1060 上大纲约 1 分钟内 |
qwen2.5:7b | 中文质量更好,体积约 4.7GB,可作升级备选 |
本地 vs 线上模型:
| 场景 | 建议 |
|---|
| 简单主题、5–10 页、要点式内容 | 本地 qwen2.5:3b(本文方案) |
| 复杂行业报告、多文档融合、精细措辞与版式 | Presenton 内切换 OpenAI / Gemini 等线上模型 |
| 敏感数据、内网隔离、不能接受外发 | 坚持本地 qwen2.5:3b,接受效果上限 |
线上模型在 Settings 中按 Provider 分类配置(见 6.1);CAN_CHANGE_KEYS=true 时入口可见,默认仍为 Ollama + qwen2.5:3b。
6. 部署后初始化与安全配置
浏览器打开 http://localhost:5001
使用 4.2 节预设账号登录(admin / 你的密码)
左侧进入 Settings,顶部状态栏应显示 Ollama (qwen2.5:3b) - No image provider - Web search disabled;Text Provider 选 Ollama,模型下拉选 qwen2.5:3b,点 Check models 后 Save Configuration
局域网访问:同事用 http://<WSL_IP>:5001,建议仅内网使用或前置反向代理 + HTTPS
6.1 Settings:文本 / 配图 / 搜索 Provider
左侧 Select Provider 分三类,改完点右下角 Save Configuration 生效。日常默认保持 qwen2.5:3b;仅复杂 PPT 临时切线上 Text Provider。
文本模型(Text Provider) — Select Text Provider 选 Ollama,模型选 qwen2.5:3b;Ollama URL 填 Windows 宿主机地址(如 http://192.168.208.1:11434),点 Check models 确认列表含 qwen2.5:3b。复杂 PPT 可改选 OpenAI / Google / DeepSeek / ChatGPT 等线上 Provider 并填 API Key:
配图模型(Image Provider) — 部署时默认关闭(DISABLE_IMAGE_GENERATION=true)。需幻灯片配图时,打开开关并选择 NanoBanana Pro / ComfyUI / Open WebUI / Custom 等:
联网搜索(Web Search Provider) — 默认关闭。需实时检索增强内容时,打开开关并选择 Tavily / Exa / Brave / SearXNG 等:
日常用本地 qwen2.5:3b 即可;复杂汇报建议 Text Provider 切线上大模型,配图与搜索按需另开。
两阶段耗时说明(实测 GTX 1060 + qwen2.5:3b):
| 阶段 | LLM 调用次数 | 体感 |
|---|
| 大纲生成 | 约 1–2 次 | 约 1 分钟内可见大纲 |
| 选模板后「Generating presentation data」 | 每页 1 次以上,串行执行 | 5 页往往需数分钟 |
进度条在 95% 附近停留 多为正在生成最后一两页或导出数据,属正常。本地 3B 单次结构化输出约 10–20 秒/次,页数越多越久——这是 Presenton 流程设计 + 1060 算力上限,不是页面故障。
想再快一点:
生成前把 Auto slides 调到 5–6 页,verbosity 选 concise
Windows 设 OLLAMA_KEEP_ALIVE=-1(用户环境变量),避免生成过程中模型反复卸载
生成时勿用其他程序占用 Ollama / GPU
要速度优先:复杂稿用 Settings 线上大模型
生产环境请修改默认密码;需强制重置时:
docker stop presenton-private && docker rm presenton-privatedocker run -d ... -eAUTH_OVERRIDE_FROM_ENV=true-eAUTH_PASSWORD=新密码 ... ghcr.io/presenton/presenton:latest
(其余参数与 4.2 相同。)
7. 容器生命周期运维命令
# 重启docker restart presenton-private# 日志docker logs -f presenton-private# 停止docker stop presenton-private# 查看运行容器docker ps# 销毁容器(~/data/presenton 数据保留)docker rm presenton-private
8. Presenton 核心能力概览
Prompt 生成 PPT:输入主题或粘贴文档,自动拆页、写要点
可编辑导出:Web 内微调后导出 PPTX / PDF
模板系统:内置 general 等模板,支持自定义 HTML + Tailwind 主题
API 部署:/api/v1/ppt/presentation/generate 供 n8n / 脚本调用
MCP Server:可通过 MCP 客户端远程触发生成(需 Bearer Token)
多 Provider:复杂场景可在 Settings 切线上模型;本地默认 qwen2.5:3b
9. 部署验证步骤
完成第 4 节后,按下列步骤自检。
9.1 Web UI 试生成
首页选择 Create Presentation,进入 Generate 页
在 Write prompt 输入主题,例如:人工智能概述
可选上传 Office / PDF 等附件;页数、语言可用顶部 Auto slides / Auto 下拉调整
点击 Get Started,等待大纲 → 幻灯片 → 预览;生成页顶部状态栏应含 qwen2.5:3b
生成完成后回到 Dashboard,Decks 区可见新建的演示文稿
点击进入编辑器,左侧为缩略图导航,右侧 AI Assistant 可继续改稿;右上角 Export 导出 PPTX
导出 PPTX,检查 ~/data/presenton 下是否落盘
9.2 API 验证(可选)
curl-u admin:changeme123 \-X POST http://127.0.0.1:5001/api/v1/ppt/presentation/generate \-H"Content-Type: application/json" \-d'{"content": "Introduction to Local LLM and Private AI PPT","n_slides": 5,"language": "Chinese","template": "general","export_as": "pptx" }'预期返回 presentation_id 与 path。将密码换成你的实际值。
9.3 自检清单
- Windows
ollama list 含 qwen2.5:3b - WSL
curl 宿主机 :11434/api/tags 返回含 qwen2.5:3b - Settings 文本模型为 Ollama +
qwen2.5:3b curl http://127.0.0.1:5001/ 返回 HTTP 200,Telemetry 已关- 生成 PPTX 可本地打开、可二次编辑
- 容器重启后历史项目仍在
10. 常见问题
| 现象 | 处理 |
|---|
| 容器报 Ollama connection refused | Windows 设 OLLAMA_HOST=0.0.0.0:11434 并重启 Ollama;OLLAMA_URL 用 WIN_HOST(resolv.conf 的 nameserver),勿用 localhost |
| Settings 找不到大模型配置 | 确认 CAN_CHANGE_KEYS=true;为 false 时 Web UI 会隐藏 Provider 入口,需按 4.2 重建容器 |
切了线上模型仍走 qwen2.5:3b | Settings 改 Provider 后须点 Save Configuration;生成页顶部状态栏应显示目标 Provider |
| Settings 仍显示旧模型名 | Text Provider 重新选 Ollama → 模型选 qwen2.5:3b → Check models → Save Configuration;或按 4.3 重建容器 |
| 模型 not found | Windows 执行 ollama pull qwen2.5:3b,OLLAMA_MODEL / MEM0_LLM_MODEL / Settings 三者名称须一致 |
报 LLM did not return any content | 确认 Settings 模型为 qwen2.5:3b 并已 Save;或临时切 Settings 线上模型 |
| 大纲一直 Drafting、极慢或卡住 | 按 4.3 释放 GPU 并重建容器;浏览器强制刷新后新建演示文稿 |
| 大纲后生成很慢 | 正常:每页串行调 LLM,5 页约数分钟;减页数、verbosity 选 concise、设 OLLAMA_KEEP_ALIVE=-1 |
| 进度条卡在 95% | 多在生成末页/导出,等待即可;超 10 分钟无变化再查 docker logs |
| Ollama 显存不足 / OOM | 关闭占 GPU 的其他程序;确认加载 qwen2.5:3b(约 1.9GB);减少页数 |
| 中文内容不理想 | UI 语言选 Chinese;可升级 qwen2.5:7b;复杂内容建议 Settings 切线上大模型 |
| 大纲松散、页间重复、深度不够 | qwen2.5:3b 能力有限属正常;换 GPT / Gemini 等线上模型,或人工在编辑器 + AI Assistant 二次改稿 |
| 幻灯片无配图 | 已设 DISABLE_IMAGE_GENERATION=true;需配图时设 false 并配置 IMAGE_PROVIDER=pexels + Key |
| 忘记登录密码 | 单容器启动加 -e RESET_AUTH=true 重置一次,再设新 AUTH_USERNAME / AUTH_PASSWORD |
| Windows 浏览器打不开 5001 | WSL 内 curl localhost:5001 正常则检查 Windows 防火墙;必要时 netsh interface portproxy 转发 |
11. 适用场景与小结
本文在 WSL2 + Docker 下完成 Presenton + Windows Ollama 私有化部署:宿主机 qwen2.5:3b 供稿,Web UI 可生成中文 PPT 并导出,数据落盘 ~/data/presenton。
本地 qwen2.5:3b 适合: 内网 PoC、隐私敏感、简单主题初稿(概述、培训提纲、内部分享),1060 6GB 上实测可跑通。复杂演示(行业研报、多附件融合、高标准对外汇报)建议在 Presenton 切换 线上大模型,效果更好。
演示视频
应用链接
[1] Presenton GitHub. https://github.com/presenton/presenton
[2] Presenton Docker 镜像. https://github.com/presenton/presenton/pkgs/container/presenton
[3] Presenton 官网. https://presenton.ai
[4] Ollama 官网. https://ollama.com
[5] Ollama 模型 qwen2.5. https://ollama.com/library/qwen2.5
[6] Pexels API(可选配图). https://www.pexels.com/api/
以上为个人实践记录,环境、版本差异可能导致步骤差异。如有问题或更优做法,欢迎留言交流。
如果觉得有帮助,欢迎点赞、收藏、关注,后续会继续分享本地大模型部署相关实践。文中疏漏或你在复现中遇到的新问题,也欢迎在评论区一起探讨。