当前位置: 首页 > news >正文

ollama和open-webui部署ds

博客地址:
ollama和open-webui部署ds

引言

最近,deepseek是越来越火,我也趁着这个机会做了下私有化部署,我这边使用的ollama和 open-webui实现的web版本

ollama

简介

Ollama 是一个开源的工具,专门用于简化机器学习和 AI 模型的部署。它提供了一个统一的平台,允许你通过命令行工具创建、管理和更新模型。无论你是想在本地开发环境中运行模型,还是将其部署到云端,Ollama 都可以简化这一过程。

Ollama 支持多种常见的机器学习模型框架,包括但不限于 TensorFlow、PyTorch、Hugging Face Transformers 等,此外还支持类似 DeepSeek 这种自定义的搜索引擎模型。

核心特性

  • 易于使用的命令行界面:Ollama 提供了简单直观的命令行工具,可以通过几条命令就完成模型的创建、启动、更新等操作。
  • 环境隔离:Ollama 可以为每个模型提供独立的运行环境,避免了不同模型之间的依赖冲突。
  • 跨平台支持:无论你是使用 Linux、Mac 还是 Windows,Ollama 都可以无缝运行。
  • 自动更新:Ollama 会自动为模型提供更新,确保你使用的是最新的版本。
  • 高效的资源管理:通过 Ollama,你可以有效地管理计算资源,包括 CPU 和 GPU 的使用,确保模型运行的高效性。

安装

Linux

使用root用户执行下面的命令:

curl -fsSL https://ollama.com/install.sh | sh

windows

直接下载安装包:windows安装包

macos

下载压缩包:https://ollama.com/download/Ollama-darwin.zip

环境变量

为了Ollama能够对外提供服务,需要设置OLLAMA_HOST

在Linux上设置

如果Ollama作为systemd服务运行,通过systemctl设置环境变量:

  1. 使用systemctl edit ollama.service命令编辑systemd服务,将打开一个编辑器。

  2. 对每个环境变量,在[Service]部分添加两行行Environment:

    Environment="OLLAMA_HOST=0.0.0.0"
    Environment="OLLAMA_ORIGINS=*"
    

    红框内为后加的两行代码

  3. 保存并退出。

  4. 重新加载systemd并重启Ollama:

    systemctl daemon-reload
    systemctl restart ollama
    

在Windows上设置

在Windows上,Ollama会继承您的用户和系统环境变量。

  1. 首先通过任务栏图标退出Ollama,
  2. 从控制面板编辑系统环境变量,
  3. 为OLLAMA_HOST、OLLAMA_ORIGINS等编辑或新建变量。
  4. 点击OK/Apply保存,
  5. 然后从新的终端窗口运行ollama。

启动ollama服务

执行命令

systemctl start ollama

部署 DeepSeek

通过https://ollama.com/library找到对应的模型,点进模型有拉取运行的命令,比如说

deepseek-r1:7b的模型,执行下面的命令就可以拉取并运行其模型:

ollama run deepseek-r1

下面是操作截图,如果你已经拉取并运行模型了,可以直接进行open-webui的步骤了

https://ollama.com/library开始,页面如下:

点击你需要的模型deepseek-r1,点击后页面如下:

左侧红框是你需要下载的版本,这里默认就是7b版本了,如果你需要其他版本可以通过下拉列表切换

右侧红框就是你需要执行的命令,执行该命令就可以拉取并运行其模型

open-webui

现在ds已经可以用了,但是还缺少应该web界面,我这边选择的是open-webui,可以直接通过浏览器访问

docker-compose安装open-webui

这个就相对简单了,我使用的docker-compose部署,下面是docker-compose文件:

services:open-webui:image: ghcr.io/open-webui/open-webui:maincontainer_name: open-webuivolumes:- ./data:/app/backend/dataports:- "8088:8080"restart: always

不过这个启动后要等很久的时间,原因是默认的docker镜像是以openai为主的,但是默认情况下没有配,所以等的时间比较久。

出现下图中最后一行就是部署好了:

open-webui配置 ollama+deepseek

看到http://0.0.0.0:8080这个说明可以在浏览器中打开了,注意,浏览器打开时,端口是你docker-compose里面引出的,不一定是8080,我这个docker-compose端口就是8088,接下来浏览器输入http://ip:8088/打开,页面如下:

首次使用需要创建管理员账号,点击开始使用进行创建,页面如下:

内容输入完,点击”创建管理员账号“,因为默认的openai,这一步一样的需要等很长一段时间,不要着急,慢慢等,出现下面的界面就可以进行下一步了:

点击红框的按钮后,依次按照下面图片的顺序进行操作

这地方注意下,1那地方的如果你不使用OpenAI API,一定要想我上面截图中那样给关了,要不之后再进页面,还是需要等很长一段时间,然后设置好ollama的连接,按照我文档中安装的话,填入的内容就是http://IP:11434,全部填完后保存

保存后右上角出现提示,这时候就已经完全配好了,接下来,可以重新打开页面http://IP:8088/看看效果了

页面如下,打开后页面直接进入了,而且左上角的模型也默认加载出来了,如果你的ollama安装的多个模型,可以通过红框的下拉列表切换

最后,就是看看提问效果了,当然,我这个服务器配置不行,速度一般般,但是提问的结果已经显示出来了

相关文章:

ollama和open-webui部署ds

博客地址: ollama和open-webui部署ds 引言 最近,deepseek是越来越火,我也趁着这个机会做了下私有化部署,我这边使用的ollama和 open-webui实现的web版本 ollama 简介 Ollama 是一个开源的工具,专门用于简化机器学…...

泛微Ecode新增Button调用服务器中的JSP页面里的方法

前言 前端Ecode调用 后端接口编写 JSP文件方法 总结 前言 因为我们是从之前E8版本升级到E9的,所以会有一些接口是通过jsp文件来实现前后端调用的,这里介绍的就是如果你有接口是写在jsp文件里面调用的,但是你又想在Ecode中调用的对应的接…...

LVS+Keepalived高可用群集配置案例

以下是一个 LVSKeepalived 高可用群集配置案例: 1、环境准备 LVS 主调度器(lvs1):IP 地址为 192.168.8.101,心跳 IP 为 192.168.4.101LVS 备调度器(lvs2):IP 地址为 192.168.8.102…...

杰发科技AC7801——滴答定时器获取时间戳

1. 滴答定时器 杰发科技7801内部有一个滴答定时器,该定时器是M0核自带的,因此可以直接用该定时器来获取时间戳。 同样,7803也可以使用该方式获取时间戳。 2. 滴答定时器原理 SysTick是一个24位的递减计数器,它从预设的重装载值…...

Pycharm使用matplotlib出现的问题(1、不能弹出图表 2、图表标题中文不显示)

Pycharm使用matplotlib出现的问题 问题1:Pycharm调试时出现:AttributeError: module backend_interagg has no attribute FigureCanvas. Did you mean: FigureCanvasAgg? 排查原因:可能是由于matplotlib后端设置不正确或与运行环境不兼容引…...

Cursor+pycharm接入Codeuim(免费版),Tab自动补全功能平替

如题,笔者在Cursor中使用pycharm写python程序,试用期到了Tab自动补全功能就不能用了,安装Codeuim插件可以代替这个功能。步骤如下: 1. 在应用商店中搜索扩展Codeuim,下载安装 2. 安装完成后左下角会弹出提示框&#x…...

spring--ApplicationContext和BeanFactory的区别(源码)

ApplicationContext 和 BeanFactory 是 Spring 框架中两个核心的接口,它们都用于管理和访问 Spring 容器中的 Bean,但在功能和使用场景上有显著的区别。以下是它们的详细对比,并结合源码进行讲解。 一、 功能对比 特性BeanFactoryApplicati…...

HTMLS基本结构及标签

HTML5是目前制作网页的核心技术&#xff0c;有叫超文本标记语言。 基本结构 声明部分位于文档的最前面&#xff0c;用于向浏览器说明当前文档使用HTML标准规范。 根部标签位于声明部分后&#xff0c;用于告知浏览器这是一个HTML文档。< html>表示文档开始&#xff0c;&l…...

【蓝桥杯嵌入式】各模块学习总结

系列文章目录 留空 文章目录 系列文章目录前言一、LED模块1.1 赛题要求1.2 模块原理图1.3 编写代码1.4 赛题实战 二、LCD模块2.1 赛题要求2.2 模块原理图2.3 编写代码2.4 赛题实战 三、按键模块3.1 赛题要求3.2 模块原理图3.3 编写代码3.4 赛题实战 四、串口模块4.1 赛题要求4…...

Vue的项目创建以及项目目录与组合式API

一.创建Vue 1.Vue-CLI:创建Vue的脚手架工具 2.Create-vue&#xff1a;是Vue官方提供的脚手架之一,底层采用官方自主研发的vite,快捷&#xff0c;开发方便。 3.准备工作:系统中需要安装nodejs环境&#xff0c;在该环境中提供npm包管理器 4.创建Vue项目的命令:npm init vuela…...

数据结构秘籍(二)图(含图的概念、存储以及图的两大搜索)

1 引言 线性数据结构的元素满足唯一的线性关系&#xff0c;每个元素&#xff08;初第一个和最后一个外&#xff09;只有一个直接前趋和一个直接后继。树形数据结构的元素之间有着明显的层次关系。但是图形结构的元素之间的关系是任意的。 什么是图&#xff1f; 简单来说&…...

前端八股——JS+ES6

前端八股&#xff1a;JSES6 说明&#xff1a;个人总结&#xff0c;用于个人复习回顾&#xff0c;将持续改正创作&#xff0c;已在语雀公开&#xff0c;欢迎评论改正。...

Python 课堂点名桌面小程序

一、场景分析 闲来无事&#xff0c;老婆说叫我开发一个课堂点名桌面小程序&#xff0c;给她在课堂随机点名学生问问题。 人生苦短&#xff0c;那就用 Python 给她写一个吧。 二、依赖安装 因为要用到 excel&#xff0c;所以安装两个依赖&#xff1a; pip install openpyxl…...

【Java基础】Java中new一个对象时,JVM到底做了什么?

Java中new一个对象时&#xff0c;JVM到底做了什么&#xff1f; 在Java编程中&#xff0c;new关键字是我们创建对象的最常用方式。但你是否想过&#xff0c;当你写下new MyClass()时&#xff0c;Java虚拟机&#xff08;JVM&#xff09;到底在背后做了哪些工作&#xff1f;今天&…...

C#中的字典怎么使用?

在C#中&#xff0c;Dictionary<TKey, TValue> 是一个泛型集合类&#xff0c;用于存储键值对&#xff08;key-value pairs&#xff09;。它提供了快速的查找、插入和删除操作&#xff0c;适合需要根据键快速查找值的场景。以下是 Dictionary 的基本用法和常见操作&#xf…...

vue框架后遗症∶被遗忘的dom操作

用多了vue、react等前端框架&#xff0c;不得不说用数据驱动视图来开发真的很香&#xff0c;但是也免不了会有不用这些框架的项目&#xff0c;dom操作还是很有必要的&#xff0c;一开始学习网页设计的时候就教过&#xff0c;后面一直开发项目基本上用框架。虽然有些想不起来了&…...

进程 ─── linux第10课

目录 回顾上一节 进程 基本概念 描述进程 - PCB task_struct - PCB的一种 task_ struct内容分类 组织进程 下面来介绍task_struct内部 PID 和PPID 子进程与父进程 getpid()和getppid() 杀进程 exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过sy…...

线性模型 - 支持向量机

支持向量机&#xff08;SVM&#xff09;是一种用于分类&#xff08;和回归&#xff09;的监督学习算法&#xff0c;其主要目标是找到一个最佳决策超平面&#xff0c;将数据点分为不同的类别&#xff0c;并且使得分类边界与最近的数据点之间的间隔&#xff08;margin&#xff09…...

MyBatis-Plus注解配置:@TableName、@TableId、@TableField

MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。MyBatis-Plus 提供了一系列注解,用于简化数据库表与实体类之间的映射关系。以下是 @TableName、@TableId 和 @TableField 这三个常用注解的配置和使用说明。 官方文档:…...

DeepSeek接入问题-Xshell5连接Ubuntu22失败解决方案

项目场景&#xff1a; deepseek部署常用系统Ubuntu系统&#xff0c; xshell5连接Ubuntu22遇到如下问题&#xff1a; 问题描述 xshell5连接Ubuntu22遇到如下问题&#xff1a; Connecting to 172.16.46.80:22... Could not connect to 172.16.46.80 (port 22): Connection fa…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Day131 | 灵神 | 回溯算法 | 子集型 子集

Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a; 笔者写过很多次这道题了&#xff0c;不想写题解了&#xff0c;大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

渲染学进阶内容——模型

最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

Cloudflare 从 Nginx 到 Pingora:性能、效率与安全的全面升级

在互联网的快速发展中&#xff0c;高性能、高效率和高安全性的网络服务成为了各大互联网基础设施提供商的核心追求。Cloudflare 作为全球领先的互联网安全和基础设施公司&#xff0c;近期做出了一个重大技术决策&#xff1a;弃用长期使用的 Nginx&#xff0c;转而采用其内部开发…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

Web后端基础(基础知识)

BS架构&#xff1a;Browser/Server&#xff0c;浏览器/服务器架构模式。客户端只需要浏览器&#xff0c;应用程序的逻辑和数据都存储在服务端。 优点&#xff1a;维护方便缺点&#xff1a;体验一般 CS架构&#xff1a;Client/Server&#xff0c;客户端/服务器架构模式。需要单独…...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!

本文介绍了一种名为AnomalyAny的创新框架&#xff0c;该方法利用Stable Diffusion的强大生成能力&#xff0c;仅需单个正常样本和文本描述&#xff0c;即可生成逼真且多样化的异常样本&#xff0c;有效解决了视觉异常检测中异常样本稀缺的难题&#xff0c;为工业质检、医疗影像…...

【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅

目录 前言 操作系统与驱动程序 是什么&#xff0c;为什么 怎么做 system call 用户操作接口 总结 前言 日常生活中&#xff0c;我们在使用电子设备时&#xff0c;我们所输入执行的每一条指令最终大多都会作用到硬件上&#xff0c;比如下载一款软件最终会下载到硬盘上&am…...