【笔记】LLM|Ubuntu22服务器极简本地部署DeepSeek+联网使用方式
2025/02/18说明:2月18日~2月20日是2024年度博客之星投票时间,走过路过可以帮忙点点投票吗?我想要前一百的实体证书,经过我严密的计算只要再拿到60票就稳了。一人可能会有多票,Thanks♪(・ω・)ノ传送门如下:https://www.csdn.net/blogstar2024/detail/151
我本来以为这个事情其实很简单的,因为我都放了个寒假了,我以为大家应该都已经部署好了吧,结果没有人发链接给我,遗憾自己部署。原以为网上的文章那么多应该已经很全面了吧,本来想直接在社区里发点东西结束,结果发现搜索前列的都在偷工减料,各种细节少写,我在社区里补充了半天都快补出一篇大博客出来了……大抵是因为这个部署过程比较长吧,遗憾还得写博客。
2025/02/18补充:这篇文章写于2025/02/15,当时确实还没有人部署,然后我刚这么说,清华那边就说自己能量化671B用内存加速让单卡4090也能跑,17号浙大公开说自己要将满血R1公开给全国高校使用……赶不上变化了属于是。
以下是我自己记录的最简单的方式,要是有问题请评论区留言,我可能有的东西也会漏写。
以下分成三部分,先教以下怎么安装ollama去本地拉模型,然后再推荐一下Page Assist,再介绍一下openwebui 0.5.10的使用方式,补充一下文件上传、联网搜索功能的设置方式。
我自己的Ubuntu版本是22,如果你的比较低就不要看我的博客了,因为python版本麻烦事很多。高的可以看。
文章目录
- 本地部署
- Page Assist(推荐)
- 第一步,用VSCode连接你的服务器
- 第二步,安装浏览器插件Page Assist
- Openwebui(个人用户不推荐使用哈,麻烦死了)
- Open WebUI搭建部署指南
- 修复文件上传功能
- 联网搜索功能
本地部署
这些步骤都很简单哈,就不列小标题了,直接用序号了。
- 安装ollama:
curl -fsSL https://ollama.com/install.sh | sh - 启动服务并设置开机自启:
service ollama start systemctl enable ollama - 拉取DeepSeek:
ollama run deepseek-r1:70b - 拉取后就有终端交互,随便打点什么测试一下,如果发现没有输出可以参考一下我这篇博客:【BUG】LLM|Ubuntu 用 ollama 部署 DeepSeek 但没输出,llama 有输出-CSDN博客
要拉多少大小可以参考下表:

跑分结果:

我自己的环境是GPU 4090 24G,拉取了70b和7b,70b有点卡卡的,7b还好。
表格来源:在Linux服务器中部署Deepseek等大语言模型 | 香菇肥牛的博客
如果想测试自己的电脑的速度,可以运行ollama指令的时候添加--verbose参数,例如:

Page Assist(推荐)
参考:国内,怎么使用open webui 网络搜索功能,有大佬指导一下嘛? · open-webui/open-webui · Discussion #3851
第一步,用VSCode连接你的服务器
第一步,你只需要用VSCode连接你的服务器,它就会自动端口映射,把你的127.0.0.1和服务器的关联起来,你就可以用服务器上已有的ollama服务类。
第二步,安装浏览器插件Page Assist
笔者注:我自己只尝试了Edge的,可以哈。
全平台(PC、Mac、安卓、iOS)安装方案如下(自带思维链显示支持和无需设置API的联网搜索,如百度、搜狗等,也支持SearXNG,不同搜索引擎搜索内容不同,根据需求选择):
1、PC、Mac浏览器直接安装插件即可(默认启用Ollama连接状态检查,可设置中禁用)
Chrome:
https://chromewebstore.google.com/detail/page-assist-%E6%9C%AC%E5%9C%B0-ai-%E6%A8%A1%E5%9E%8B%E7%9A%84-web/jfgfiigpkhlkbnfnbobbkinehhfdhndo
Edge:
https://microsoftedge.microsoft.com/addons/detail/page-assist-a-web-ui-fo/ogkogooadflifpmmidmhjedogicnhooa
Firefox:
https://addons.mozilla.org/en-US/firefox/addon/page-assist/
2、安卓手机可以使用kiwi浏览器(需要谷歌框架): https://github.com/kiwibrowser/src.next/releases 再安装该扩展Chrome版,或使用安卓Firefox浏览器安装Firefox版插件,联网可以使用内置无需设置的搜索引擎和自建或公共SearXNG服务,国内建议直接选baidu即可,搜索结果建议设置50 (token消耗更多,但效果更好)
至此你就可以用上最基本的联网搜索能力+R1大模型了!快速高效不费劲,省下几百兆的本地Web客户端。

Openwebui(个人用户不推荐使用哈,麻烦死了)
注意自己的用户要有Root权限哈,没有就别搭了,找你们管理员去。
(openwebui,主要是方便多用户共享,它功能很完善,搜索和知识库什么的也都有)
我的版本:openwebui 0.5.10
Open WebUI搭建部署指南
首先,这种涉及到服务的操作先清空一下当前缓存的sudo密码,避免systemctl enable 指令执行不了:
sudo -k
新建一个用户openwebui用于运行Open WebUI。本文中,将把程序安装在/opt/openwebui目录中。
mkdir /opt/openwebui
adduser openwebui
设置好密码,再切换到用户:
chown -R openwebui /opt/openwebui
su openwebui
切换用户后进入这个目录:
cd /opt/openwebui
然后,我们新建一个虚拟环境 (venv),并使用VENV中的PIP安装Open WebUI。
python3 -m venv ./openwebui-venv
/opt/openwebui/openwebui-venv/bin/pip3 install open-webui
推荐使用
/opt/openwebui/openwebui-venv/bin/pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple open-webui安装,因为官方pip源太卡了。
如果没有报错,Open WebUI就安装好了。
我们来写一个SystemD服务,将Open WebUI运行在后台并实现开机自动启动。
编辑文件/etc/systemd/system/openwebui.service,输入下面的内容(如果你要改端口就修改一下8080改成你自己想要的端口):
[Unit]
Description=OpenWebUI
After=network.target[Service]
User=openwebui
WorkingDirectory=/opt/openwebui/openwebui-venv
ExecStart=/opt/openwebui/openwebui-venv/bin/open-webui serve --port 8080
Restart=always[Install]
WantedBy=multi-user.target
保存退出后,切换回原本的有root权限的用户:
su 之前的用户
安装一些关键依赖,启动该服务并设置开机自动启动。
sudo apt install sqlite3 # fix sqlite3
sudo apt install apache2-utils # fix htpasswdsystemctl daemon-reload
service openwebui start
systemctl enable openwebui
systemctl enable openwebui的时候,多用户的服务器可能会报奇怪的错误,这个时候清除密码缓存就可以正常enable了:
sudo -k。
然后,要等启动完成,要等一会儿。如果你等了好久还不行,你可以考虑终端启动看看问题。首先切换到openwebui用户然后运行指令:
su openwebui
cd /opt/openwebui
/opt/openwebui/openwebui-venv/bin/open-webui serve --port 8080
值得一提的是,如果你是在终端直接启动,也就是这种指令:/opt/openwebui/openwebui-venv/bin/open-webui serve --port 8080,那么以下这个东西出来了并没有启动完成:

要等待更多东西出来才是启动完成了。
如果你是终端启动并且使用vscode,你会看到“端口”界面出现端口映射情况:
如果你不是,你可以通过lsof -i:端口号指令查看自己的端口占用情况,注意不要打多了空格。
启动完成后,访问http://your_ip_address:8080,就能看到下面的Open WebUI界面了。
如果
http://127.0.0.1:8080能访问但是ip+端口访问不了,一般都是防火墙没开放对应端口导致的,sudo ufw allow 端口号就可以了。

进入界面之后创建管理员账号密码,如果提示权限有问题,很可能是关键依赖没有装,装好就行了,装好之后重新创建:
sudo apt install sqlite3 # fix sqlite3
sudo apt install apache2-utils # fix htpasswd
这样,Open WebUI搭建部署完毕。
修复文件上传功能
坏消息说在最前:我还没解决!!!因为我的openwebui 版本有点高,我没找到最新的解决思路,还在自己探索,但我感觉没什么好探索的后期我可能会考虑降版本。以下是我在网上找到的解决思路,我照着实施了一遍也并没有解决……
上传文件报错:python “‘NoneType’ object has no attribute ‘encode’”,要打开管理员面板装个模型,详见https://github.com/open-webui/open-webui/discussions/8059,根据文档讨论内容,总结所有解决办法如下:
-
重置嵌入模型配置
- 进入Admin Panel → 找到Embedding Model设置
- 手动输入默认模型名称:
sentence-transformers/all-MiniLM-L6-v2 - 点击右侧刷新按钮应用配置
- 适用版本:0.4.7及早期版本

-
代码层修复
# 在/backend/open_webui/apps/retrieval/main.py中添加: default_embedding_model = "sentence-transformers/all-MiniLM-L6-v2" if not app.state.config.RAG_EMBEDDING_MODEL.strip():app.state.config.RAG_EMBEDDING_MODEL = default_embedding_modelupdate_embedding_model(default_embedding_model)通过添加空值检测和默认值回退机制
-
切换嵌入模型引擎
- 将Embedding Engine改为
ollama - 设置API地址为本地Ollama服务(如
http://127.0.0.1:11434) - 适用版本:0.5.5+
- 将Embedding Engine改为
-
更换兼容的嵌入模型
- 推荐模型:
BAAI/bge-m3(验证有效)nomic-ai/nomic-embed-text-v1.5(需网络稳定)paraphrase-multilingual
- 避免使用空值或无效模型名称
- 推荐模型:
-
基础设施调整
- Docker用户:更新至0.5.10版并通过compose部署
- 手动安装用户:检查依赖完整性
- 确保网络通畅(影响模型下载)
- 重置向量数据库:
rm -rf vector_storage/
-
开发分支修复
- 尝试合并提交4b7f0c5的修复
- 注意:dev分支可能存在不稳定性
-
替代方案
- 通过API使用外部嵌入服务
- 直接使用Ollama而非OpenWebUI集成
附加建议:
- 出现错误时检查日志:
ERROR[open_webui.routers.retrieval]段 - 优先使用Docker部署保证环境一致性
- 首次配置时建议:
# 清理旧配置 rm -rf ~/.cache/openwebui/models/ rm -rf vector_storage/
不同版本适用性:
- 0.4.x版本:方案1、2有效
- 0.5.x版本:方案3、4、5更可靠
- 0.5.10+版本:建议优先使用Docker部署
注:若问题持续,建议在Github提交包含完整错误日志的新issue。
联网搜索功能
参考:国内,怎么使用open webui 网络搜索功能,有大佬指导一下嘛? · open-webui/open-webui · Discussion #3851
OpenWebUI接入博查搜索API - 开发调优 - LINUX DO
看了半天我感觉还是不花钱好,于是想选择 Searxng,自己搭。
但搭挺费事的,我现在还没开始搭,之后搭了再补博客吧。
本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/145671009。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。
相关文章:
【笔记】LLM|Ubuntu22服务器极简本地部署DeepSeek+联网使用方式
2025/02/18说明:2月18日~2月20日是2024年度博客之星投票时间,走过路过可以帮忙点点投票吗?我想要前一百的实体证书,经过我严密的计算只要再拿到60票就稳了。一人可能会有多票,Thanks♪(・ω・)&am…...
win11 labelme 汉化菜单
替换 app.py,再重启 #labelme 汉化菜单# -*- coding: utf-8 -*-import functools import os import os.path as osp import re import webbrowserimport imgviz from qtpy import QtCore from qtpy.QtCore import Qt from qtpy import QtGui from qtpy import QtWidgetsfrom l…...
Linux的基础指令和环境部署,项目部署实战(下)
目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…...
利用Java爬虫精准获取商品SKU详细信息:实战案例指南
在电商领域,SKU(Stock Keeping Unit,库存单位)详细信息是电商运营的核心数据之一。它不仅包含了商品的规格、价格、库存等关键信息,还直接影响到库存管理、价格策略和市场分析等多个方面。本文将详细介绍如何利用Java爬…...
数值积分:通过复合梯形法计算
在物理学和工程学中,很多问题都可以通过数值积分来求解,特别是当我们无法得到解析解时。数值积分是通过计算积分区间内离散点的函数值来近似积分的结果。在这篇博客中,我将讨论如何使用 复合梯形法 来进行数值积分,并以一个简单的…...
【Java计算机毕业设计】基于SSM+VUE保险公司管理系统数据库源代码+LW文档+开题报告+答辩稿+部署教程+代码讲解
源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储:…...
C#之上位机开发---------C#通信库及WPF的简单实践
〇、上位机,分层架构 界面层 要实现的功能: 展示数据 获取数据 发送数据 数据层 要实现的功能: 转换数据 打包数据 存取数据 通信层 要实现的功能: 打开连接 关闭连接 读取数据 写入数据 实体类 作用: 封装数据…...
Pytorch论文实现之GAN-C约束鉴别器训练自己的数据集
简介 简介:这次介绍复现的论文主要是约束判别器的函数空间,作者认为原来的损失函数在优化判别器关于真样本和假样本的相对输出缺乏显式约束,因为在实践中,在优化生成器时,鉴别器对生成样本的输出会增加,但对真实数据保持不变,而优化鉴别器会导致其对真实数据的输出增加…...
vue3.x 的shallowReactive 与 shallowRef 详细解读
在 Vue 3.x 中,shallowReactive 和 shallowRef 是两个用于创建浅层响应式数据的 API。它们与 reactive 和 ref 类似,但在处理嵌套对象时的行为有所不同。以下是它们的详细解读和示例。 1. shallowReactive 作用 shallowReactive 创建一个浅层响应式对…...
MongoDB 常用命令速查表
以下是一份 MongoDB 常用命令速查表,涵盖数据库、集合、文档的增删改查、索引管理、聚合操作等场景: 1. 数据库操作 命令说明show dbs查看所有数据库use <db-name>切换/创建数据库(需插入数据后才会显示)db.dropDatabase()…...
DeepSeek崛起的本质分析:AI变局中的中国机会
DeepSeek崛起的本质分析:AI变局中的中国机会 1. 中国AI发展的大背景 近年来,全球AI技术竞争日趋白热化,而中国作为全球第二大经济体,在AI领域的投入和政策支持力度不断加大。大模型是AI产业的制高点,而美国对中国的高…...
Autojs: 使用 SQLite
例子 let db new SQLiteUtil("/sdcard/A_My_DB/sqlite.db");db.fastCreateTable("user_table",{name: "",online: false,},["name"] // 设置 name 为唯一, 重复项 不会添加成功 );// 新增数据的 ID let row_id db.insert("use…...
读书笔记 - 修改代码的艺术
读书笔记 - 修改代码的艺术 第 1 章 修改软件第 2 章 带着反馈工作系统变更方式反馈方式遗留代码修改方法 第 3 章 感知和分离伪协作程序模拟对象 第 4 章 接缝模型接缝 第 5 章 工具自动化重构工具单元测试用具 第 6 章 时间紧迫,但必须修改新生方法(Sp…...
element-plus树形数据与懒加载的实现
环境 vue版本: 2.6.14 需求 树形表格,默认返回当前登录人拥有权限的一个层级的数据,通过点击load懒加载获取下一层的数据,要求有新增、编辑、删除操作。 树类型的懒加载: 当row中包含children字段时,被…...
仿 Sora 之形,借物理模拟之技绘视频之彩
来自麻省理工学院、斯坦福大学、哥伦比亚大学以及康奈尔大学的研究人员携手开源了一款创新的3D交互视频模型——PhysDreamer(以下简称“PD”)。PD与OpenAI旗下的Sora相似,能够借助物理模拟技术来生成视频,这意味着PD所生成的视频蕴…...
【算法】快排
题目 快排 思路 如果输入为0或1直接返回;否则取一个基准值,可以取中间位置,如果输入是有序的可以避免时间过长,然后移动指针,先让i指针右移,如果小于基准值就继续右移,j指针左移同理。如果指…...
RedisTemplate存储含有特殊字符解决
ERROR信息: 案发时间: 2025-02-18 01:01 案发现场: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分钟过期作案动机: stringRedisTemplate继承了Redistemplate 使用的…...
Django REST Framework (DRF) 中用于构建 API 视图类解析
Django REST Framework (DRF) 提供了丰富的视图类,用于构建 API 视图。这些视图类可以分为以下几类: 1. 基础视图类 这些是 DRF 中最基础的视图类,通常用于实现自定义逻辑。 常用类 APIView: 最基本的视图类,所有其…...
Zotero PDF Translate插件配置百度翻译api
Zotero PDF Translate插件可以使用几种翻译api,虽然谷歌最好用,但是由于众所周知的原因,不稳定。而cnki有字数限制,有道有时也不行。其他的翻译需要申请密钥。本文以百度为例,进行申请 官方有申请教程: Zot…...
Redis离线安装
Linux系统Centos安装部署Redis缓存插件 参考:Redis中文网: https://www.redis.net.cn/ 参考:RPM软件包下载地址: https://rpmfind.net/linux/RPM/index.html http://rpm.pbone.net/ https://mirrors.aliyun.com/centos/7/os…...
五、k8s:容忍 存储卷
容忍: 即使节点上有污点,依然可以部署pod。 tolerations: operator: "Exists" 不指定key,表示容忍所有的污点 cordon和drain cordon: 直接标记节点为不可用,pod不能部署到该节点。新建的pod不会再部署到该节点&#…...
零售顶流三只松鼠如何重塑品牌营销新生态,寻找新的增长点?
在零售行业的变革浪潮中,三只松鼠作为休闲零食领域的代表品牌,面临着前所未有的机遇与挑战。在竞争激烈的零售市场中,三只松鼠以其突出的表现成为行业焦点。2024 年前三季度,营收 71.69 亿元,同比增长 56.46%ÿ…...
USC 安防平台之移动侦测
随着第四次科技革命的开启,AI技术获取了突飞猛进的发展,视频监控对应的视频分析技术也获取了巨大的发展。 还记得15年前采用人工提取特征做前景背景分离和提取,大部分依赖CPU,最多使用一下TI的DM642 DSP加速,开发难度…...
MySQL智障离谱问题,删了库确还存在、也不能再创建同名库
1、问题 今天跟后端朋友接毕设单子的时候,后端穿过来的【weather.sql】这个文件没弄好,导致这个【weather】数据库的数据是错的,因此我用datagrip的GUI界面直接右键删除,结果就是tmd删不掉,ok,我只能在那新…...
IIS asp.net权限不足
检查应用程序池的权限 IIS 应用程序池默认使用一个低权限账户(如 IIS_IUSRS),这可能导致无法删除某些文件或目录。可以通过以下方式提升权限: 方法 1:修改应用程序池的标识 打开 IIS 管理器。 在左侧导航树中&#x…...
pptx文档提取信息
目录 一、前言二、python-pptx提取核心代码三、LibreOffice 转换pdf再提取的核心代码一、前言 pptx文档提取解析常用的库。 如果只需要解析 .pptx 的文本、表格、图片,推荐使用 python-pptx(开源,轻量级)。 如果需要高性能、支持 .ppt、动画、格式转换,推荐 Aspose.Slid…...
深入理解Python字典(Dictionary):从基础操作到高级应用
深入理解Python字典(Dictionary):从基础操作到高级应用 flyfish 一、Python 字典(Dictionary)基本概念 1. 定义 Python 字典是一种可变、无序的数据结构,用于存储键值对(key - value pairs&…...
@RestController和@RequestBody注解含义
一、RestController (一)含义 RestController 是 Spring Framework 中的一个组合注解,主要用于简化创建 RESTful Web 服务的过程。 它结合了 Controller 和 ResponseBody 注解的功能,使得开发者可以更简洁地编写处理 HTTP 请求的…...
用deepseek学大模型04-模型可视化与数据可视化
deepseek.com: pytorch可视化工具 生成神经网络图 在 PyTorch 中,可视化神经网络结构的常用工具和方法有以下几种,以下将详细介绍它们的用法: 1. TensorBoard (PyTorch 官方集成) PyTorch 通过 torch.utils.tensorboard 支持 TensorBoard&a…...
C++ 设计模式-外观模式
外观模式的定义 外观模式是一种 结构型设计模式,它通过提供一个简化的接口来隐藏系统的复杂性。外观模式的核心思想是: 封装复杂子系统:将多个复杂的子系统或组件封装在一个统一的接口后面。提供简单接口:为客户端提供一个更简单、更易用的接口,而不需要客户端直接与复杂…...

