自春节以来,DeepSeek爆火,以至于官网都经常出现“服务器繁忙请稍后重试”,并且一度关闭了API注册和充值入口。好消息是可以本地部署使用,数据安全性和隐私更有保障。本文简要介绍使用Ollama和Open-WebUI本地部署DeepSeek。

1. 安装Ollama和运行模型

Ollama 是一个 开源免费大语言模型服务工具,能帮助用户快速在本地部署和运行大语言模型。它简单易用,支持多平台,功能齐全,更重要的是 提供丰富的模型供用户一键下载和运行。目前爆火的 DeepSeek系列模型,包括DeepSeek R1满血版、DeepSeek R1蒸馏版以及DeepSeek V3版本,都可以一条命令启动和运行。

安装Ollama很简单,一条命令就可以搞定:

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

但是,由于国内的网络环境你懂的,脚本中的 Ollama 安装包无法下载(比如本人所在网络就不行)。此时你需要先下载 install.sh 脚本,然后修改脚本使用代理进行下载。这时候之前部署的 PHP开发的Github文件下载加速项目 就派上用场了:搜索脚本中的 https,前面加上 https://gh.2i.gs/,就能正常下载和使用了。

安装好 Ollama 后,接着就可以运行 DeepSeek 的大模型了。网上给出的 DeepSeek- R1本地部署的硬件要求如下图,自己可根据硬件情况选择相应模型:

DeepSeek-R1本地部署机器要求
DeepSeek-R1本地部署机器要求

本人使用的服务器有4张NVIDIA V100显卡和500G内存,理论上来说部署DeepSeek R1满血版是没有问题的。但是考虑到硬盘和其他服务使用,选择了DeepSeek R1 70B版本。启动和运行命令是:

ollama run deepseek-r1:70b

初次运行会下载模型文件,启动后会出现提示符,可直接输入问题进行聊天互动:

Ollama启动DeepSeek界面
Ollama启动DeepSeek界面

此时打开浏览器访问 http://localhost:11434,会看到页面上显示 “Ollama is running”,说明已经成功部署好了Ollama。

如果你是本地部署,此时已经使用 http://localhost:11434 和模型id(例如 deepseek-r1:70b)这两个信息在 ContineCLINECherry Studio 等工具中使用。例如Visual Studio Code(VS Code)中的Contine插件配置文件示例为:

{
  "models": [
    {
      "apiBase": "http://127.0.0.1:11434/",
      "model": "deepseek-r1:70b",
      "provider": "ollama",
      "title": "ollama"
    }
  ],
 ... other configs

CLINE插件配置截图:

CLINE配置使用Ollama
CLINE配置使用Ollama

如果你希望远程访问,则还需要进一步进行设置。

2. Ollama运行高级设置

1. 除了DeepSeek系列,Ollama支持更多模型,具体可以到官网搜索: https://ollama.com/search,网页上会介绍模型的详细情况和运行命令。

2. Ollama默认监听 127.0.0.1,因此只能本机使用。如果你希望让其它机器或者 docker 容器连接,则需要让其监听其它ip地址的流量,例如允许所有ip的连接:0.0.0.0。一种修改方法是修改启动脚本,一般路径是 /etc/systemd/system/ollama.service,添加 Environment=”OLLAMA_HOST=0.0.0.0:11434″ 一行,修改后的文件类似于:

[Unit]
Description=Ollama Service
After=network-online.target

[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/usr/local/cuda-12.6/bin"
Environment="OLLAMA_HOST=0.0.0.0:11434"
Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

[Install]
WantedBy=default.target

3. 默认Ollama会使用所有可用的GPU,如果你希望只使用某些GPU,可以通过环境变量设置。上面的配置文件显式指定了使用编号为0,1,2,3的GPU:Environment="CUDA_VISIBLE_DEVICES=0,1,2,3"

4. 如果你的服务器有公网ip并且修改了Ollama监听 0.0.0.0请务必设置网络访问授权!Ollama默认没有访问授权,因此所有能连接到服务器和端口的人都可以使用你部署的模型!为了安全以及避免资源被滥用,请严格限制访问权限!

3. 搭建Open WebUI使用网页聊天

Open WebUI是一个自托管的人工智能平台,支持各种大语言模型(LLM),自然是支持上文说的Ollama。通过Open WebUI,我们可以搭建一个类似于ChatGPT的网站聊天,支持多人、多模型的使用。

通过 docker 的方式搭建Open WebUI非常简单,一条命令搞定:

docker run -d -p 8080:8080 --add-host=host.docker.internal:host-gateway \
-v open-webui:/app/backend/data --name open-webui --restart always \
ghcr.io/open-webui/open-webui:main

上述命令中,你需要修改的便是映射的端口(比如我使用8080)和挂载文件夹(命令中是open-webui)。

也可以通过 python 启动:

#官方推荐python 3.11,但是本人测试python 3.12也正常没问题。如果你需要python 3.11,建议使用conda管理和安装:

# 下载和安装miniconda

wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash ~/Miniconda3-latest-Linux-x86_64.sh
conda init

# 创建python 3.11环境

conda create -n open-webui python=3.11.0

首先 pip 安装open-webui: pip install open-webui

然后开启open-webui服务:open-webui serve --port 8080,此时会输出类似如下界面:

open-webui启动界面
open-webui启动界面

需要注意的是,无论是 docker 还是 pip 方式,open-webui第一次运行的时候都巨慢!此时你打开浏览器访问 http://localhost:8080 (8080改成你的端口号)会得到一片空白!根据日志信息,第一次启动耗时将近4分钟,这是因为首次会下载一些东西,但是国内的网络你懂的。

Open WebUI启动之后,会出现管理员注册页面。输入你的邮箱和密码,这就创建了管理员账号。Open WebUI管理员账号创建完了后,你可能接着又迎来一次空白页面,让人很懵逼!这是因为默认开启了OpenAI的API,尝试会去连接。等几分钟后才会出现预期的聊天界面。

如果你的服务器在国内,建议你第一时间进入管理后台,把OpenAI的API关闭,否则经常会遇到页面空白的情况:

open-webui禁用OpenAI API
open-webui禁用OpenAI API

接着,你就可以正常的在Open WebUI上和部署的各个模型聊天对话了:

open-webui聊天界面
open-webui聊天界面

如果你在内网搭建让其他人也能使用,则可以开启用户注册功能。如果不想麻烦的一个个激活,可以设置默认用户角色为用户:

Open WebUI运行用户注册使用
Open WebUI运行用户注册使用

最后就是默认的模型都是私有的,也就是管理员可以用。要模型可以给其他人用,在模型标签页点击要放开访问的模型,将可见性改成“Public”即可:

open-webui修改模型权限
open-webui修改模型权限

由于搭建DeepSeek是为了数据隐私和安全,因此没有接入联网搜索功能。如果需要联网搜索,请参考官网教程。但是对于支持的供应商,我对国内网络能否正常使用持怀疑态度。

总结

本文简要介绍了使用Ollama部署和使用deepseek r1及其他模型,同时给出使用Open WebUI搭建又用户管理功能聊天网站的教程。对于搭建和部署过程中的一些坑,本文根据经验解释了原因和解决办法,希望能帮到遇到类似问题的网友。