【信创】银河麒麟V10(ARM64,无GPU纯CPU)内网隔离离线部署Deepseek+openWebUI完整方案

信创银河麒麟V10(ARM64,无GPU纯CPU)内网隔离离线部署Deepseek+openWebUI完整方案

  • 本实验在华为麒麟990(搭载统信UOS20桌面版)、飞腾D2000(该cpu大约2019年定型,搭载银河麒麟v10桌面版)平台上测试通过。飞腾FT2000+/64(该cpu大约2017年定型,没有硬件 FP16(half-precision)NEON 向量运算)实测ollama server无法运行。采购建议:使用较新款CPU

文章目录

环境:银河麒麟V10 飞腾/鲲鹏 aarch64,内网完全隔离、无外网

组件清单:

docker-26.0.2.tgz、docker-compose-linux-aarch64(作为docker cli插件,命令:docker compose)、ollama 0.33.3、deepseek-r1:1.5b、bge-small-zh-v1.5:q4_k_m、OpenWebUI v0.10.2

架构说明:宿主机二进制部署Ollama做CPU推理;Docker容器运行OpenWebUI;Ollama连接地址使用docker0网关[http://172.17.0.1:11434](http://172.17.0.1:11434),替代不稳定的host.docker.internal

存储规划:

  • /data/app/openwebui:宿主机绑定挂载,存放用户、对话记录、向量索引
  • openwebui_doc:Docker命名卷,独立存放知识库原始上传文档
  • WebUI自定义标题:信创本地大模型实验平台
    ⚠️ 重要前置:所有离线包必须在外网aarch64同架构机器提前准备,拷贝至内网服务器U盘;禁止使用x86_64包,会报exec格式错误。

一、外网准备离线资源(aarch64外网机器执行)

1. 基础软件包

  1. docker-26.0.2.tgz(aarch64静态二进制包)
  2. docker-compose-linux-aarch64(compose插件二进制)
  3. ollama-linux-aarch64 0.33.3

2. Ollama模型打包

复制代码
#外网aarch64机器拉取模型
ollama pull deepseek-r1:1.5b
ollama pull bge-small-zh-v1.5:q4_k_m

#校验模型
ollama list

#打包ollama模型目录
tar -zcvf ollama_models.tar.gz ~/.ollama/models

换句话说就是要迁移如下文件夹到内网机器上:

3. OpenWebUI镜像导出

复制代码
docker pull ghcr.io/open-webui/open-webui:v0.10.2
docker save ghcr.io/open-webui/open-webui:v0.10.2 -o openwebui_v0.10.2_aarch64.tar

需要拷贝到内网服务器的全部文件清单:

docker-26.0.2.tgz

docker-compose-linux-aarch64

ollama-linux-aarch64

ollama_models.tar.gz

openwebui_v0.10.2_aarch64.tar


二、内网银河麒麟V10部署Docker 26.0.2

上传 docker-26.0.2.tgz 到服务器 /opt

复制代码
# 假设文件我们拷贝到了/opt目录下
cd /opt
tar -zxvf docker-26.0.2.tgz
cp docker/* /usr/bin/

#创建docker systemd服务文件
cat > /etc/systemd/system/docker.service <<EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target

[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always

[Install]
WantedBy=multi-user.target
EOF

#重载systemd,启动并设置开机自启
systemctl daemon-reload
systemctl start docker
systemctl enable docker

#验证docker
docker -v

三、离线安装 docker compose 插件(命令为 docker compose,无横线)

插件模式,文件放到docker cli-plugins目录,不再使用/usr/local/bin独立二进制

复制代码
#创建插件目录
mkdir -p /usr/libexec/docker/cli-plugins

#将二进制放入插件目录,文件名固定为 docker-compose
cp docker-compose-linux-aarch64 /usr/libexec/docker/cli-plugins/docker-compose
chmod +x /usr/libexec/docker/cli-plugins/docker-compose

#【可选】清理旧版独立二进制(防止冲突)
rm -f /usr/local/bin/docker-compose

#验证
docker compose version

输出版本号代表成功,后续命令统一使用 docker compose(空格,无横杠)

四、离线部署 Ollama 0.33.3(宿主机二进制,纯CPU推理)

提前预置模型目录-导入离线模型包

复制代码
#复制 ollama_models.tar.gz 到/data/app/ollama_data/models
mkdir /data/app/ollama_data/models
tar -zxvf ollama_models.tar.gz  /data/app/ollama_data/models

建立ollama服务

复制代码
cp ollama-linux-aarch64 /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama

#创建ollama系统服务
cat > /etc/systemd/system/ollama.service <<EOF
[Unit]
Description=Ollama Service
After=network.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=root
Restart=always
Environment="OLLAMA_HOST=0.0.0.0:11434"
#CPU无显卡环境调优参数
Environment="OLLAMA_NUM_PARALLEL=1"
Environment="OLLAMA_MAX_LOADED_MODELS=2"
#模型存放路径-要拷贝到这里
Environment="OLLAMA_MODELS=/data/app/ollama_data/models"

[Install]
WantedBy=multi-user.target
EOF

#重载服务配置
systemctl daemon-reload

#启动ollama
systemctl start ollama
systemctl enable ollama

#验证模型
ollama list
#简单测试模型调用
ollama run deepseek-r1:1.5b

参数说明:

  • OLLAMA_NUM_PARALLEL=1:同一时间只处理1个请求,CPU环境必加,防止并发卡死
  • OLLAMA_MAX_LOADED_MODELS=2:最多同时加载2个模型(deepseek-r1:1.5b + bge-small-zh-v1.5:q4_k_m)

五、离线导入OpenWebUI镜像 + docker-compose.yml

复制代码
#导入镜像包
docker load -i openwebui_v0.10.2_aarch64.tar

#创建工作目录
mkdir -p /data/app/openwebui_yml
#创建webui宿主机持久目录
mkdir -p /data/app/openwebui

#编写docker-compose.yml
cd /data/app/openwebui_yml
cat > docker-compose.yml <<EOF
version: '3'
services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:v0.10.2
    container_name: openwebui
    restart: always
    ports:
      - "3000:3000"
    volumes:
      # OpenWebUI核心数据(用户、对话、向量索引)
      - /data/app/openwebui:/app/backend/data
      # 知识库文档独立命名卷
      - /data/app/openwebui_doc:/app/backend/data/doc
    environment:
      - OLLAMA_BASE_URL=http://172.17.0.1:11434
      - WEBUI_NAME=信创本地大模型实验平台
    deploy:
      resources:
        limits:
          cpus: '4'

volumes:
  openwebui_doc:
EOF

#启动服务
docker compose up -d

校验docker0网关IP(确认172.17.0.1)

复制代码
ip addr show docker0

如果输出不是172.17.0.1,把yaml里OLLAMA_BASE_URL修改为实际查到的docker0 inet地址

六、防火墙放行端口(银河麒麟firewalld)

复制代码
firewall-cmd --add-port=11434/tcp --permanent
firewall-cmd --add-port=3000/tcp --permanent
firewall-cmd --reload

#查看放行端口
firewall-cmd --list-ports
  • 临时关闭防火墙或如下操作:
    银河麒麟 V10 桌面图形界面操作(安全中心手动操作)
  1. 左下角【开始菜单】→【设置】→【安全】→【防火墙与网络保护】(安全中心)
  2. 点击【查看详情】进入防火墙配置页
  3. 找到【端口】标签,点【添加】
    • 第一条:端口11434,协议TCP,勾选永久生效
    • 第二条:端口3000,协议TCP,勾选永久生效
  4. 点击【应用】保存,自动重载防火墙规则
  5. 在端口列表核对,两个端口出现即为成功

七、访问与RAG实验验证

  1. 浏览器访问:http://服务器IP:3000
  2. 首次登录:注册管理员账号
  3. 模型列表识别:deepseek-r1:1.5bbge-small-zh-v1.5:q4_k_m
  4. RAG实验流程:
    • 知识库 → 创建知识库,上传文档
    • 嵌入模型:bge-small-zh-v1.5:q4_k_m
    • 对话模型:deepseek-r1:1.5b
    • 提问,验证文档检索+模型回答

连通性测试命令

复制代码
#宿主机本地测试ollama api
curl http://127.0.0.1:11434/api/tags

#进入openwebui容器内部测试连通性
docker exec -it openwebui curl http://172.17.0.1:11434/api/tags

访问openWebUI首页

http://localhost:3000

设置管理员账号(第一个用户默认为管理员)

配置调优请转移至:https://blog.csdn.net/cnxzzcn/article/details/165491121

八、无GPU CPU环境专属调优(飞腾/鲲鹏重点)

  1. 内存建议:最低8GB,16GB内存体验更好;4GB内存可跑,但问答容易交换swap,速度极慢。
  2. 上下文窗口 :OpenWebUI对话设置,上下文长度设置为 1024,减少内存占用。
  3. 不建议多用户并发提问,OLLAMA_NUM_PARALLEL=1,一次只处理一轮对话。
  4. 推理速度参考:飞腾D2000,deepseek-r1:1.5b,大约3~6 token/s,适合原型实验。

九、常见故障清单(银河麒麟ARM64,无显卡)

  1. exec format error:包架构错误,必须全部aarch64
  2. OpenWebUI无法连接Ollama:确认Ollama监听0.0.0.0:11434;确认docker0网关IP;防火墙放行11434端口
  3. ollama list为空:模型解压路径错误,模型必须放在 /root/.ollama/models
  4. 推理极慢/ollama进程被kill:内存不足,调小上下文,增加swap分区
  5. 遇到知识库新建后不显示---更换新版chrome浏览器即可

十、启停运维命令(推荐启动顺序)

复制代码
#停止整套服务
cd /data/app/openwebui_yml
docker compose down
systemctl stop ollama
systemctl stop docker

#启动整套服务(顺序不能乱)
systemctl start docker
cd /data/app/openwebui_yml && docker compose up -d
systemctl start ollama

#查看webui日志
docker compose logs -f openwebui

十一、清空数据重装openWebUI

复制代码
#停止服务
cd /data/app/openwebui_yml
docker compose down -v

#删除持久化卷-清空数据清空账号
rm -rf /data/app/openwebui
rm -rf /data/app/openwebui_doc

#重构并启动服务
docker compose up -d
相关推荐
AI视觉网奇2 小时前
docker 迁移
docker
程序员老赵2 小时前
Docker 部署填鸭表单完整教程:搭建私有化问卷与表单收集平台
前端·docker·开源
MrSYJ2 小时前
Veth pair 细讲
docker·云原生·容器
普通人63 小时前
win系统docker运行
windows·docker
秦jh_3 小时前
【Docker】容器
运维·docker·容器
三8444 小时前
云安全 · 02 · 容器与 Docker 安全基础
web安全·docker·云安全
小小的木头人15 小时前
Docker 环境下迁移 containerd 数据目录:从 `/var/lib/containerd` 到 `/data/containerd`
linux·docker
Mr小林20 小时前
Docker 安装教程(在线 + 离线)
运维·docker·容器
java_logo20 小时前
Docker 部署 Milvus:轻松搭建高性能向量数据库平台
数据库·docker·私有化部署·milvus·向量数据库·rag·轩辕镜像