AnythingLLM 是一个全栈 AI 应用,让你能快速搭建一个私有的、支持多用户的“ChatGPT”,并可以和自己的文档聊天。官方推荐使用 Docker 方式部署,这是最快、最稳定,且方便后续更新的方法。

下面是具体的部署步骤。

📋 部署准备

开始前,请确保你的环境满足以下要求:

  • Docker:已安装并正在运行。
  • 硬件与网络:建议至少 2GB 内存。如果打算在Linux上使用host.docker.internal来访问宿主机服务,需要 Docker 20.10+ 版本,并添加 --add-host=host.docker.internal:host-gateway 参数。

🚀 开始部署

第一步:拉取镜像

打开终端,拉取 AnythingLLM 的最新镜像(支持 amd64arm64 架构):

1
docker pull mintplexlabs/anythingllm:latest

第二步:运行容器

(推荐)使用单个命令快速启动

这是文档中最推荐的启动方式,能确保你的数据持久化保存。在终端中执行以下命令(Linux/macOS):

1
2
3
4
5
6
7
8
9
10
export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
--name anythingllm \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm:latest

命令说明

  • -d: 后台运行容器。
  • -p 3001:3001: 将容器端口映射到主机端口3001。
  • --cap-add SYS_ADMIN: 为网页爬取功能提供必要权限。
  • -v ${STORAGE_LOCATION}...: 这是最关键的一步,将容器内的数据目录挂载到宿主机上,确保数据持久化,不会随容器删除而丢失。
  • -e STORAGE_DIR=...: 设置容器内的存储路径。

第三步:访问应用

打开浏览器,访问 http://localhost:3001,开始配置你的 AnythingLLM。

⚠️ 常见问题与解决

1. 容器退出,日志显示 Illegal instruction (core dumped)
这通常是因为你的CPU不支持AVX2指令集,多见于较老的硬件或某些云虚拟机。你需要检查你的CPU是否支持:

1
2
# 检查 /proc/cpuinfo 是否包含 avx2 标志
grep avx2 /proc/cpuinfo

如果没有该标志,你可能需要更换硬件或调整虚拟机CPU设置。

2. 容器退出,日志显示 unable to open database file
这意味着容器没有权限写入挂载的文件夹。最常见的场景是将数据目录设置在了需要root权限的路径(如 /mnt, /data 等)。因为容器内应用以 UID/GID 1000 的用户运行,所以无法写入这些root拥有的目录。

解决方案:将你的数据目录所有权赋予UID/GID 1000。

1
2
# 假设你的 STORAGE_LOCATION 是 /opt/anythingllm
sudo chown -R 1000:1000 /opt/anythingllm

注意chmod -R 777 虽然也能解决,但会带来严重的安全风险,绝对不推荐使用。

🔗 连接其他服务(如 Ollama)

如果想让 AnythingLLM 连接运行在宿主机上的其他服务(如 Ollama),需要注意网络配置:

  • 在 Linux 上:启动容器时需添加 --add-host=host.docker.internal:host-gateway 参数,并在 AnythingLLM 中配置服务地址为 http://host.docker.internal:11434
  • 在 Windows/macOS 上host.docker.internal 通常自动解析,可直接使用。

🗂️ 部署方式对比

方式 适用场景 关键点
Docker (推荐) 生产环境、多用户、长期使用 注意数据卷挂载和文件权限。
源码运行 开发、二次定制 需要 Node.js 和 yarn 环境,步骤较繁琐。

部署完成后,你可以通过 Web 界面配置 LLM 和向量数据库,开始创建专属的知识库应用了。如果想了解更详细的配置,可以告诉我你打算使用的 LLM 是云端(如 OpenAI)还是本地(如 Ollama),我可以针对性地说明后续的设置方法。