NAS飞牛N1部署NewAPI对接Ollama本地大模型
引言
很多NAS用户希望利用飞牛N1的闲置算力跑本地大模型,但不知道如何把模型暴露成标准的API接口。
本文介绍在飞牛N1上通过Docker部署NewAPI,并让它对接Ollama中已下载的模型,最终得到一个兼容OpenAI格式的本地API服务。
读完本文,你将能在局域网内通过API调用本地大模型,用于开发、测试或接入智能应用。
准备工作
检查系统环境
- 飞牛N1已安装飞牛OS(基于Debian/Ubuntu),并开启SSH或拥有终端权限。
- 确保磁盘空间充足,建议至少20GB剩余,用于存放Ollama模型和容器镜像。
- 确保网络通畅,能访问Docker Hub等镜像仓库(如果使用代理,请提前配置docker代理)。
安装Docker
如果没有安装Docker,通过以下命令安装(以飞牛OS为例):
sudo apt update
sudo apt install docker.io -y
sudo systemctl enable --now docker
安装后验证:docker --version 和 docker ps 不报错即可。
第一步:部署Ollama并拉取模型
Ollama是本地大模型运行框架,通过Docker部署很方便:
sudo docker run -d --gpus all -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
注意:如果飞牛N1没有NVIDIA显卡(比如是CPU版本),请去掉--gpus all,直接:
sudo docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
拉取一个模型(以qwen2:0.5b为例,轻量可跑):
sudo docker exec -it ollama ollama pull qwen2:0.5b
下载完成后,测试本地调用:
curl http://localhost:11434/api/generate -d '{"model": "qwen2:0.5b", "prompt": "你好"}'
如果返回带文本的JSON,说明Ollama正常。
第二步:部署NewAPI
NewAPI是一个开源API网关,支持对接Ollama、OpenAI、Claude等多种后端。
我们用Docker部署:
sudo docker run -d -p 3000:3000 --name new-api \
-e TZ=Asia/Shanghai \
-e REDIS_CONN_STRING=redis://localhost:6379/0 \
-e SESSION_SECRET=your_random_secret \
-e SQL_DSN="root:password@tcp(localhost:3306)/new_api?charset=utf8mb4&parseTime=True&loc=Local" \
-v /etc/new-api:/etc/new-api \
--restart always \
songquanpeng/one-api
需要先准备MySQL和Redis?其实NewAPI支持SQLite,省去额外数据库。更简单的部署方案是使用SQLite模式:
sudo docker run -d --name new-api \
-p 3000:3000 \
-e TZ=Asia/Shanghai \
-e SESSION_SECRET=change_this_secret \
-v new-api-data:/data \
--restart always \
songquanpeng/one-api
这样会使用SQLite数据库,无需额外服务。
启动后访问 http://飞牛N1的IP:3000,默认用户名 root,密码 123456(请立即修改)。
第三步:配置NewAPI对接Ollama
- 登录后台,点击“渠道” -> “添加渠道”。
- 类型选择 Ollama。
- 名称随便填(如“本地Ollama”)。
- 地址填写
http://host.docker.internal:11434(因为容器内访问宿主机Ollama时用host.docker.internal,如果Ollama也在Docker中,但注意:Ollama容器暴露端口到宿主机,所以使用宿主机IP也可以,例如http://192.168.1.x:11434)。 - 模型列表填写你已拉取的模型名,多个用逗号分隔,例如
qwen2:0.5b。 - 其他保持默认,保存。
现在回到“令牌”页面,创建一个新的令牌(API Key),选择刚才添加的渠道(或所有渠道),生成密钥。
效果验证
用curl测试NewAPI是否正常代理到Ollama:
curl http://飞牛N1的IP:3000/v1/chat/completions \
-H "Authorization: Bearer 你的令牌" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2:0.5b",
"messages": [{"role": "user", "content": "Hello"}]
}'
如果返回类似OpenAI的响应,说明对接成功。
避坑指南
- Ollama容器找不到:确保Ollama容器名称正确,或者在同一个docker网络里。可以用
docker network create ai-net将两个容器都加入,然后用容器名通信。 - 内存不足:小模型(如0.5B)通常2GB内存可跑,若频繁OOM,可换更小模型(如tinyllama)。
- 端口冲突:将宿主机端口3000改为其他端口(如3001),避免与已有服务冲突。
- NewAPI后台报连接失败:检查Ollama地址是否可通:在NewAPI容器内
curl http://host.docker.internal:11434。若不行,改用局域网IP。
高频问题解答
Q:NewAPI支持流式输出吗?
A:支持,只要Ollama本身支持流式,NewAPI默认开启流式。
Q:如何添加更多模型?
A:先在Ollama中pull新模型(如 docker exec -it ollama ollama pull llama3.2),然后在NewAPI后台编辑渠道,在“模型列表”中追加模型名,保存即可。
Q:如何在局域网其他设备调用?
A:确保飞牛N1防火墙允许3000端口,其他设备用 http://飞牛N1的内网IP:3000 即可调用。
总结
通过以上四步,你已在飞牛N1上实现了NewAPI对接Ollama的本地大模型API服务。
下面可以根据需要调整模型大小、配置密钥权限,或者将NewAPI接入到你的应用、聊天前端中。
遇到问题优先回看避坑部分,确保每一步都正确执行。