【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器

真实环境实验

  • 外网:飞腾 D2000/4核16G,UOS1070 aarch64(64K 页),全程 root 执行 sudo su
  • 内网:FT2000+ 128G,银河麒麟 V10 矛系统,物理断网
  • 核心原则:外网只构建镜像、导入模型、打包离线资源,不启动完整 RAG 对话业务(16G 内存不足以跑 14B 推理)

【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器

文章目录

  • [【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器](#【信创】外网aarch64终端安装deepseek Ragflow 迁移至内网银河麒麟服务器)
  • [第一阶段:外网 D2000 UOS 1070 操作(联网)](#第一阶段:外网 D2000 UOS 1070 操作(联网))
    • 操作前:手动进入ROOT(必须先做)
    • [步骤1:创建第一个脚本 01env_build.sh](#步骤1:创建第一个脚本 01env_build.sh)
    • [步骤2:创建 02build_ragflow.sh(构建镜像)](#步骤2:创建 02build_ragflow.sh(构建镜像))
    • [步骤3:创建 03install_ollama_build.sh(安装Ollama+下载模型)](#步骤3:创建 03install_ollama_build.sh(安装Ollama+下载模型))
    • [步骤4:创建 04inputDeepseek.sh(导入模型)](#步骤4:创建 04inputDeepseek.sh(导入模型))
  • 第二阶段:打包全部离线包
    • [步骤1:创建 10backup_check_space.sh(检查存储空间)](#步骤1:创建 10backup_check_space.sh(检查存储空间))
    • [步骤2:创建 11backup_ollama_only.sh(打包ollama)](#步骤2:创建 11backup_ollama_only.sh(打包ollama))
    • [步骤3:创建 12export_docker_image.sh(导出docker)](#步骤3:创建 12export_docker_image.sh(导出docker))
  • ✅【外网所有工作到此结束】
  • 第二阶段:U盘拷贝
  • [第三阶段:内网 FT2000+ 128G 麒麟断网部署(最终运行)](#第三阶段:内网 FT2000+ 128G 麒麟断网部署(最终运行))
    • [1. 内网终端先切root](#1. 内网终端先切root)
    • [2. 挂载U盘](#2. 挂载U盘)
    • [3. 内网安装Docker脚本 env_prod.sh](#3. 内网安装Docker脚本 env_prod.sh)
    • [4. 内网部署全套业务脚本 deploy_prod.sh](#4. 内网部署全套业务脚本 deploy_prod.sh)
    • [5. 修改内网.env配置](#5. 修改内网.env配置)
    • [6. 启动项目](#6. 启动项目)
  • 最终成功!!!
  • 总结核心真相

第一阶段:外网 D2000 UOS 1070 操作(联网)

需要下载的几个大文件:

  1. 01Docker静态包(中科大可用)
bash 复制代码
wget https://mirrors.ustc.edu.cn/docker-ce/linux/static/stable/aarch64/docker-26.0.2.tgz
  1. 02docker compose
bash 复制代码
wget https://github.com/docker/compose/releases/download/v2.27.1/docker-compose-linux-aarch64
  1. 拉取ragflow源码
bash 复制代码
git clone https://github.com/infiniflow/ragflow.git
  1. 03 ollama-linux-arm64.tar.zst

    https://github.com/ollama/ollama/releases/

    找到 ollama-linux-arm64.tar.zst下载

  2. 05DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf下载

bash 复制代码
# Q4_K_M 推荐
wget https://hf-mirror.com/bartowski/DeepSeek-R1-Distill-Qwen-14B-GGUF/resolve/main/DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf
  1. 06向量模型在安装ollama后使用命令下载()
bash 复制代码
ollama pull qllama/bge-small-zh-v0.5:q4_k_m

操作前:手动进入ROOT(必须先做)

打开终端,输入:

bash 复制代码
sudo su

输入密码

现在你是#最高权限。

步骤1:创建第一个脚本 01env_build.sh

新建文件:

bash 复制代码
nano 01env_build.sh

粘贴下面完整修复好的代码(无任何sudo错误)

bash 复制代码
#!/bin/bash
set -e

apt update
apt install -y git wget curl ca-certificates python3-pip

# Docker静态包
tar -zxf docker-26.0.2.tgz
cp docker/* /usr/local/bin

# 写入docker systemd服务
cat > /etc/systemd/system/docker.service <<'SERVICE'
[Unit]
Description=Docker Application Container Engine
After=network-online.target

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

[Install]
WantedBy=multi-user.target
SERVICE

systemctl daemon-reload


# 先停止正在运行的 docker
systemctl stop docker
systemctl stop containerd

# 确认 docker 进程全部退出
pkill dockerd
pkill containerd


# -----------------建议分开安装---------------------------------
# 安装docker compose
cp docker-compose-linux-aarch64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

# 创建软链接,保证命令名叫 docker-compose
ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose


systemctl start docker
systemctl enable docker

docker -v
docker-compose -v

echo "【OK】Docker 26.0.2 安装成功"

保存:Ctrl+O 回车

退出:Ctrl+X


小提示:以后不要完整重跑整个脚本,Docker程序正在运行时不能覆盖。

现在只要两条命令输出版本号,01这一步就彻底完成,直接进入构建镜像的阶段。

赋予权限并运行

bash 复制代码
chmod +x 01env_build.sh
./01env_build.sh

✅ Docker 安装完成


步骤2:创建 02build_ragflow.sh(构建镜像)

bash 复制代码
nano 02build_ragflow.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

# cd /root

# 拉取源码
git clone https://github.com/infiniflow/ragflow.git
cd ragflow

# 构建ARM64镜像
docker build -t ragflow:arm64 .

# 拉取中间件
docker pull postgres:15-alpine
docker pull redis:7-alpine
docker pull nginx:alpine

echo "【OK】RAGFlow镜像构建完成"

运行:

bash 复制代码
chmod +x 02build_ragflow.sh
./02build_ragflow.sh

步骤3:创建 03install_ollama_build.sh(安装Ollama+下载模型)

bash 复制代码
nano 03install_ollama_build.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

# 安装ollama
# 解压.tar.zst → .tar → 解包文件
apt update
apt install zstd -y
# 保留原zst文件-不加 - k 会自动删除原.zst 包;加上 -k 保留原压缩文件
zstd -d -k ollama-linux-arm64.tar.zst
tar -xvf ollama-linux-arm64.tar

cp -R ollama-linux-arm64 /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama/bin/ollama

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

[Service]
Environment="OLLAMA_HOST=0.0.0.0"
ExecStart=/usr/local/bin/ollama/bin/ollama serve
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl start ollama
systemctl enable ollama

# 创建全局软链接,任意目录直接执行 ollama
ln -sf /usr/local/bin/ollama/bin/ollama /usr/bin/ollama

ollama --version

echo "【OK】ollama构建完成"

运行:

bash 复制代码
chmod +x 03install_ollama_build.sh
./03install_ollama_build.sh

步骤4:创建 04inputDeepseek.sh(导入模型)

bash 复制代码
nano 04inputDeepseek.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

# 切换到模型GGUF存放目录

# 1. 构建 DeepSeek‑R1‑14B Ollama 模型
cat > Modelfile-14b <<'MF'
FROM ./DeepSeek-R1-Distill-Qwen-14B-Q4_K_M.gguf
PARAMETER temperature 0.6
PARAMETER num_ctx 8192
MF

ollama create deepseek-r1-14b -f Modelfile-14b
echo "✅ deepseek-r1-14b 创建成功"
# 构建成功后可以直接删除临时Modelfile
rm -f Modelfile-14b

# 导入向量模型
# 2. 直接拉取向量模型(不用手动下载GGUF,规避404)
ollama pull qllama/bge-small-zh-v1.5:q4_k_m

# 查看全部模型
ollama list
curl 127.0.0.1:11434/api/tags
echo "两个模型全部就绪,准备离线打包迁移"
echo "【OK】模型导入完成(禁止对话测试!!!16G内存会崩)"

运行:

bash 复制代码
chmod +x 04inputDeepseek.sh
./04inputDeepseek.sh

第二阶段:打包全部离线包

步骤1:创建 10backup_check_space.sh(检查存储空间)

bash 复制代码
nano 10backup_check_space.sh

粘贴:

bash 复制代码
#!/bin/bash
OLLAMA_PATH="/root/.ollama"
# 获取模型大小(KB)
SIZE_KB=$(du -s "${OLLAMA_PATH}" | awk '{print $1}')
SIZE_GB=$(echo "$SIZE_KB / 1024 /1024" | bc -l)
# 当前分区可用空间(KB)
AVAIL_KB=$(df -Pk . | tail -1 | awk '{print $4}')
AVAIL_GB=$(echo "$AVAIL_KB /1024 /1024" | bc -l)

echo "================空间评估=================="
printf "模型源文件大小: %.2f GB\n" ${SIZE_GB}
printf "当前磁盘剩余:   %.2f GB\n" ${AVAIL_GB}
echo "------------------------------------------"
printf "【复制再打包】最少需要: %.2f GB空闲\n" $(echo "2 * $SIZE_GB" | bc -l)
printf "【直接tar打包】最少需要: %.2f GB空闲\n" ${SIZE_GB}
echo "=========================================="
if (( $(echo "$AVAIL_GB < $SIZE_GB" | bc -l) ));then
    echo "⚠️警告:空间不足!本机无法备份,请使用外接U盘/移动硬盘"
elif (( $(echo "$AVAIL_GB < 2 * $SIZE_GB" | bc -l) ));then
    echo "✅只能使用【直接tar打包】,禁止cp复制方案"
else
    echo "✅空间充足,两种备份方式都可以"
fi

步骤2:创建 11backup_ollama_only.sh(打包ollama)

bash 复制代码
nano 11backup_ollama_only.sh

粘贴:

bash 复制代码
#!/bin/bash

#!/bin/bash
set -e

SCRIPT_FILE=$(readlink -f "$0")
WORKDIR=$(dirname "${SCRIPT_FILE}")
cd "${WORKDIR}" || { echo "目录异常:${WORKDIR}"; exit 1; }

BUNDLE_DIR="${WORKDIR}/offline_bundle"
DEPLOY_TMP="${WORKDIR}/deploy_pack"

# 真实部署目录(来自systemd service)
OLLAMA_INSTALL_ROOT="/usr/local/bin/ollama"
OLLAMA_CLI="/usr/bin/ollama"
OLLAMA_DATA_SRC="/root/.ollama"
OLLAMA_SERVICE_FILE="/etc/systemd/system/ollama.service"
RAGFLOW_HOST_DIR="${WORKDIR}/ragflow/docker"

echo "=================================================="
echo "【Ollama完整离线备份(发布包+模型+服务配置)】"
echo "基准目录: ${WORKDIR}"
echo "程序根目录: ${OLLAMA_INSTALL_ROOT}"
echo "模型目录: ${OLLAMA_DATA_SRC}"
echo "=================================================="

# 前置校验
if [ ! -d "${OLLAMA_INSTALL_ROOT}" ];then
    echo "[ERROR] 主程序目录不存在:${OLLAMA_INSTALL_ROOT}"
    exit 1
fi
if [ ! -d "${OLLAMA_DATA_SRC}/models" ];then
    echo "[ERROR] Ollama模型目录缺失"
    exit 1
fi
if [ ! -d "${RAGFLOW_HOST_DIR}" ];then
    echo "[ERROR] ragflow/docker不存在"
    exit 1
fi

# 停止服务防止文件占用
systemctl stop ollama 2>/dev/null || true

rm -rf "${BUNDLE_DIR}" "${DEPLOY_TMP}"
mkdir -p "${BUNDLE_DIR}"
mkdir -p "${DEPLOY_TMP}/ollama_install"
mkdir -p "${DEPLOY_TMP}/cli_link"
mkdir -p "${DEPLOY_TMP}/systemd"

echo "[1] 备份完整ollama发布包 /usr/local/bin/ollama"
cp -r "${OLLAMA_INSTALL_ROOT}" "${DEPLOY_TMP}/ollama_install/"

echo "[2] 备份CLI快捷命令 /usr/bin/ollama"
if [ -e "${OLLAMA_CLI}" ];then
    cp "${OLLAMA_CLI}" "${DEPLOY_TMP}/cli_link/"
fi

echo "[3] 备份systemd服务文件"
if [ -f "${OLLAMA_SERVICE_FILE}" ];then
    cp "${OLLAMA_SERVICE_FILE}" "${DEPLOY_TMP}/systemd/"
fi

echo "[4] 备份完整模型(GGUF14B + pull向量模型)"
cp -r "${OLLAMA_DATA_SRC}" "${DEPLOY_TMP}/ollama_data"

echo "[5] 复制Ragflow配置文件"
cp "${RAGFLOW_HOST_DIR}/.env" "${DEPLOY_TMP}/"
cp "${RAGFLOW_HOST_DIR}/docker-compose.yml" "${DEPLOY_TMP}/"

echo "[6] 打包 deploy_pack.tar.gz"
tar -zcvf "${BUNDLE_DIR}/deploy_pack.tar.gz" -C "${DEPLOY_TMP}" .

# 重启服务
systemctl start ollama 2>/dev/null || true

echo -e "\n✅ Ollama全套备份完成!"
echo "输出文件:${BUNDLE_DIR}/deploy_pack.tar.gz"
ls -lh "${BUNDLE_DIR}"

运行:

bash 复制代码
chmod +x 11backup_ollama_only.sh
./11backup_ollama_only.sh

步骤3:创建 12export_docker_image.sh(导出docker)

bash 复制代码
nano 12export_docker_image.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

WORKDIR=$(cd "$(dirname "$0")";pwd)
BUNDLE_DIR="${WORKDIR}/offline_bundle"
mkdir -p "${BUNDLE_DIR}"

echo "开始导出Ragflow全套Docker镜像..."
docker save \
-o "${BUNDLE_DIR}/ragflow_bundle.tar" \
ragflow:arm64 postgres:15-alpine redis:7-alpine nginx:alpine

cd "${BUNDLE_DIR}"
md5sum ragflow_bundle.tar >> file_md5.txt
echo "✅ Docker镜像导出完毕:ragflow_bundle.tar"
ls -lh "${BUNDLE_DIR}"

运行:

bash 复制代码
chmod +x 12export_docker_image.sh
./12export_docker_image.sh

✅【外网所有工作到此结束】

你得到3个超级重要文件:

  1. ragflow_bundle.tar (全部Docker镜像)
  2. deploy_pack.tar.gz (Ollama+完整模型+配置)
  3. docker-26.0.2.tgz (内网安装Docker用)

重点:外网绝对不做问答测试!!16G必崩!!


第二阶段:U盘拷贝

U盘必须 exFAT

/root/offline_bundle 全部拷走


第三阶段:内网 FT2000+ 128G 麒麟断网部署(最终运行)

1. 内网终端先切root

bash 复制代码
sudo su

2. 挂载U盘

bash 复制代码
mkdir -p /mnt/usb
lsblk
mount /dev/sdb1 /mnt/usb

3. 内网安装Docker脚本 env_prod.sh

bash 复制代码
nano env_prod.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

mkdir -p /data
cp -r /mnt/usb/offline_bundle /data/

cd /data/offline_bundle
tar -zxf docker-26.0.2.tgz
cp docker/* /usr/bin

cat > /etc/systemd/system/docker.service <<'SERVICE'
[Unit]
Description=Docker Application Container Engine
After=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
SERVICE

systemctl daemon-reload
systemctl start docker
systemctl enable docker

docker -v
echo "【OK】内网Docker安装完成"

运行:

bash 复制代码
chmod +x env_prod.sh
./env_prod.sh

4. 内网部署全套业务脚本 deploy_prod.sh

bash 复制代码
nano deploy_prod.sh

粘贴:

bash 复制代码
#!/bin/bash
set -e

cd /data/offline_bundle
md5sum -c file_md5.txt

# 导入镜像
docker load -i ragflow_bundle.tar

# 解压部署包
cd /data
tar -zxvf /data/offline_bundle/deploy_pack.tar.gz

# 恢复ollama
cp /data/ollama /usr/local/bin/ollama
chmod +x /usr/local/bin/ollama
cp -r /data/ollama_data /root/.ollama

# 写入服务
cat > /etc/systemd/system/ollama.service <<'EOF'
[Unit]
Description=Ollama Service
After=network.target

[Service]
Environment="OLLAMA_HOST=0.0.0.0"
ExecStart=/usr/local/bin/ollama serve
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable ollama
systemctl start ollama

ollama list

echo "【OK】内网模型+环境全部恢复完成,无需重新创建模型"

运行:

bash 复制代码
chmod +x deploy_prod.sh
./deploy_prod.sh

5. 修改内网.env配置

bash 复制代码
vim /data/.env

改内网IP、数据库参数

6. 启动项目

bash 复制代码
cd /data
docker-compose up -d

最终成功!!!

浏览器打开:内网IP

全套RAGFlow+14B大模型离线运行


总结核心真相

  1. 脚本里不能写 sudo su / sudo -i ------会卡死人
  2. 所有脚本执行前手动sudo su切root ------永远不卡
  3. 外网D2000只打包、不测试 ------防止OOM
  4. 内网FT2000+128G专门跑正式业务 ------稳如服务器
  5. 64K→64K页大小,零兼容错误,比从阿里云g8r用虚拟机更稳

相关推荐
M哥支付1 小时前
快捷支付 VS 网关支付 安全对比
服务器·网络·其他·微信·金融
考虑考虑1 小时前
ElasticSearch索引命令
运维·后端·elasticsearch
2501_928996221 小时前
Agent 开发的 API 选型:从 Function Calling 到多模型协作的中科热备底层逻辑
服务器·重构·gitlab
非凡ghost3 小时前
AI修图不“造假“,摄影师的出片效率加速器
服务器·前端·人工智能·电脑
和裕3 小时前
光伏储能定制加强型瓦楞纸箱:降低组件运输隐裂率与售后损耗的核心价值
大数据·运维·网络·人工智能·算法
智购科技无人售货机工厂店3 小时前
2026自动售货机大屏交互设计原则:从信息层级到视觉动线的工程实践~YH
运维·python·单片机·嵌入式硬件·自动化·交互
Ruiery3 小时前
Linux 6.6内核 PCIe 深度解析(十):PCIe Port Driver(portdrv)— 一个物理 Port,拆出五个逻辑服务
linux·运维·服务器
天天喝旺仔4 小时前
Python asyncio 异步编程实战:用协程与事件循环构建高性能网络服务
服务器·网络·python·性能优化·fastapi
运维行者_4 小时前
ISP 企业级带宽计费怎么做?网络流量计费的 6 大核心能力
运维·服务器·网络·数据库·支持向量机·接口隔离原则