Ollama开启api服务并接入公网

ChainPray 发布于 7 天前 18 次阅读


安装

官网安装ollama,然后根据需求修改环境变量

  • Ollama默认安装在C盘,可以在Path中修改ollama项目文件夹路径来移动
  • 模型默认安装在C盘,可以在环境变量中设置`OLLAMA_MODELS`来修改模型存放路径

暴露API服务

Ollama api服务默认监听127.0.0.1:11434,而127.0.0.1是本地回环地址,这意味着只有本本机程序能访问;除此之外Ollama还设置了允许的跨域请求来源(CORS),而且都是本地来源,这会导致公网访问时CORS拒绝出现

综上,需要在环境变量中添加两个变量来修改ollama的这两个属性

  • OLLAMA_ORIGINS设置为* ,表示允许所有来源
  • OLLAMA_HOST设置为0.0.0.0:11434 ,表示监听所有ip来的请求

内网穿透

想要在公网上使用自己部署的ollama服务,要么直接购买一台算力云服务器,要么在本地部署然后通过frp穿透到公网。第一种显然不太现实,下面使用frp的方法使得能在公网访问自部署ollama服务

首先选择frp,可以使用诸如Sakura Frp等免费穿透服务,但是在有公网服务器和ip的情况下更推荐自部署frp穿透服务,笔者下面采用在云服务器上部署frp

安装frp

github release下载适用于自己版本的安装包,比如windows一般下载后缀windows_amd64.zip的压缩包

具体配置文件书写参考官方文档,特别注意如果云服务器安装了宝塔面板可以直接使用docker一键安装frp服务端

配置好本地11434穿透到<公网ip>:11434后访问<公网ip>:11434,页面出现Ollama is running,说明ollama服务穿透成功

使用API

笔者这里部署NextChat来使用ollama API进行webui对话,无他,vercel部署方便尔

点击Github页面中的Deploy按钮直接转到vercel部署,`OPENAI_API_KEY`随便写, `CODE`环境变量设置后记好,这个是用来做身份验证的

部署完成后点击Setting->Environment Variables来添加三个环境变量

  • HIDE_USER_API_KEY设置为1,不让用户输入自己的 API 密钥
  • BASE_URL设置为自己的Ollama公网URI,用来覆盖Openai API地址
  • CUSTOM_MODELS设置为`-all,deepseek-r1:14b,deepseek-r1:1.5b,deepseek-r1:32b`,-all后面填写本地ollama安装的模型,用英文逗号隔开

加完环境变量后重新deploy后打开页面,进行对话,会要求你输入秘钥,这个秘钥就是环境变量中的CODE,防止别人使用你的服务

安全

直接暴露api到公网上可能会被别人盗用,而且ollama本身没有提供秘钥验证功能,所以就需要我们自己加入秘钥验证功能

  1. 在云服务器上配置nigix反向代理并检查请求头的秘钥,匹配才能反代,同时防火墙关闭ollama端口(11434)的放行,使用二级域名80端口访问
  2. 本地或者服务器部署webui,同时关闭防火墙ollama端口的放行,使用localhost+端口方式调用ollama(因为NextChat基于nextjs框架,nextjs本身拥有api路由进行代理访问,所以localhost也是可以访问的),同时使用NextWeb自带的秘钥服务即可实现安全使用ollama
  3. 可以试试OpenWebUI,这个项目拥有精细权限和用户组,且针对Ollama的适配更好,可以利用上ollama大部分的api比如模型列表,拉取模型等等;同样这个项目需要本地或者云服务器部署才能实现安全访问
深圳大学腾讯创新俱乐部的一名TICer,目前致力于成为全栈工程师
最后更新于 2025-04-10