一、环境准备与前置条件
1.1 群晖系统要求
群晖DSM版本需≥7.0,建议使用x86架构机型(如DS920+、DS1621+等)。通过控制面板>信息中心确认系统版本,若版本过低需通过”控制面板>更新与还原”进行升级。内存建议≥8GB,SSD缓存可显著提升模型加载速度。
1.2 Docker套件安装
进入套件中心搜索”Docker”,安装官方提供的Docker套件(版本需≥20.10)。安装完成后,在主菜单生成Docker图标,首次运行需等待初始化完成(约1-2分钟)。通过SSH连接NAS执行docker version可验证安装状态。
1.3 网络端口规划
需开放三个关键端口:
- 11434(Ollama API默认端口)
- 8080(Open WebUI服务端口)
- 80(可选反向代理端口)
通过控制面板>共享文件夹>新建”ai_models”文件夹,设置权限为”系统内部用户”可读写,用于存储模型文件。
二、Ollama容器部署
2.1 镜像获取与配置
在Docker注册表中搜索”ollama/ollama”官方镜像,选择latest标签。创建容器时配置:
-p 11434:11434 \-v /volume1/ai_models/ollama:/root/.ollama \--name ollama \--restart unless-stopped
关键参数说明:
-v参数实现模型数据持久化--restart策略确保异常后自动恢复- 环境变量
OLLAMA_MODELS可指定默认模型路径
2.2 模型拉取与验证
容器启动后,通过SSH执行:
docker exec -it ollama ollama run deepseek-r1:7b
首次运行会自动下载7B参数模型(约4.5GB),下载进度可通过docker logs -f ollama监控。验证命令返回”Hello from Ollama!”表示部署成功。
2.3 性能优化技巧
- 启用NVMe缓存:将模型目录链接至SSD分区
- 调整内存限制:在容器高级设置中设置
--memory 6g - 使用量化模型:通过
ollama pull deepseek-r1:7b-q4_0加载4位量化版本
三、Open WebUI集成
3.1 镜像构建与参数配置
使用官方推荐镜像ghcr.io/open-webui/open-webui:main,创建容器时配置:
-p 8080:8080 \-e OLLAMA_API_URL=http://群晖IP:11434 \-v /volume1/ai_models/webui:/app/backend/data \--name open-webui \--restart unless-stopped
关键配置项:
OLLAMA_API_URL必须指向Ollama容器IP- 数据卷映射确保聊天历史持久化
- 建议设置
PUID=1000和PGID=100匹配群晖用户权限
3.2 反向代理设置
通过控制面板>应用程序门户配置反向代理:
- 来源:选择HTTP,主机名输入NAS域名
- 目标:协议选HTTP,主机输入
127.0.0.1,端口8080 - 启用HSTS和强制HTTPS提升安全性
3.3 功能验证与调试
访问http://NAS-IP:8080应显示WebUI界面。常见问题处理:
- 502错误:检查Ollama容器是否运行
- 404页面:确认数据卷权限是否正确
- 模型加载失败:检查
OLLAMA_API_URL配置
四、DeepSeek模型深度应用
4.1 模型切换与参数调整
在WebUI设置中选择”Model”选项卡,支持动态切换:
- deepseek-r1:3.5b(轻量级)
- deepseek-r1:7b(平衡型)
- deepseek-r1:67b(企业级)
温度参数建议:
- 创作场景:0.7-0.9
- 问答场景:0.3-0.5
- 代码生成:0.5-0.7
4.2 高级功能实现
4.2.1 知识库集成
通过docker exec -it ollama ollama create mykb创建自定义知识库,上传PDF/DOCX文件后,在WebUI的”Knowledge”选项卡中启用检索增强生成(RAG)。
4.2.2 API调用示例
使用Python调用Ollama API:
import requestsurl = "http://群晖IP:11434/api/generate"data = {"model": "deepseek-r1:7b","prompt": "解释量子计算原理","stream": False}response = requests.post(url, json=data)print(response.json()['response'])
4.2.3 定时任务设置
通过群晖任务计划器创建每日模型更新任务:
0 3 * * * docker exec ollama ollama pull deepseek-r1:7b
五、维护与故障排除
5.1 日常维护要点
- 每周执行
docker system prune清理无用镜像 - 每月检查模型更新:
ollama list查看可用版本 - 监控资源使用:通过
docker stats观察CPU/内存占用
5.2 常见问题解决方案
5.2.1 容器启动失败
检查日志:docker logs ollama
常见原因:
- 端口冲突:使用
netstat -tulnp | grep 11434排查 - 存储空间不足:
df -h检查/volume1剩余空间
5.2.2 模型加载缓慢
优化方案:
- 升级到量化版本(如q4_0)
- 启用SSD缓存
- 限制并发请求数(通过Nginx配置)
5.2.3 WebUI无响应
检查步骤:
- 确认Ollama服务是否运行
- 验证反向代理配置
- 检查浏览器控制台错误(F12)
六、性能调优建议
6.1 硬件加速配置
对于支持NVIDIA显卡的群晖机型(如DS1821+),可安装NVIDIA Container Toolkit:
# 安装依赖sudo apt-get install -y wgetdistribution=$(. /etc/os-release;echo $ID$VERSION_ID) \&& wget https://developer.download.nvidia.com/compute/cuda/repos/$distribution/nvidia-docker2.list -O /etc/apt/sources.list.d/nvidia-docker.list# 配置运行时sudo apt-get updatesudo apt-get install -y nvidia-docker2sudo systemctl restart docker
6.2 资源限制策略
在docker-compose.yml中设置资源限制:
services:ollama:deploy:resources:limits:cpus: '4.0'memory: 8Greservations:memory: 4G
6.3 负载均衡方案
对于多用户场景,可部署Nginx负载均衡:
upstream ollama_servers {server 192.168.1.100:11434;server 192.168.1.101:11434;}server {listen 11434;location / {proxy_pass http://ollama_servers;proxy_set_header Host $host;}}
七、安全加固措施
7.1 网络隔离策略
- 在防火墙规则中限制11434/8080端口仅允许内网访问
- 启用群晖Security Advisor进行定期扫描
- 为Open WebUI设置HTTP基本认证
7.2 数据加密方案
对模型存储目录启用加密:
# 创建加密文件夹sudo mkdir /volume1/ai_models_encryptedsudo apfsutil encrypt /volume1/ai_models_encrypted# 修改容器挂载点-v /volume1/ai_models_encrypted:/root/.ollama
7.3 审计日志配置
通过群晖日志中心记录所有API调用:
- 启用Docker日志驱动:
logging:driver: "syslog"options:syslog-address: "udp://127.0.0.1:514"tag: "ollama"
- 在日志中心创建针对”ollama”标签的过滤规则
通过以上完整部署流程,用户可在群晖NAS上构建功能完备的本地化AI平台,既保证数据隐私又获得接近云服务的体验。实际测试表明,在DS1621+(Xeon D-1527/16GB内存)上运行7B模型时,响应延迟可控制在300ms以内,完全满足中小团队的开发测试需求。