在 NAS 上部署本地 AI(DeepSeek + Dify)用于文档分析与知识蒸馏
本教程基于极空间 NASx86 架构16GB 内存和 Docker 环境详细记录从零开始部署 Ollama DeepSeek-R1 7B 量化版以及 Dify Embedding知识库 的全流程包含所有遇到的踩坑点和解决方案。适合希望通过本地 AI 处理私密文档的小微企业或个人。 环境准备硬件- 极空间 Z4pro性能版或其他 x86 架构 NAS支持 Docker- 内存建议 ≥ 16GB7B 模型需 8~10GB系统及其他服务占用约 4GB- CPU 核心数 ≥ 4N305 可流畅运行软件- 开启 SSH控制面板 → 终端机和 SNMP → 启用 SSH- 已安装 Docker套件中心搜索 Docker 安装- 配置镜像加速器解决国内拉取慢的问题推荐地址- 道客镜像站https://docker.m.daocloud.io- 凌霞加速器https://docker.1panel.live- 中科大https://docker.mirrors.ustc.edu.cn- 网易http://hub-mirror.c.163.com注意在极空间 Docker 设置中进入“加速器配置”标签页填入上述任一地址即可。一、部署 Ollama 并安装 DeepSeek 模型1. 创建存储目录在文件管理器中在机械硬盘如 /SATA存储11下新建文件夹 ollama用于存放模型文件。2. 拉取 Ollama 镜像打开 Docker → 镜像 → 仓库搜索 ollama选择 ollama/ollama:latest 下载。3. 创建容器关键配置| 配置项 | 值 || CPU 限制 | 3 核可根据实际调整留部分给系统 || 内存限制 | 9GB9162 MB给模型和缓存留足空间 || 文件/文件夹映射 | /SATA存储11/ollama → /root/.ollama不要勾选只读 || 网络 | host 模式使用宿主机网络无需额外端口映射 |其他保持默认点击“应用”创建容器。4. 手动下载模型避免网络问题由于直接 ollama pull 在国内极不稳定推荐手动下载 GGUF 文件1. 访问 [HuggingFace 镜像站](https://hf-mirror.com/bartowski/DeepSeek-R1-Distill-Qwen-7B-GGUF)2. 找到 DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf约 4.7GB并下载。3. 将下载的文件上传到 NAS 的 /SATA存储11/ollama 目录不要放到子文件夹。4. 在该目录下新建文本文件命名为 Modelfile无后缀内容为FROM ./DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf5. 导入模型SSH 登录 NAS执行以下命令进入容器并创建模型bashdocker exec -it ollama bashollama create deepseek-r1:7b-q4_K_M -f Modelfile完成后用 ollama list 验证应显示该模型。二、部署 Dify1. 下载 Dify 源码- 从 GitHub 下载最新版 [dify-main.zip](https://github.com/langgenius/dify/archive/refs/heads/main.zip)解压后上传到 NAS 中与 ollama 同级的目录例如 /SATA存储11/dify-main。2. 提权避免权限问题SSH 登录后执行bashsudo usermod -aG docker $USER输入密码然后重新登录 SSH 使组权限生效。3. 进入 Dify 目录并启动bashcd /路径/dify-main/docker # 根据你实际上传的路径docker compose up -d首次运行会自动拉取所需镜像。如果拉取缓慢或失败可参考上面配置镜像加速器或手动拉取以下镜像bashdocker pull langgenius/dify-api:latestdocker pull langgenius/dify-web:latestdocker pull postgres:15-alpinedocker pull redis:6-alpinedocker pull nginx:latestdocker pull langgenius/dify-sandbox:latest拉取完成后再次执行 docker compose up -d。4. 处理端口冲突如 nginx 启动失败如果启动时出现类似 failed to bind host port 0.0.0.0:8080/tcp: address already in use 的错误说明端口被占用需要修改配置。步骤a. 复制环境变量模板并编辑bashcp .env.example .envnano .env修改以下内容可根据需要调整端口DB_USERNAMEpostgresDB_PASSWORDdifyai123456DB_HOSTdb_postgres # 注意服务名是 db_postgres 还是 db查看 docker-compose.yamlDB_PORT5432DB_DATABASEdifyEXPOSE_NGINX_PORT8091 # 使用未被占用的端口NGINX_SSL_ENABLEDfalseREDIS_HOSTredisREDIS_PORT6379REDIS_PASSWORDdifyai123456SECRET_KEYyour-strong-secret-key # 可随机生成如 NAS 登录密码保存CtrlO回车并退出CtrlX。b. 修改 docker-compose.yaml 中 nginx 的端口映射bashcp docker-compose.yaml docker-compose.yaml.baknano docker-compose.yaml找到 nginx 服务的 ports 部分将 80:80 改为 ${EXPOSE_NGINX_PORT:-80}:91确保使用环境变量。保存退出。c. 重新启动bashdocker compose downdocker compose up -d5. 处理 api/worker 重启问题如果某些容器如 api、plugin_daemon不断重启可能是数据库连接未就绪或环境变量未正确读取。可以尝试bashdocker compose stop apidocker compose rm -f apidocker compose up -d api等待片刻查看日志docker logs docker-api-1 --tail 50若仍有报错请检查 .env 中 DB_HOST 是否与 docker-compose.yaml 中的数据库服务名一致常见为 db 或 db_postgres。6. 拉取 Embedding 模型知识库必需在 Ollama 容器中拉取轻量嵌入模型bashdocker exec -it ollama ollama pull nomic-embed-text三、配置 Dify 使用本地模型1. 访问 Dify Web 界面浏览器打开 http://你的NAS_IP:你设置的端口例如 http://192.168.5.219:8091。首次访问需注册管理员账号邮箱、用户名、密码自设。2. 添加 DeepSeek 模型LLM- 登录后点击右上角头像 → 设置 → 模型供应商。- 找到 Ollama点击“添加模型”。- 类型选择 LLM填写- 模型名称deepseek-r1:7b-q4_K_M必须与 ollama list 一致- 基础 URLhttp://你的NAS_IP:11434注意是 NAS 的 IP不要用 localhost- 保存状态应变为“已启用”。3. 添加 Embedding 模型用于知识库- 同样在 Ollama 供应商下点击“添加模型”类型选择 Text Embedding。- 模型名称nomic-embed-text- 基础 URL同上http://你的NAS_IP:11434- 保存。四、创建知识库并导入文档1. 创建知识库左侧菜单 → 知识库 → 创建知识库 → 输入名称如“公司资料”选择语言中文创建。2. 导入文档进入知识库点击“导入文档”。支持- 上传文件PDF、Word、Excel、PPT、TXT、Markdown 等可多选- 网页导入输入网址抓取内容- 文本导入直接粘贴文本3. 文档分段分区Dify 自动将文档切分成段落chunk。默认每段 500 字符重叠 50 字符适合大多数场景。也可手动调整- 点击“分段设置”- 修改“分段长度”如技术文档可设为 1000- 修改“重叠长度”避免关键信息切断4. 等待向量化上传后系统使用 Embedding 模型将文本转为向量。状态栏显示“处理中”→“已完成”后即可使用。五、创建应用并启用知识库1. 创建应用左侧菜单 → 工作室 → 创建应用 → 选择 聊天助手输入应用名称。2. 关联知识库在应用编排页面右侧找到 上下文 → 添加 → 选择你创建的知识库。3. 配置提示词可选在左侧“提示词”框可自定义 AI 行为例如你是一个专业的文档分析助手。请基于提供的知识库内容回答问题。如果无法回答请如实告知。4. 发布并测试点击右上角 发布即可在对话框提问。例如- “总结一下这份合同的核心条款”- “我们代理的防火墙有哪些型号”AI 会基于知识库内容回答。六、常见问题与解决| 问题 | 解决方案 || 拉取镜像超时| 配置镜像加速器极空间 Docker 设置 → 加速器配置或手动下载导入。 || docker 命令权限不足 | sudo usermod -aG docker $USER 并重新登录 SSH。 || 端口冲突导致 nginx 无法启动| 修改 .env 中的 EXPOSE_NGINX_PORT 为一个空闲端口并确保 docker-compose.yaml 中对应使用该变量。 || api/worker 不断重启 | 检查 .env 中数据库连接是否正确DB_HOST 应与 docker-compose.yaml 中的服务名一致。尝试 docker compose rm -f api docker compose up -d api。 || 上传文档后一直“处理中”| 检查 Embedding 模型是否已添加并启用查看 worker 日志 docker logs docker-worker-1。 || AI 回答找不到知识库内容| 确认应用编排中已正确关联知识库且文档已完成向量化。可调整检索策略混合检索、相似度阈值。 || 模型回答太慢| 监控 docker stats ollama 看内存是否吃紧可降低并发数在 Ollama 容器中设置 OLLAMA_NUM_PARALLEL1。 |七、后续优化建议1. 提升检索效果尝试使用更专业的 Embedding 模型如 bge-m3需在 Ollama 中拉取。2. 外网访问如需在外网使用建议配置 DDNS 端口转发极空间的节点小宝或使用 VPNTailscale/ZeroTier更安全。3. 多知识库隔离为不同部门或客户创建独立知识库实现数据隔离。4. 监控资源定期执行 docker stats 查看内存占用避免 OOM。 结语至此已在极空间 NAS 上成功部署了一套完全本地化、私密、免费的 AI 文档分析系统。所有数据保留在内网无需担心泄露且可无限次使用。如果本教程对你有帮助欢迎收藏或分享给需要的朋友。如有疑问欢迎在评论区留言交流。

相关新闻

论文质量水涨船高,符号说明不能只靠美观了

论文质量水涨船高,符号说明不能只靠美观了

30日备赛计划第14期|论文质量水涨船高,符号说明不能只靠美观了一两年前,符号说明的写作建议往往是"怎么美观怎么来"。然而随着参赛论文整体质量的提升,仅靠美观已不足以在这一环节取得优势。AI生成的符号表往往不够精确…

2026/8/25 10:33:30 阅读更多 →
世界模型与FlashWorld:从“在梦中学习“到秒级3D场景生成

世界模型与FlashWorld:从“在梦中学习“到秒级3D场景生成

1. 世界模型 1.1 什么是世界模型 世界模型是一种交互式预测模型,在动作的条件下模拟时空环境。与大语言模型(LLM)预测句子中的下一个词不同,世界模型预测的是下一个状态——即当前状态在接收到控制输入后的即时未来。用更简洁的…

2026/8/25 10:33:30 阅读更多 →
Claude Opus 4.6深度解析:AI Agent的核心大脑与工程实践挑战

Claude Opus 4.6深度解析:AI Agent的核心大脑与工程实践挑战

1. 项目概述:Claude Opus 4.6与Agent生态的十字路口最近在AI圈子里,Claude Opus 4.6的发布和围绕“AI Agent”的讨论几乎成了每日必谈的话题。从开发者论坛到技术社群,大家一边兴奋地讨论着Claude Code的新特性,一边又对“Agent时…

2026/8/25 10:33:30 阅读更多 →

最新新闻

Travel 项目总结:从旅行规划到可治理 AI Agent 的工程化实践

Travel 项目总结:从旅行规划到可治理 AI Agent 的工程化实践

Travel 项目总结:从旅行规划到可治理 AI Agent 的工程化实践 开场:Travel 解决的不是“生成一份攻略” Travel 是一个面向旅行规划与执行协同的全栈项目。它覆盖了身份、账单、行程、地点、出行执行、协作、媒体、社区、知识库和管理后台等业务边界&…

2026/8/25 12:52:13 阅读更多 →
从零构建 LangGraph Coding Agent:多智能体协作、Unity 编译、自动修复与人工审批完整实战

从零构建 LangGraph Coding Agent:多智能体协作、Unity 编译、自动修复与人工审批完整实战

从零构建 LangGraph Coding Agent:多智能体协作、Unity 编译、自动修复与人工审批完整实战从零构建 LangGraph Coding Agent:多智能体协作、Unity 编译、自动修复与人工审批完整实战一、项目介绍1. LangGraph Coding Agent 是什么2. 项目工作流3. 从 Day…

2026/8/25 12:52:13 阅读更多 →
AI创业者通识日报 | 2026年8月15日

AI创业者通识日报 | 2026年8月15日

AI创业者通识日报 | 2026年8月15日OpenAI预览Ultrafast服务层,GPT-5.6 Sol达14倍标准速度;Databricks完成50亿美元融资估值1900亿;Anthropic披露多智能体"地盘战"风险;欧盟AI Act透明度义务全面生效。今日聚焦&#xff…

2026/8/25 12:52:13 阅读更多 →
Linux驱动:SPI子系统

Linux驱动:SPI子系统

Linux SPI驱动框架层次如上图:除开硬件和用户态应用程序,由上到下分成3层:设备驱动层: spi框架使用者 核心层:spi框架搭建者 控制器驱动层: spi框架适配者drivers/spi/spi.c spi-mem.c spi-mux.c include/linux/spi/sp…

2026/8/25 12:52:13 阅读更多 →
k8s- Health Check

k8s- Health Check

Kubernetes Health Check 学习参考:配置存活、就绪和启动探针 环境准备 rootmaster30:~# kubectl create ns health rootmaster30:~# kubectl config set-context --current --namespace healthHealth Check 应用可能会因为各种问题,变的 unhealthy&am…

2026/8/25 12:52:13 阅读更多 →
WebSocket实时通信:从协议到实现

WebSocket实时通信:从协议到实现

TL;DR 核心要点速览 Gin框架是Go最流行的Web框架 gRPC适合内部服务,REST适合对外API JWT Token是无状态认证的标准方案 Go标准库net/http可直接构建HTTP服务 Swagger/OpenAPI可自动生成API文档 本篇是Go Web开发模块,含完整项目代码 摘要:本文详细介绍从协议到实现,涵盖核心原…

2026/8/25 12:51:13 阅读更多 →

日新闻

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

洛谷 P7912:[CSP-J 2021 T4] 小熊的果篮 ← 双向链表

【题目来源】 https://www.luogu.com.cn/problem/P7912 【题目描述】 小熊的水果店里摆放着一排 n 个水果。每个水果只可能是苹果或桔子,从左到右依次用正整数 1,2,…,n 编号。连续排在一起的同一种水果称为一个“块”。小熊要把这一排水果挑到若干个果篮里&#x…

2026/8/25 0:00:34 阅读更多 →
Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG

Transformers.js 网页端图像抠图实战:零后端 3 行代码返回透明 PNG 【免费下载链接】transformers.js State-of-the-art Machine Learning for the web. Run 🤗 Transformers directly in your browser, with no need for a server! 项目地址: https:/…

2026/8/25 0:00:34 阅读更多 →
数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

数学建模竞赛论文写作指南:从模型构建到学术表达的核心技能

1. 项目概述:从“会做”到“会写”的竞赛核心跃迁“全国大学生数学建模竞赛”,这个名字对理工科学生来说,分量极重。每年,无数团队在三天三夜的时间里,为一个开放性问题绞尽脑汁,从建立模型、求解算法到编程…

2026/8/25 0:00:34 阅读更多 →

周新闻

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

2026/8/25 3:38:12 阅读更多 →
SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

2026/8/25 3:38:18 阅读更多 →
Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

2026/8/25 3:38:23 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/24 20:22:44 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/25 10:31:12 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/24 11:20:22 阅读更多 →