Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行
文章目录
- Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型
- 1. 安装 Docker Desktop
- 2. 使用Docker拉取Anythingllm镜像
- 2. 设置 `STORAGE_LOCATION` 路径
- 3. 创建存储目录和 `.env` 文件
- `.env` 文件的作用
- 关键配置项
- 4. 运行 Docker 命令
- `docker run` 命令详细解析
- 各部分的含义
- 5. 访问应用
- 6. 配置环境
- 聊天设置
- 向量数据库
- 嵌入首选项
- 添加知识库
- 成员管理
- 局域网内其他用户访问
- 7. 总结
Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型
我习惯在CMD中运行命令,我看一些教程使用Docker安装Anythingllm时在Power Shell中。
该教程在 Windows CMD 中运行这个 docker 命令,以下是从头到尾的步骤,包括如何在 CMD 中正确设置和运行该命令。
电脑配置:Win11+wsl2+4070tis+内存48G
大模型:ollama-deepseek-r1:14b
所用软件:ollama+docker+anythingllm
4070tis使用anythingllm,在deepseek-r1:14b下的生成tocken速度大概是:52toc/s

备注:ollama需要自己首先安装,去官网下载,然后拉取对应大模型即可。
1. 安装 Docker Desktop
确保你已经安装并启动了 Docker Desktop。如果还没有安装,可以从 Docker 官网 下载并安装。
Docker官方网址:https://www.docker.com/products/docker-desktop/
记得开启电脑wsl2,如果没有安装过wsl,可以看如下:
微软官方教程:https://learn.microsoft.com/en-us/windows/wsl/setup/environment
2. 使用Docker拉取Anythingllm镜像
拉取镜像命令如下:
docker pull mintplexlabs/anythingllm
之后查看是否有该镜像,使用命令:
docker images

可以看到电脑中存在Anythingllm这个镜像了
2. 设置 STORAGE_LOCATION 路径
在 CMD 中,你可以使用 set 命令来设置环境变量。假设你希望将 STORAGE_LOCATION 设置为 Windows 的文档目录,可以按以下步骤操作,逐行运行如下命令,如下图,这三行可以从如下面代码行中复制。

-
打开 CMD(管理员模式)。
-
设置存储目录(你可以自定义这个路径,下面是一个示例):
第一行代码set STORAGE_LOCATION=%USERPROFILE%\Documents\anythingllm
3. 创建存储目录和 .env 文件
确保存储目录存在,并且 .env 文件已经创建。使用以下命令来确保这些文件存在:
-
创建存储目录(如果目录不存在):
第二行代码if not exist "%STORAGE_LOCATION%" mkdir "%STORAGE_LOCATION%" -
创建
.env文件(如果文件不存在):
第三行代码if not exist "%STORAGE_LOCATION%\.env" echo. > "%STORAGE_LOCATION%\.env"
此时会在电脑文档的文件夹下,存在一个anythingllm文件夹,如下所示:

该文件夹下存在一个.env文件,存放一些配置。
.env 文件的作用
.env 文件是用于存储容器配置的环境文件,通常包含敏感信息和应用的配置参数。例如,配置大语言模型(LLM)、API 密钥、数据库连接等。容器运行时,它会读取 .env 文件并使用其中的配置信息。
关键配置项
在 .env 文件中,常见的配置项包括:
SERVER_PORT:指定服务器运行的端口。JWT_SECRET:用于生成和验证 JWT(JSON Web Token)的密钥。STORAGE_DIR:指定存储数据的路径。LLM_PROVIDER:配置大语言模型提供者。OLLAMA_BASE_PATH:配置 Ollama 服务的基础 URL 地址。OPEN_AI_KEY:用于访问 OpenAI API 的密钥。
.env 文件中配置的内容会根据你的需求和使用的服务不同而有所变化。
4. 运行 Docker 命令
在 CMD 中,你可以使用单行命令运行 Docker。这里是调整后的命令,适合在 Windows CMD 中运行:
docker run -d --name anythingllm --add-host=host.docker.internal:host-gateway --env STORAGE_DIR=/app/server/storage --health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1" --health-interval 60s --health-start-period 60s --health-timeout 10s -p 3001:3001/tcp --restart=always --user anythingllm -v %STORAGE_LOCATION%:/app/server/storage -v %STORAGE_LOCATION%\.env:/app/server/.env -w /app mintplexlabs/anythingllm
运行之后如下图,会启动一个容器,用一大串字母表示,该字母是Docker 为该容器分配一个唯一的 ID,这个 ID 主要用于在 Docker 系统中管理容器。你可以用这个 ID 来执行不同的 Docker 命令,比如停止容器、查看容器日志、查看容器状态等。

查看当前所有的容器,命令如下:
docker ps

可以看到我们已经成功启动一个容器
docker run 命令详细解析
给出的命令用于启动 AnythingLLM Docker 容器,以下是对该命令中每个字段的详细解释:
各部分的含义
docker run -d
docker run命令用于启动一个新的容器,-d表示容器将以“分离模式”(后台运行)启动。这样,命令执行完后,你可以继续在终端中操作。--name anythingllm
给容器指定一个名字anythingllm。这个名字用来唯一标识容器,可以方便地进行容器管理(例如,停止、重启、删除容器等)。--add-host=host.docker.internal:host-gateway
添加一个额外的主机名解析。在 Docker 容器内,通过host.docker.internal可以访问宿主机的网络接口,这对于需要连接到宿主机的服务(比如本地运行的ollama服务)非常有用。host-gateway是指容器访问宿主机的网关地址。--env STORAGE_DIR=/app/server/storage
设置容器内部的环境变量。STORAGE_DIR=/app/server/storage会将容器内部的存储目录设置为/app/server/storage。该目录用于存储 AnythingLLM 的数据,如模型、日志等。--health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1"
设置容器的健康检查命令。docker-healthcheck.sh是一个用于检查容器健康状态的脚本。它会定期运行,确保容器的正常工作。如果健康检查失败(即返回非零退出状态),则 Docker 会认为容器不可用。--health-interval 60s
设置健康检查命令的执行间隔为 60 秒。即每 60 秒 Docker 会运行一次健康检查命令。--health-start-period 60s
设置容器启动后的健康检查延迟时间。即容器启动后,Docker 会等待 60 秒再开始执行健康检查。--health-timeout 10s
设置健康检查命令的超时时间为 10 秒。如果健康检查命令在 10 秒内没有返回结果,则认为健康检查失败。-p 3001:3001/tcp
映射容器内部的端口3001到宿主机的端口3001。3001是 AnythingLLM Web 界面的默认端口。在启动容器后,你可以通过访问http://localhost:3001来访问 AnythingLLM。--restart=always
设置容器的重启策略。always表示当容器停止运行时,Docker 会自动重启该容器,确保容器始终在后台运行。--user anythingllm
以指定的用户anythingllm来运行容器内的程序。此选项确保容器内的进程以指定的用户身份执行,而不是使用默认的 root 用户。-v %STORAGE_LOCATION%:/app/server/storage
将宿主机的目录%STORAGE_LOCATION%挂载到容器内部的/app/server/storage目录。%STORAGE_LOCATION%是之前在 CMD 中设置的环境变量,指向容器存储数据的路径。这样,容器内的数据会存储到宿主机的指定路径上,容器重启后数据仍然保留。-v %STORAGE_LOCATION%\.env:/app/server/.env
将宿主机的.env文件(位于%STORAGE_LOCATION%路径下)挂载到容器内的/app/server/.env文件。.env文件通常用于存储配置参数,如 API 密钥、数据库配置等。这样,容器启动时可以加载这些配置。-w /app
设置容器内的工作目录为/app。这意味着容器内的程序将以这个目录作为默认工作目录。mintplexlabs/anythingllm
指定要运行的 Docker 镜像,这里是mintplexlabs/anythingllm,它包含了 AnythingLLM 的所有必要文件和配置。
这条 Docker 命令启动了一个 AnythingLLM 容器,并通过挂载宿主机的存储目录和 .env 文件,使得容器能够持续存储数据并加载配置。容器以后台运行,并提供 Web 服务,可以通过 http://localhost:3001 访问应用。
5. 访问应用
成功运行该命令后,你可以通过浏览器访问 http://localhost:3001 来进行初始配置。
http://localhost:3001

选择ollama,然后选择对应的大模型

选择team,可以设置多用户登录

6. 配置环境
访问 http://localhost:3001 后,进行相关配置,如配置大语言模型(LLM)、向量数据库等。根据需要更新 .env 文件中的配置参数,如 SERVER_PORT、OPEN_AI_KEY 等。
聊天设置
新建一个空间区,然后聊天设置改为对应的模型,到最下面,进行确认

向量数据库
如果默认的效果不好,向量数据库可以选择 精度优化

嵌入首选项
默认的也可以,如果默认的解析知识库有问题,也可以使用ollama提供的nomic-embed-text

添加知识库
点击工作区的上传按钮:

打开如下界面,然后上传对应的文档

移动到工作区,然后进行保存和嵌入

成员管理
设置里面,找到管理员-用户,然后在右上角添加用户

可以为用户选择不同的角色。不同角色持有的权限是不同的
局域网内其他用户访问
首先查看部署本机的IPv4地址,例如1.1.1.1
局域网内其他用户浏览器访问:1.1.1.1:3001即可
如下图所示

这应该是几个常用的内容,其他东西,请自行研究
7. 总结
在 Windows CMD 中运行 Docker 命令的步骤如下:
- 设置环境变量
STORAGE_LOCATION,并确保该路径存在。 - 创建必要的存储目录和
.env文件。 - 使用单行命令在 CMD 中运行 Docker 容器。
- 通过浏览器访问
http://localhost:3001进行初始化配置。
相关文章:
Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行
文章目录 Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型1. 安装 Docker Desktop2. 使用Docker拉取Anythingllm镜像2. 设置 STORAGE_LOCATION 路径3. 创建存储目录和 .env 文件.env 文件的作用关键配置项 4. 运行 Docker 命令docker r…...
Unity使用iTextSharp导出PDF-04图形
坐标系 pdf文档页面的原点(0,0)在左下角,向上为y,向右为x。 文档的PageSize可获取页面的宽高数值 单位:像素 绘制矢量图形 使用PdfContentByte类进行绘制,注意文档打开后才有此对象的实例。 绘制方法 …...
[SAP ABAP] OO ALV报表练习1
销售订单明细查询报表 业务目的:根据选择屏幕的筛选条件,使用 ALV 报表,显示销售订单详情 效果展示 用户的输入条件界面 用户的查询结果界面 涉及的主要功能点: 1.当在销售订单明细查询页面取不到任何数据时,在选择…...
安卓基础(第一集)
SharedPreferences(本地存储简单数据) 在 Android 中,SharedPreferences 用于存储小型数据。 (1)存储数据 // 获取 SharedPreferences 对象 SharedPreferences sharedPreferences getSharedPreferences("MyPre…...
数据库高安全—数据保护:数据动态脱敏
书接上文数据库高安全—审计追踪:传统审计&统一审计,从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读,本篇将从数据动态脱敏方面对高斯数据库的数据保护技术进行解读。 5.1 数据动态脱敏 数据脱敏,顾名思义就…...
Datawhale 数学建模导论二 2025年2月
第6章 数据处理与拟合模型 本章主要涉及到的知识点有: 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论,如果对这部分内容不熟悉,可以参考相关概率论与数理统计的…...
ArcGIS Enterprise 与 ArcGIS Online 的关系
ArcGIS Enterprise 和 ArcGIS Online 是 Esri 提供的两款核心产品,它们在功能、部署方式和使用场景上存在显著差异,但同时也有一定的联系和互补性。以下是关于这两款产品的详细关系说明: 1. 产品定位与功能 ArcGIS Enterprise 是一款企业级解决方案,支持在组织的基础设施上…...
ASP.NET Core SignalR实践指南
Hub类的生命周期是瞬态的,每次调用集线器的时候都会创建一个新的Hub类实例,因此不要在Hub类中通过属性、成员变量等方式保存状态。如果服务器的压力比较大,建议把ASP.NET Core程序和SignalR服务器端部署到不同服务器上,以免它们互…...
【力扣 - 简单题】88. 合并两个有序数组
题目:88. 合并两个有序数组 - 力扣(LeetCode) 解题: class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for (int i m; i < n m; i ){nums1[i] nums2[i -…...
【密评】 | 商用密码应用安全性评估从业人员考核题库(23)
在GM/T0048《智能密码钥匙密码检测规范》中,产品的对称算法性能应满足哪个标准中的要求()。 A.GM/T 0016《智能密码钥匙密码应用接口规范》 B.GM/T 0017《智能密码钥匙密码应用接口数据格式规范》 C.GM/T 0027《智能密码钥匙技术规范》 D.GM/T 0028《密码模块安全技术要求》…...
记录 | WPF基础学习MVVM例子讲解1
目录 前言一、NotificationObject与数据属性创建个类,声明NotificationObject 二、DelegateCommand与命令属性三、View与ViewModel的交互(难点)在ViewModel文件下创建MainWindowViewModel数据和方法绑定资源指定 代码下载四、优势体现代码下载…...
PyTorch 中 `torch.cuda.amp` 相关警告的解决方法
在最近的写代码过程中,遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…...
实验7 路由器之间IPsec VPN配置
实验7 路由器之间IPsec VPN配置 1.实验目的 通过在两台路由器之间配置IPsec VPN连接,掌握IPsec VPN配置方法,加深对IPsec协议的理解。 2.实验内容 (1)按照实验拓扑搭建实验环境。 (2)在路由器R1和R4配置IP…...
Unity中快速制作2D沙雕动画:流程编
Unity中快速制作2D沙雕动画(搞笑/无厘头风格),通过以下方案实现低成本、高成效的开发流程,结合夸张的动作、滑稽的物理效果和魔性音效: 1. 角色与素材设计 核心原则:丑萌即正义,越怪越好&#…...
小白零基础如何搭建CNN
1.卷积层 在PyTorch中针对卷积操作的对象和使用的场景不同,如有1维卷积、2维卷积、 3维卷积与转置卷积(可以简单理解为卷积操作的逆操作),但它们的使用方法比较相似,都可以从torch.nn模块中调用,需要调用的…...
【Java八股文】01-Java基础面试篇
【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象,什么是封装继承多态?多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…...
k8s部署logstash
1. 编写logstash.yaml配置文件 --- apiVersion: v1 kind: Service metadata:name: logstash spec:type: ClusterIPclusterIP: Noneports:- name: logstash-tcpport: 5000targetPort: 5000- name: logstash-beatsport: 5044targetPort: 5044- name: logstash-apiport: 9600targ…...
Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明
项目场景: 有时候加载的地图服务白色区域会露底,导致在三维场景时,露出了三维网格,影响效果,自此,我们需要将三维场景的底图设为白色或透明。 问题描述 如图所示: 解决方案: 提示…...
《qt open3d网格拉普拉斯平滑》
qt open3d网格拉普拉斯平滑 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionFilterLaplacian_triggered();void MainWindow::on_actionFil...
怎么选择免费的SEO排名工具
随着2025年互联网的迅猛发展,越来越多的企业意识到,拥有一个高排名的网站对于品牌曝光和吸引客户至关重要。尤其是通过SEO(搜索引擎优化),可以提高网站在搜索引擎中的排名,进而带来更多的自然流量ÿ…...
缓存技术介绍
缓存技术是一种用于提高数据访问速度的技术,通过在快速存储介质(如内存)中保存频繁访问的数据,从而减少对较慢存储介质(如硬盘)的访问次数。缓存可以显著提高系统性能,尤其是在处理大量数据或进…...
SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)
SSH隧道Nginx:内网资源访问的绿色通道 问题背景 模拟生产环境,使用两层Nginx做反向代理,请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现,重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…...
Spring 项目接入 DeepSeek,分享两种超简单的方式!
⭐自荐一个非常不错的开源 Java 面试指南:JavaGuide (Github 收获148k Star)。这是我在大三开始准备秋招面试的时候创建的,目前已经持续维护 6 年多了,累计提交了 5600 commit ,共有 550 多位贡献者共同参与…...
【c++】四种类型转换形式
【c】四种类型转换形式 编译时: static_cast(静态转换) const_cast(去常性转换) reinterpret_cast(重新解释转换,直接转换地址) 运行时: dynamic_cast(动态转换,运行时类…...
Unity 制作2D动画必要准备:启动篇
制作Unity 2D动画需要准备以下内容: 美术素材准备 选择或绘制符合需求的2D精灵图(如像素风格角色、场景元素)确保素材包含完整动画序列帧(如行走/攻击/跳跃等动作分解)注意素材尺寸统一性,建议采用网格化排…...
半小时在本地部署DeepSeek的Janus Pro,进行图片分析和文生图
半小时在本地部署DeepSeek的Janus Pro,进行图片分析和文生图 下载Janus Pro源代码下载模型文件创建Python虚拟环境安装依赖包Janus Pro测试运行程序图片分析测试文生图测试使用中文提示词使用英文提示词 测试印象: 整体模型体积较小,个人可以…...
急停信号的含义
前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是确认设备按钮的急停…...
设置mysql的主从复制模式
mysql设置主从复制模式似乎很容易,关键在于1)主库启用二进制日志,2)从库将主库设为主库。另外,主从复制,复制些什么?从我现在获得的还很少的经验来看,复制的内容有表,用户…...
三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab)
三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab) 完整代码私信回复三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab) 一、引言 1、研究背景和意义 在现代数据科学领域,时间序列…...
东方财富Android面试题及参考答案
接口和抽象类的区别是什么? 定义与语法 接口:接口是一种抽象类型,它只包含方法签名、常量定义,方法默认是public、abstract的,常量默认是public、static、final的。接口不能包含实例变量和普通方法的实现。抽象类:抽象类是一种不能被实例化的类,它可以包含抽象方法和具体…...
