在本地部署小型LLM模型及对公网开放
本文介绍作者在 Ubuntu 系统,使用 RTX2060 Super 8G 显卡,借助 Ollama 部署 Qwen2.5:7b-instruct 小型大模型的完整流程。包含 NVIDIA 驱动安装、防止驱动版本错配、Ollama 部署,搭配 AxonHub 与 1Panel 做公网鉴权,通过 FRP 内网穿透、CDN 暴露公网,生成 API 密钥对外提供本地模型服务。
01. 引言
本篇文章使用的部署环境:
- 系统: Ubuntu 26.04.1 LTS
- SSH工具: FinalShell
- 本地AI工具: Ollama 0.33.1
- 显卡驱动: NVIDIA-SMI 595.91.07
- LLM模型: Qwen2.5:7b-instruct
- 计算显卡: Nvidia GeForce RTX 2060 Super 8G
- CPU: Intel I5-10400F
所有部署建立在以上硬件&系统环节下,请根据自己的显卡显存及计算能力酌情更换模型版本
02. 部署
2.1 安装NVIDIA 官方闭源驱动
- 启用 GRUB 启动菜单,防止出问题后无法进系统急救
sudo sed -i 's/GRUB_TIMEOUT_STYLE=hidden/# GRUB_TIMEOUT_STYLE=hidden/' /etc/default/grub
sudo sed -i 's/GRUB_TIMEOUT=0/GRUB_TIMEOUT=5/' /etc/default/grub
sudo update-grub
- 安装驱动依赖
sudo apt update
sudo apt install build-essential dkms linux-headers-$(uname -r) -y
- 禁用开源驱动
Nouveau
sudo bash -c "echo 'blacklist nouveau' > /etc/modprobe.d/blacklist-nouveau.conf"
sudo bash -c "echo 'options nouveau modeset=0' >> /etc/modprobe.d/blacklist-nouveau.conf"
sudo update-initramfs -u
- 查看可用的驱动版本
ubuntu-drivers devices
我的机器输出为
root@home:~# ubuntu-drivers devices
ERROR:root:aplay command not found
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001F06sv00001B4Csd000013A3bc03sc00i00
vendor : NVIDIA Corporation
model : TU106 [GeForce RTX 2060 SUPER]
driver : nvidia-driver-580-server-open - distro non-free
driver : nvidia-driver-610 - distro non-free
driver : nvidia-driver-610-open - distro non-free
driver : nvidia-driver-595-open - distro non-free recommended
driver : nvidia-driver-580-server - distro non-free
driver : nvidia-driver-595-server-open - distro non-free
driver : nvidia-driver-580-open - distro non-free
driver : nvidia-driver-595 - distro non-free
driver : nvidia-driver-595-server - distro non-free
driver : nvidia-driver-580 - distro non-free
driver : xserver-xorg-video-nouveau - distro free builtin
可见在
driver : nvidia-driver-595-open - distro non-free recommended
这行已经自动为我们标注了recommended字段,即此为推荐驱动版本
- 安装推荐的驱动版本
sudo apt install {根据实际推荐的驱动版本选择} -y
- 重启机器
sudo reboot
- 验证安装成果
nvidia-smi
如果看到拥有正确的输出,即可以看到GPU 型号、驱动版本、CUDA 版本、显存等信息,即认为安装成功~
2.2 [重要]解决因为Ubuntu的无人值守升级导致Driver/library version mismatch的问题
{% note 注意 注意:本段内容因系统版本 / NVIDIA 驱动版本差异较大,请勿直接套用命令。 请按下方模板,把你自己终端里的输出粘贴给 AI,让它生成与你环境匹配的锁定方案。 经测试,Web 版免费 DeepSeek 即可完成此任务 orange %}
我在 Ubuntu 上使用 NVIDIA 显卡,遇到了 Failed to initialize NVML: Driver/library version mismatch 的问题。重启后版本已对齐。现在我想锁定当前版本的 NVIDIA 驱动包,防止无人值守升级在后台单独升级用户态库导致版本错配。
我的系统信息如下:
1. nvidia-smi 输出:
【在这里粘贴 nvidia-smi 的输出】
2. cat /proc/driver/nvidia/version 输出:
【在这里粘贴 /proc/driver/nvidia/version 的输出】
3. dpkg -l | grep -E '^ii.*nvidia' | awk '{print $2}' 输出:
【在这里粘贴已安装 NVIDIA 包列表的输出】
请帮我做以下几件事:
判断我安装的是 open 内核模块还是 专有(proprietary)内核模块版本。
根据我的实际包名,生成一条完整的 apt-mark hold 命令,锁定所有与驱动版本错配相关的 NVIDIA 包(包括用户态库 libnvidia-*、nvidia-utils-*、nvidia-compute-utils-*、内核模块 nvidia-dkms-*、nvidia-kernel-*、xserver-xorg-video-nvidia-* 等)。
说明哪些包不需要锁定(如 nvidia-prime、nvidia-settings、screen-resolution-extra、linux-firmware-nvidia-graphics 等辅助包),并解释原因。
给出验证锁定是否生效的命令。
给出未来想升级驱动时的解锁 → 升级 → 重启 → 验证 → 重新锁定的完整步骤。
提醒我锁定 NVIDIA 包会同时冻结这段时间的安全更新,建议每 1~2 个月手动更新一次。
请直接给出可复制粘贴的命令,不要泛泛而谈。
2.3 安装Ollama
使用Ollama官方推荐的命令安装:
curl -fsSL https://ollama.com/install.sh | sh
注意:此安装方式可能会受网络环境影响,请自行寻找解决方案
Tips:可以前往Ollama官方Github仓库的Release页面,获取最新的安装链接,再通过Github加速工具下载
安装完成后,可以使用
ollama --version
以验证安装是否成功
2.4 下载模型文件(以Qwen2.5:7b做示例)
在ssh环境中运行
ollama run qwen2.5:7b-instruct
即可自动拉取
在拉取到后半段时,可能会出现掉速情况,此时可以Ctrl+C取消拉取,再次运行ollama run qwen2.5:7b-instruct即可短暂恢复速度,重复此步骤可加快拉取速度
03. 对公网建立完整的鉴权,并分配访问密钥
对接公网部分使用的开源项目为AxonHub,并通过1Panel面板进行容器管理
3.1 通过1Panel安装AxonHub
由于1Panel官方应用商店并未上架AxonHub,本次导入了LiuShen的1Panel应用仓库,十分感谢柳哥贡献~
有兴趣的可以前往柳哥博客中继续探索~
- 添加1Panel定时任务,任务类型Shell脚本

脚本内容:
#!/bin/bash
LOCAL_APPS_DIR="/opt/1panel/resource/apps/local"
rm -rf /tmp/appstore_merge
mkdir -p /tmp/appstore_merge
echo "正在同步: https://v4.gh-proxy.org/https://github.com/willow-god/appstore"
git clone --depth=1 https://v4.gh-proxy.org/https://github.com/willow-god/appstore /tmp/appstore_merge/willow-appstore
if [ $? -eq 0 ]; then
cp -rf /tmp/appstore_merge/willow-appstore/apps/* $LOCAL_APPS_DIR/
echo "willow-appstore 同步成功"
else
echo "willow-appstore 克隆失败"
fi
# 清理临时目录
rm -rf /tmp/appstore_merge
echo "所有任务完成"
如果需要额外添加okxlin仓库,可使用以下脚本:
#!/bin/bash
LOCAL_APPS_DIR="/opt/1panel/resource/apps/local"
rm -rf /tmp/appstore_merge
mkdir -p /tmp/appstore_merge
echo "正在同步: https://v4.gh-proxy.org/https://github.com/okxlin/appstore"
# 为 okxlin 仓库指定独立的本地目录 okxlin-appstore
git clone --depth=1 https://v4.gh-proxy.org/https://github.com/okxlin/appstore /tmp/appstore_merge/okxlin-appstore
if [ $? -eq 0 ]; then
cp -rf /tmp/appstore_merge/okxlin-appstore/apps/* $LOCAL_APPS_DIR/
echo "okxlin-appstore 同步成功"
else
echo "okxlin-appstore 克隆失败"
fi
echo "正在同步: https://v4.gh-proxy.org/https://github.com/willow-god/appstore"
# 为 willow-god 仓库指定另一个独立的本地目录 willow-appstore
git clone --depth=1 https://v4.gh-proxy.org/https://github.com/willow-god/appstore /tmp/appstore_merge/willow-appstore
if [ $? -eq 0 ]; then
cp -rf /tmp/appstore_merge/willow-appstore/apps/* $LOCAL_APPS_DIR/
echo "willow-appstore 同步成功"
else
echo "willow-appstore 克隆失败"
fi
# 清理临时目录
rm -rf /tmp/appstore_merge
echo "所有任务完成"
- 添加完计划任务后,需手动执行一次,同步时间可能会因网络差异而不同,请耐心等待,并检查同步后的输出

若看到如下反馈,即证明同步成功:
同步成功反馈
- 安装AxonHub
请按照图片步骤依次点击应用商店—>同步本地应用—>勾选本地应用—>搜索AxonHub—>点击'安装'
不知道啥原因,没法自动创建数据库,请先自行创建,然后填入对应的密码和用户名即可
不知道啥原因,没法自动创建数据库,请先自行创建,然后填入对应的密码和用户名即可
不知道啥原因,没法自动创建数据库,请先自行创建,然后填入对应的密码和用户名即可
3.2 进入AxonHub的Web界面并进行配置
按照AxonHub的官方引导配置完成后,按照图片顺序进行本地模型配置:
配置流程
配置好后,可以来到AxonHub中的测试场,随意询问一个问题,选择好模型后,查看AI是否有回复,若配置正确,则可以正常看到AI的回复
测试
3.3 套CDN并同步挂到域名上
强烈建议套CDN!原因有很多,最重要的是可以防护住你的源站IP不泄露
套CDN!
源站如果是家中的机器,可以通过FRP内网穿透的方式来将请求传递至CDN上,再通过CDN节点部署至公网
这里不过多赘述,如需可以在评论区交流
3.4 生成对应的API Key,并在任何地方尽情的享用本地算力
进入AxonHub的API密钥页面,点击创建API Key,类型一定要选择用户
随后即可获得你的API Key
创建Key
⚠️ 请妥善保管您的 API 密钥,不要与未授权的人员分享。任何拥有此密钥的人都可以代表您发出请求。
⚠️ 请妥善保管您的 API 密钥,不要与未授权的人员分享。任何拥有此密钥的人都可以代表您发出请求。
⚠️ 请妥善保管您的 API 密钥,不要与未授权的人员分享。任何拥有此密钥的人都可以代表您发出请求。
04. 结语
第一次做AI类教程,或许再不久的未来,我会再出一期用GPT-SoVITS训练声音模型的教程,再说吧~~
我很懒惰的嘞!
不过声音克隆已经玩通过一次嘞嘿嘿
找不到啥图了,就只找到了个训练过程的图
训练
最后还是因为底噪去除的不彻底,导致整个模型训练出来说话声音有些沙哑,不过总体算成功了
当时光处理不同角色的音频剥离就耗费了挺长时间,不过嘛,还是很有意思的~
音频剥离
也不知道大家对DSH有没有兴趣捏~
dsh
前一段时间也研究了一下下,我认为做项目还是老实用Codex吧~
最后
一定要保管好自己AI的API Key 不论是中转站还是本地模型,特别是中转站的API Key,千万不要抱有侥幸心理,如果有可能泄露的情况,果断重新生成新的API Key
祝大家蹬代码永远不降智!! 自己充的Claude永远不被封号!




评论区加载中...