Windows 中使用 docker 部署 AnythingLLM

Windows 中使用 docker 部署 AnythingLLM

  • 需求:为了满足多人共享本地知识库,同时便于统一管理知识库,所以需要一个可以多人共享的客户端,最好是 web 应用。
  • 准备:查阅资料发现 AnythingLLM 可以满足要求,但是需要 Linux 系统的 docker 部署,由于服务器和本地电脑都是 windows 系统,所以尝试在 WSL 中部署。
  • 结论:通过实验证明 Windows server2019 无法部署,查阅资料显示,Windows Server2019 只支持 WSL1,无法支持 WSL2,而 WSL1 中的 Linux 内核是不完整的,不能支持全部功能;重新尝试 Windows 10 的 WSL,顺利完成部署。

参考资料

准备 WSL 环境安装 Linux 发行版

  1. 开启 WSL

    bash 复制代码
    Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
  2. 下载 Linux 发行版

    bash 复制代码
    Invoke-WebRequest -Uri https://aka.ms/wslubuntu2004 -OutFile Ubuntu.appx -UseBasicParsing
  3. 修改安装包的扩展名并启动安装文件

    bash 复制代码
    Rename-Item ./Ubuntu-1804.appx ./Ubuntu.zip
    Expand-Archive ./Ubuntu.zip ./Ubuntu
    ./Ubuntu/ubuntu1804.exe

安装 Docker

  1. 使用镜像下载安装,详 developer.aliyun.com/mirror/dock...

    bash 复制代码
    # step 1: 安装必要的一些系统工具
    sudo apt-get update
    sudo apt-get install ca-certificates curl gnupg
    
    # step 2: 信任 Docker 的 GPG 公钥
    sudo install -m 0755 -d /etc/apt/keyrings
    curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
    sudo chmod a+r /etc/apt/keyrings/docker.gpg
    
    # Step 3: 写入软件源信息
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
      "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
     
    # Step 4: 安装Docker
    sudo apt-get update
    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
    # 安装指定版本的Docker-CE:
    # Step 1: 查找Docker-CE的版本:
    # apt-cache madison docker-ce
    #   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    #   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
    # Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
    # sudo apt-get -y install docker-ce=[VERSION]
  2. 启动服务

    bash 复制代码
    # 查看服务
    ps -ef|grep
    # 当前用户添加到用户组
    sudo usermod -aG docker $USER
    # 启动服务(sysvinit), WSL 中可能无法使用 systemctl 命令
    sudo service docker start
    # 查看服务运行状态
    sudo service docker status
    # 停止服务
    sudo service docker stop

安装 anythingllm

  1. 如果有私有镜像库或畅通的网络环境可直接拉取,否则需要手动下载镜像文件,推荐一个免费好用的方案 github.com/wukongdaily...

  2. 安装 npm 和 yarn

  3. 加载镜像文件

    bash 复制代码
    sudo docker load -i mintplexlabs_anythingllm_latest-amd64.tar.gz
  4. 参考官方文档编写启动脚本

    bash 复制代码
    cat >run_anything_llm_docker.sh << EOF
    export STORAGE_LOCATION=$HOME/anythingllm && \
    mkdir -p $STORAGE_LOCATION && \
    touch "$STORAGE_LOCATION/.env" && \
    sudo docker run -d -p 3001:3001 \
    --cap-add SYS_ADMIN \
    --user root \
    -v ${STORAGE_LOCATION}:/app/server/storage \
    -v ${STORAGE_LOCATION}/.env:/app/server/.env \
    -e STORAGE_DIR="/app/server/storage" \
    mintplexlabs/anythingllm
    EOF
  5. 特殊说明

    bash 复制代码
    # 启动配置 /.env:/app/server/.env 文件权限不够,所以相对于官方文档增加 root 用户启动
    --user root
    # 如果 anythingllm 文件夹权限不够,需要修改权限
    sudo chmod 777 anythingllm
  6. 启动容器

    bash 复制代码
    sh run_anything_llm_docker.sh
    # 检查容器状态,显示 healthy 则容器可访问
    sudo docker ps
    # 浏览器访问,如果无法访,回到 Windows 系统打开 WSL Settings 检查网络设置
    127.0.0.1:3001

提供给局域网用户访问

  1. 配置 Windows 防火墙
  • 打开"控制面板" > "系统和安全" > "Windows Defender 防火墙">"高级设置">"入站规则"
  • 添加一条新的规则,使得 3001 端口可通过,选择 TCP
  1. 在 Windows 上以管理员身份打开 PowerShell

    bash 复制代码
    #配置端口转发
    netsh interface portproxy add v4tov4 listenport=3001 listenaddress=0.0.0.0 connectport=3001 connectaddress=127.0.0.1
    # 检查端口转发是否生效
    netsh interface portproxy show all
    # 查询本机的局域网 ip (如 192.168.0.100)
    ipconfig
    # 其他设备通过 http://192.168.0.100:3001 访问服务
相关推荐
Dawson Zhu9 分钟前
工业世界模型——基于AI Agent+数学仿真架构
人工智能·架构·agi
冬奇Lab10 分钟前
开源项目第183期:Ontology Playground — 微软出品的本体论可视化学习工具,零后端、浏览器直接运行
人工智能·microsoft·开源
Wang's Blog13 分钟前
AI Agent白手起家52: 从零搭建钉钉智能助手——资源准备与核心架构实现
人工智能·架构·钉钉
冬奇Lab17 分钟前
代码库知识库系列(13):评测——怎么知道知识库够不够好
人工智能
字节跳动视频云技术团队24 分钟前
把 AI 视频的钱花在刀刃上,不是每一刀上
人工智能·音视频开发
jufeng130734 分钟前
【系列:手搓自主 AI Agent:Hermes 架构原理剖析 · 第 1 篇】
人工智能·python·架构·agent
制造业的搬运工37 分钟前
智能窗帘PCB低功耗设计方案:架构要点与设计建议
人工智能·科技·架构·制造·pcb工艺
意图共鸣41 分钟前
意图共鸣科技8月10日正式发布《AI协作记忆系统 · 认知架构白皮书》
人工智能·科技·microsoft
牧羊人.33344 分钟前
计算机视觉基础|第2章 OpenCV图像基础操作(读写、窗口、像素操作)
人工智能·opencv·计算机视觉
avi91111 小时前
[AI教做人]AI平台做2项目;一个3D模型展示,另一个框架多人
javascript·人工智能·ai·3d模型·3d引擎·顶点和法线