New API × 雷池WAF:打造完全由你掌控的数据的AI中转网关

我经常遇见手上有多个Apikey但是会出现协议不一致,而且需要频繁切换api地址等问题。用别人的中转站?方便是方便,但你的每一条数据都要经过别人服务器,你甚至不知道它背后映射的究竟是什么模型。

基于此,在手头上有闲置服务器资源的情况下还是自建比较适合我自己。既能统一协议、告别地址切换,又能把数据牢牢攥在手里。

New API安装与配置

文档基于 RedHat 系 Rocky Linux 10.1 编写,安装软件包的命令与 Debian 系(如 Ubuntu)有所不同,请根据实际环境调整。

配置前置条件

先更新系统并安装基础工具

1
2
3
4
5
#更新系统
sudo dnf update -y

#安装基础工具
sudo dnf install -y vim git

添加阿里云 Docker CE 源

1
sudo dnf config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装Docker

1
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

配置Docker镜像源

1
vim /etc/docker/daemon.json
1
2
3
4
5
6
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.m.daocloud.io"
]
}

启动并设置开机自启Docker

1
systemctl enable --now docker

可以Docker Pull一下测试镜像源是否可用

image-20260510163230255

安装New API

Clone项目 并进入目录

1
2
git clone https://github.com/QuantumNous/new-api.git
cd new-api

配置Docker compose 配置文件(主要是为了改密码 改掉弱口令 记得把所有123456的弱口令批量替换成强密码

1
vim docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
version: '3.4' # For compatibility with older Docker versions

services:
new-api:
image: calciumion/new-api:latest
container_name: new-api
restart: always
command: --log-dir /app/logs
ports:
- "3000:3000"
volumes:
- ./data:/data
- ./logs:/app/logs
environment:
- SQL_DSN=postgresql://root:123456@postgres:5432/new-api # ⚠️ IMPORTANT: Change the password in production!
- REDIS_CONN_STRING=redis://:123456@redis:6379 # ⚠️ IMPORTANT: Change the password in production!
- TZ=Asia/Shanghai
- ERROR_LOG_ENABLED=true # 是否启用错误日志记录 (Whether to enable error log recording)
- BATCH_UPDATE_ENABLED=true # 是否启用批量更新 (Whether to enable batch update)
- NODE_NAME=new-api-node-1 # 节点名称,用于审计日志中标识节点身份;多节点/容器部署时建议设置 (Node name used in audit logs; recommended when running multiple instances or in containers)

depends_on:
- redis
- postgres
networks:
- new-api-network
healthcheck:
test: ["CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' || exit 1"]
interval: 30s
timeout: 10s
retries: 3

redis:
image: redis:latest
container_name: redis
restart: always
command: ["redis-server", "--requirepass", "123456"] # ⚠️ IMPORTANT: Change this password in production!
networks:
- new-api-network

postgres:
image: postgres:15
container_name: postgres
restart: always
environment:
POSTGRES_USER: root
POSTGRES_PASSWORD: 123456 # ⚠️ IMPORTANT: Change this password in production!
POSTGRES_DB: new-api
volumes:
- pg_data:/var/lib/postgresql/data
networks:
- new-api-network

volumes:
pg_data:

networks:
new-api-network:
driver: bridge

启动Docker compose

1
docker compose up -d

image-20260510165120637

然后看一下docker容器状态 全都是up就没问题啦

1
docker ps -a

image-20260510170313418

用浏览器打开对应机器的3000端口 注意一下防火墙会不会拦截

image-20260510170403954

然后设置好管理员账户 根据自己需求选择功能 完成初始化就好啦

image-20260510170449327

配置New API

增加中转模型 先登录后台 依次点击 渠道管理 添加渠道 我这里以英伟达Api为例子 填入Api地址和apikey

image-20260510174136441

然后点击获取模型列表 将你需要的模型选入 看你的需求选择即可 最后点击提交

image-20260510174323761

然后点击测试 测一下这些接口是否能用

image-20260510222149485

测试一下中转效果

因为添加的模型都是openai协议的 尝试获得一个该平台的apikey

image-20260510235521289

然后复制apikey 到claude code进行测试即可 url设置到根就可以用内网测试的时候 对话测试一下

image-20260510235634536

进行一下非对话交互也没问题!

image-20260510235840316

配置雷池WAF

安装WAF

直接使用命令一键安装即可

1
sudo bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"

然后跟随指示安装即可 也是非常的方便

image-20260511000233754

等到显示了默认密码以及url 打开浏览器登录即可

image-20260511000833522

配置WAF

点击防护应用 添加一个防护 根据你自己需求添加即可 把上游设置成本机的3000端口 对外暴露端口根据你自己需求设置即可

image-20260511134928008

然后再访问你设置好的url 进行连接测试 发现没问题!

image-20260511135147883

然后把需要防护的自行打开即可 主要是起到一个日志记录 以及简单的防护

image-20260511135413617