DeepSeek本地部署,通过One‑API对外提供服务完整
很多团队想用DeepSeek的私有化能力,又不希望每个业务都直接对接底层模型端口。
比较通用的做法是:先在服务器上把DeepSeek跑起来,再用One-API做统一对外接口,这样上层只需要拿OpenAI格式的 key 就能调用。
本文会从零开始,把环境准备、本地部署、One-API接入和踩坑验证一次讲完,照着操作就能跑通。
先把环境准备好
部署前先确认三件事:
- 显卡与显存:推荐NVIDIA GPU,显存8GB以上可跑7B量化模型,跑14B以上建议24GB显存。纯CPU也能跑,但速度会很慢,只适合体验。
- 操作系统:Ubuntu 22.04 / Debian 12 均可,本文以Ubuntu为例;需要预装Docker和NVIDIA Container Toolkit,如果只用Ollama不装Docker也可以。
- 磁盘空间:模型文件不小,7B量化约4-6GB,14B约9-12GB,请提前留出足够空间。
建议安装NVIDIA驱动后,用 nvidia-smi 确认驱动正常,再继续后面的操作。
本地部署DeepSeek并启动模型服务
这里用Ollama做模型运行工具,对新手最友好,一条命令就能装好。
curl -fsSL https://ollama.com/install.sh | sh
安装完成后,拉取DeepSeek模型。
以7B量化版为例:
ollama pull deepseek-r1:7b
下载完成后,启动Ollama服务:
ollama serve
默认监听 127.0.0.1:11434,先本地测试一下:
curl http://localhost:11434/api/chat -d '{"model":"deepseek-r1:7b","messages":[{"role":"user","content":"你好"}]}'
能正常返回内容,说明DeepSeek已经跑起来了。
随后把它接入One-API。
安装One-API并添加DeepSeek渠道
One-API可以用Docker快速部署,执行:
docker run --name one-api -d --restart always \
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-v /data/one-api:/data \
justsong/one-api
启动后,浏览器打开 http://服务器IP:3000,初始账号密码是 root / 123456,首次登录后记得立即修改。
进入后台后,在“渠道”里新建一个渠道:
- 类型:选 Ollama(如果没有就选OpenAI兼容,地址填Ollama地址)
- 地址:
http://host.docker.internal:11434或http://172.17.0.1:11434,具体取决于容器网络 - 密钥:Ollama本身不校验,随便填一个,比如
ollama - 模型:填写
deepseek-r1:7b,多个模型用逗号分隔
如果你是把Ollama和One-API装在同一台机器上,注意不要写 localhost,因为Docker容器里的 localhost 指向容器本身。
最简单的办法是让One-API容器跑在host网络:
docker run --name one-api -d --restart always --network host \
-e TZ=Asia/Shanghai \
-v /data/one-api:/data \
justsong/one-api
这样渠道地址直接填 http://127.0.0.1:11434 即可。
通过One-API调用DeepSeek接口
添加渠道后,在“令牌”里生成一个访问令牌,然后就可以用OpenAI SDK或curl调用One-API暴露的地址。
curl http://服务器IP:3000/v1/chat/completions \
-H "Authorization: Bearer 你的令牌" \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-r1:7b","messages":[{"role":"user","content":"写一段Python代码"}]}'
如果返回正常的内容结构,说明整个链路已经通了。
之后你只需要把API地址改成 http://OneAPI服务器:3000,key换成One-API的令牌,就能直接服务业务。
容易踩的坑和验证建议
很多人在这个环节遇到问题,这里列几个高频坑:
- Ollama没监听外网:Ollama默认只监听127.0.0.1,如果One-API在另一台机器,需要设置
OLLAMA_HOST=0.0.0.0再启动。 - Docker网络不通:One-API容器内访问宿主机,推荐用
--network host方式,省去容器网络配置。 - 模型名称不一致:One-API渠道里的模型名必须和Ollama里的完全一致,可以执行
ollama list查看。 - 请求超时:DeepSeek生成长文较慢,建议在One-API中适当调大超时时间,或让业务端降低报错容忍度。
验证时除了看返回内容,还可以在One-API后台的“日志”里查看请求详情。
如果渠道显示红色异常,先检查网络地址和模型名是否写对。
按上面的步骤操作,DeepSeek本地部署并通过One-API对外服务应该能顺利跑通。
如果你用的是云服务器,记得在安全组放行3000端口,但不要无限制放行11434端口。
后续想换模型或加其他服务商渠道,直接在One-API后台继续添加即可。