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 访问服务
相关推荐
Narrastory2 分钟前
拆解指数加权平均:5 分钟看懂机器学习的 “数据平滑神器”
人工智能·机器学习
SelectDB5 分钟前
慢 SQL 诊断准确率 99.99%,天翼云基于 Apache Doris MCP 的 AI 智能运维实践
数据库·人工智能·apache
王中阳Go8 分钟前
05 Go Eino AI应用开发实战 | Docker 部署指南
人工智能·后端·go
腾讯云开发者13 分钟前
当10年架构师拿起AI:不是写不动了,是写得太快了
人工智能
小马过河R24 分钟前
RAG检索增强生成:通过重排序提升AI信息检索精准度
人工智能·语言模型
不惑_24 分钟前
通俗理解卷积神经网络
人工智能·windows·python·深度学习·机器学习
rayufo43 分钟前
自定义数据在深度学习中的应用方法
人工智能·深度学习
梦帮科技1 小时前
量子计算+AI:下一代智能的终极形态?(第一部分)
人工智能·python·神经网络·深度优先·量子计算·模拟退火算法
山海青风1 小时前
藏文TTS介绍:6 MMS 项目的多语言 TTS
人工智能·python·神经网络·音视频
人工智能培训1 小时前
DNN案例一步步构建深层神经网络(3)
人工智能·深度学习·神经网络·大模型·dnn·具身智能·智能体