本文提供了一份详细指南,介绍如何在Windows服务器(2019或2022)上以非Docker方式部署AnythingLLM,一个开源的AI知识库管理工具,用于实现网站客服聊天机器人功能。指南涵盖两种部署方式——AnythingLLMDesktop.exe(桌面应用)和Node.js手动部署(源码部署),两者均支持Web访问,并可集成免费本地AI模型(如通过Ollama运行的Llama3)。本文还讨论了两种方式是否可同时运行、它们的区别以及具体部署步骤,适用于需要自托管、隐私优先、无额外模型费用的用户。
为什么选择AnythingLLM作为网站客服工具?
AnythingLLM是构建网站客服系统的理想选择,因为它具备以下特点:
- 知识库管理:支持上传FAQ、产品手册(PDF、TXT、Markdown等),通过检索增强生成(RAG)提供精准回答。
- 免费AI模型:集成开源模型(如Ollama的Llama3),无需商业API费用(如OpenAI)。
- Web访问:提供Web管理界面(默认端口3001)和可嵌入网站的JavaScript聊天小部件。
- 隐私保障:完全本地运行,数据不上传云端,适合隐私敏感场景。
AnythingLLM支持在Windows服务器上非Docker部署,适合因兼容性或复杂性问题避免容器化的用户。
前提条件
在部署前,确保Windows服务器(2019/2022)满足以下要求:
- 硬件:至少8GB内存,4核CPU,10GB存储空间(包括Llama3模型和数据)。NVIDIA GPU(4GB+显存)可选,用于加速AI推理。
- 软件:Windows Server 2019或2022,安装最新补丁(通过
winver
检查)。 - 网络:初始设置需联网,防火墙需允许3001(AnythingLLM)和11434(Ollama)端口。
- 网站:支持静态或动态网站(如WordPress),通过HTML/JavaScript嵌入聊天机器人。
部署方式
AnythingLLM支持两种部署方式,均可实现Web访问和网站客服功能。以下是详细步骤、对比以及同时运行的指导。
方法一:AnythingLLMDesktop.exe(桌面应用)
AnythingLLMDesktop.exe是官方打包的Windows桌面应用,集成了Node.js、Electron及所有依赖,简化了部署流程。
部署步骤
- 下载:
- 访问AnythingLLM Desktop,下载最新
AnythingLLMDesktop.exe
(约100-200MB)。
- 访问AnythingLLM Desktop,下载最新
- 安装:
- 双击.exe文件,按照向导安装(默认路径:
C:\Program Files\AnythingLLM
)。 - 若Windows Defender提示,选择“更多信息” > “仍要运行”(未签名应用常见提示)。
- 双击.exe文件,按照向导安装(默认路径:
- 运行:
- 通过桌面图标或开始菜单启动应用。
- 应用自动启动Web服务器(默认端口3001)。
- 在浏览器访问
http://localhost:3001
(本地)或http://<server-ip>:3001
(远程)。
- 配置存储:
- 在应用设置中指定数据存储路径(如
C:\AnythingLLMData\desktop
)。
- 在应用设置中指定数据存储路径(如
- 设置Ollama(免费AI模型):
- 从Ollama官网下载Windows版。
- 在PowerShell运行:
下载Llama3 8B模型(约4-5GB),存储于ollama pull llama3
C:\Users\<YourUser>\.ollama\models
。 - 验证:运行
ollama run llama3
,测试提示。 - 在AnythingLLM Web界面(Settings > LLM Provider)设置Ollama API为
http://localhost:11434
。
- 配置知识库:
- 创建工作空间(如“CustomerSupport”)。
- 上传FAQ或产品文档(PDF、TXT、Markdown)。
- 测试聊天功能,提问如“如何退货?”。
- 嵌入网站客服:
- 在Web界面(Settings > Embed Widget)生成JavaScript代码:
<script src="http://<server-ip>:3001/embed/chat.js"></script> <div id="anything-llm-chat" data-bot-id="your-bot-id"></div>
- 将代码添加到网站HTML(如
<body>
标签,或通过WordPress插件“Insert Headers and Footers”)。
- 在Web界面(Settings > Embed Widget)生成JavaScript代码:
- 防火墙配置:
- 开放3001和11434端口:
New-NetFirewallRule -Name "AnythingLLM-Desktop" -DisplayName "Allow AnythingLLM Desktop" -Protocol TCP -LocalPort 3001 -Action Allow New-NetFirewallRule -Name "Ollama-Desktop" -DisplayName "Allow Ollama Desktop" -Protocol TCP -LocalPort 11434 -Action Allow
- 开放3001和11434端口:
注意事项
- 优势:快速部署(约5分钟),无需安装Node.js或Git,适合测试或小型网站。
- 局限性:定制性较低(GUI配置),内存占用高(约1-2GB,因Electron),虚拟化环境(如Hyper-V)可能有兼容性问题(参考GitHub Issue #752)。
- 更新:通过官网下载新.exe或使用应用内更新功能。
方法二:Node.js手动部署
手动部署通过克隆AnythingLLM GitHub仓库并用Node.js运行,提供更高灵活性和生产环境稳定性。
部署步骤
- 安装依赖:
- 克隆仓库:
- 创建目录(如
D:\AnythingLLM\node
):mkdir D:\AnythingLLM\node cd D:\AnythingLLM\node git clone https://github.com/Mintplex-Labs/anything-llm.git cd anything-llm
- 创建目录(如
- 安装依赖:
- 运行:
yarn setup
,安装frontend、server和collector依赖。 - 若报错,清理缓存:
yarn cache clean
,或使用国内镜像:yarn config set registry https://registry.npmmirror.com
- 运行:
- 配置环境:
- 复制环境文件:
copy server\.env.example server\.env
。 - 编辑
server\.env
(如用Notepad++):STORAGE_DIR="D:\AnythingLLM\node\data" PORT=3002 # 避免与.exe冲突 LLM_PROVIDER=ollama OLLAMA_BASE_URL=http://localhost:11435 NODE_ENV=production
- 确保存储目录存在且有写权限。
- 复制环境文件:
- 设置数据库(Prisma):
- 进入server目录:
cd server
。 - 运行:
默认使用SQLite,可选配置MySQL。npx prisma generate --schema=./prisma/schema.prisma npx prisma migrate deploy --schema=./prisma/schema.prisma
- 进入server目录:
- 构建前端:
- 进入frontend目录:
cd frontend
。 - 运行:
yarn build
。 - 复制:
copy dist\* server\public /s
。
- 进入frontend目录:
- 运行服务:
- Server:
cd server && set NODE_ENV=production && node index.js
。 - Collector:
cd collector && set NODE_ENV=production && node index.js
。 - 访问Web界面:
http://<server-ip>:3002
。
- Server:
- 设置Ollama:
- 复制Ollama安装目录(如
C:\Program Files\Ollama
到C:\Program Files\Ollama2
)。 - 设置不同端口:
set OLLAMA_HOST=127.0.0.1:11435 && ollama.exe serve
。 - 拉取模型:
set OLLAMA_HOST=127.0.0.1:11435 && ollama pull llama3
。 - 在AnythingLLM Web界面设置Ollama API为
http://localhost:11435
。
- 复制Ollama安装目录(如
- 进程管理(PM2):
- 安装PM2:
npm install -g pm2
。 - 创建
ecosystem.config.js
:module.exports = { apps: [ { name: 'node-llm-server', script: 'server/index.js', cwd: 'server', env: { NODE_ENV: 'production' } }, { name: 'node-llm-collector', script: 'collector/index.js', cwd: 'collector', env: { NODE_ENV: 'production' } } ] };
- 运行:
pm2 start ecosystem.config.js && pm2 save
。
- 安装PM2:
- 防火墙配置:
New-NetFirewallRule -Name "AnythingLLM-Node" -DisplayName "Allow AnythingLLM Node" -Protocol TCP -LocalPort 3002 -Action Allow New-NetFirewallRule -Name "Ollama-Node" -DisplayName "Allow Ollama Node" -Protocol TCP -LocalPort 11435 -Action Allow
- 嵌入网站客服:
- 在
http://<server-ip>:3002
生成聊天小部件代码,嵌入网站HTML。
- 在
注意事项
- 优势:稳定性高,可定制源码,适合高并发生产环境。
- 局限性:初始配置复杂(约15-30分钟),需技术基础。
- 更新:运行
git pull origin main && yarn setup
并重启PM2。
同时运行两种方式
可以在同一Windows服务器上同时运行.exe和Node.js部署,但需隔离配置:
- 端口:
- 桌面版:3001(AnythingLLM),11434(Ollama)。
- Node.js版:3002(AnythingLLM),11435(Ollama)。
- 存储:
- 桌面版:
C:\AnythingLLMData\desktop
。 - Node.js版:
D:\AnythingLLM\node\data
。
- 桌面版:
- Ollama实例:
- 运行两个Ollama实例(11434和11435端口)。
- 确保16GB+内存支持两个Llama3模型(各4-5GB)。
- 用途:
- 桌面版用于测试新知识库或模型。
- Node.js版用于生产客服,支持高流量。
- 示例:一个实例处理FAQ,另一个处理技术支持。
- 嵌入网站:
- 两个实例生成类似JS小部件,可嵌入网站不同部分:
<!-- 桌面版客服 --> <script src="http://<server-ip>:3001/embed/chat.js"></script> <div id="desktop-chat" data-bot-id="desktop-bot-id"></div> <!-- Node.js版客服 --> <script src="http://<server-ip>:3002/embed/chat.js"></script> <div id="node-chat" data-bot-id="node-bot-id"></div>
- 两个实例生成类似JS小部件,可嵌入网站不同部分:
两种方式对比
方面 | AnythingLLMDesktop.exe | Node.js手动部署 |
---|---|---|
部署难度 | 简单:安装运行(约5分钟)。 | 复杂:需配置Node.js、Yarn、Git(约15-30分钟)。 |
Web访问 | 自动启动Web服务器(3001端口)。 | 手动启动,端口可自定义(如3002)。 |
客服功能 | 一致:支持RAG、知识库、聊天机器人。 | 一致:功能无差异。 |
资源占用 | 较高(1-2GB,因Electron)。 | 较低(500MB-1GB,不含模型)。 |
定制性 | 较低:GUI配置,无源码访问。 | 较高:可编辑源码、调整配置。 |
生产环境 | 适合测试/小型网站。 | 适合高流量生产环境,配合PM2/Nginx。 |
稳定性 | 虚拟化环境可能有兼容性问题。 | 更稳定,推荐WSL2。 |
资源需求
- 最低配置:8GB内存,4核CPU,10GB存储(Llama3 8B)。
- 推荐配置:16GB内存,NVIDIA GPU(4GB+显存),20GB存储(支持双实例)。
- 防火墙:开放3001/3002(AnythingLLM)和11434/11435(Ollama)端口。
常见问题与解决
- 桌面版:
- 无法启动:检查日志(
%APPDATA%\AnythingLLM\logs
),以管理员运行或禁用Defender。 - 虚拟机问题:在Hyper-V/VMware中启用VT-x/AMD-V。
- 无法启动:检查日志(
- Node.js版:
- 依赖错误:清理Yarn缓存(
yarn cache clean
)或使用国内镜像。 - 端口冲突:检查
netstat -ano | findstr "3001 3002 11434 11435"
。
- 依赖错误:清理Yarn缓存(
- Ollama:
- 无响应:验证
curl http://localhost:11434/api/tags
或curl http://localhost:11435/api/tags
。 - 性能优化:低内存用Llama3 8B,高内存用13B。
- 无响应:验证
- 聊天机器人问题:
- 小部件不显示:检查网站控制台(F12),确保JS路径正确。
- 回答不准确:优化知识库文档或调整System Prompt。
优化网站客服功能
- 知识库:
- 上传结构化FAQ(如“退货政策.txt”)。
- 测试常见问题(如“退货流程是什么?”)。
- 聊天机器人定制:
- 编辑System Prompt(如“你是一个友好的客服机器人,回答简洁专业”)。
- 支持多语言FAQ,Llama3自动适配。
- 生产环境:
- 配置HTTPS(Let’s Encrypt + IIS/Nginx)。
- 使用PM2(Node.js)或任务计划程序(.exe)实现开机自启。
- 监控:
- 查看日志(.exe:
%APPDATA%\AnythingLLM\logs
;Node.js:pm2 logs
)。 - 使用任务管理器监控CPU/内存使用。
- 查看日志(.exe:
是否可同时运行两种方式?
可以,但需隔离配置:
- 端口:避免冲突(3001/11434 vs. 3002/11435)。
- 存储:使用不同路径防止数据覆盖。
- 资源:16GB+内存支持双Llama3实例。
- 用途:测试(.exe)与生产(Node.js)分离,或不同客服场景。
推荐策略
- 小型网站/测试:使用.exe,快速简单。
- 生产/高流量:使用Node.js,配合PM2和WSL2,稳定性高。
- 同时运行:仅在需要分离测试/生产或多客服场景,且资源充足时使用。
- 后续步骤:
- 确认服务器配置(内存、CPU、GPU)和网站规模,选择最佳方式。
- 生产环境配置HTTPS并监控性能。
- 遇到问题,提供错误日志或服务器详情以获得针对性帮助。
通过本指南,你可以在Windows服务器上部署AnythingLLM,构建一个功能强大、成本免费的网站客服系统,充分利用其AI能力,同时保持数据隐私和控制权。