后端
Axum、SeaORM、PostgreSQL、Redis、调度、计费、监控和管理接口。
自托管 AI 网关
Hook 为团队提供私有化网关,用于统一供应商路由、令牌策略、钱包计费、用量记录和运行监控,覆盖 OpenAI 兼容、Claude 与 Gemini 接口。
用户通过 Hook 令牌访问 /v1 或 /v1beta。Hook 会按模型、供应商、分组、钱包余额和权限策略完成路由,然后记录用量、计费和运行状态。
Axum、SeaORM、PostgreSQL、Redis、调度、计费、监控和管理接口。
Next.js、React、MUI 和 TypeScript,提供用户控制台与管理后台。
供应商管理、OpenAI 兼容代理、额度控制、请求记录和运营监控。
提供 OpenAI 风格 /v1 和 Gemini 风格 /v1beta,覆盖聊天、Responses、Claude Messages、图片、Embedding、Rerank、音频、Moderations 和 Realtime。
管理供应商、端点、上游 API Key、模型绑定、模型成本、冷却释放和模型连通性测试。
控制用户令牌、管理员令牌、RBAC 角色、菜单、API 权限、导航权限、分组和模型访问策略。
跟踪钱包、余额、流水、使用记录、活跃请求、模型状态检查、定时任务和系统健康。
稳定版推荐使用 Docker Compose 预构建 GHCR 镜像部署。它会启动 PostgreSQL、Redis 和 ghcr.io/zzispp/hook:latest,执行迁移,并在 http://127.0.0.1:5555 提供前端和 API。
git clone https://github.com/zzispp/Hook.git
cd Hook
HOOK_COMPOSE_FILES=docker-compose.prebuilt.yml ./deploy.sh
./deploy.sh 会创建 .env,要求输入管理员用户名、邮箱和密码,并自动生成 PostgreSQL 密码、JWT secret 和 provider key secret。
稳定版会发布 latest 和版本 tag。main 分支构建会发布 edge 和 nightly。
HOOK_IMAGE_TAG=v1.0.1 HOOK_COMPOSE_FILES=docker-compose.prebuilt.yml ./deploy.sh如果你希望在服务器上从当前源码构建镜像,可以使用 Source Build 部署。
git clone https://github.com/zzispp/Hook.git
cd Hook
./deploy.shdocker compose --env-file .env -f docker-compose.prebuilt.yml logs -f hook
docker compose --env-file .env -f docker-compose.prebuilt.yml ps
docker compose --env-file .env -f docker-compose.prebuilt.yml downdocker compose down 只停止容器,不删除 Docker named volumes。只有明确要删除部署数据时才使用 docker compose down -v。
预构建镜像 Docker Compose 部署后,在部署目录直接运行更新脚本。
HOOK_COMPOSE_FILES=docker-compose.prebuilt.yml ./update.sh
update.sh 会拉取最新的 ghcr.io/zzispp/hook:${HOOK_IMAGE_TAG:-latest} 镜像,拉取 PostgreSQL 和 Redis 基础镜像,并重建容器。它不会删除 Docker named volumes。
Source Build 部署可执行 ./update.sh。它会执行 git pull --ff-only,使用当前源码重新构建 Hook 镜像并重建容器。
Release 资产包含 Linux 与 macOS 二进制平台包、install.sh 和 SHA256SUMS。二进制包适合 PostgreSQL 与 Redis 已经由外部托管的部署方式。
curl -fsSL https://github.com/zzispp/Hook/releases/latest/download/install.sh | sudo bash
安装脚本会校验下载的包,安装到 /opt/hook/releases/<version>,更新 /opt/hook/current,写入 /etc/hook/config.example.yaml,并在配置不存在时创建 /etc/hook/config.yaml。运行 Hook 前需要先编辑 /etc/hook/config.yaml。
/opt/hook/current/bin/generate_password_hash "your-password"
/opt/hook/current/bin/hook_backend --config /etc/hook/config.yaml migration up
/opt/hook/current/bin/hook_backend --config /etc/hook/config.yaml依赖:Rust edition 2024 toolchain、Node.js >=22.12.0、pnpm 10.33.4、PostgreSQL 和 Redis。
pnpm install
cp config/config.yaml config.yaml
scripts/generate-password-hash.sh "your-password"
cargo run -p hook_backend -- migration up
NEXT_PUBLIC_SERVER_URL=http://127.0.0.1:5555 pnpm build:frontend:embedded
NEXT_PUBLIC_SERVER_URL=http://127.0.0.1:5555 pnpm dev
| 后端 | http://127.0.0.1:5555 |
|---|---|
| 前端 | http://127.0.0.1:8082 |
| 检查 | cargo check -p hook_backend、pnpm lint:frontend、pnpm build:frontend |
GET /health | 健康检查接口。 |
|---|---|
/api/* | 控制台、管理后台、鉴权、钱包、计费、供应商、模型和监控接口。 |
/v1/* | OpenAI、Claude 和 Jina 兼容代理入口。 |
/v1beta/* | Gemini 兼容代理入口。 |
/v1/models/v1/chat/completions/v1/responses/v1/messages/v1/images/generations/v1/embeddings/v1/rerank/v1/realtime.env | 首次 Docker Compose 部署时由 ./deploy.sh 创建。 |
|---|---|
POSTGRES_* | PostgreSQL 容器的数据库名、用户和自动生成的密码。 |
HOOK_ADMIN_* | 初始管理员用户名、邮箱和 base64 编码后的密码值。 |
HOOK_JWT_SECRET | 后端令牌系统使用的自动生成签名密钥。 |
HOOK_PROVIDER_KEY_SECRET | 用于保护供应商密钥的自动生成密钥。 |
hook-postgres / hook-redis | 容器重建后仍保留部署数据的 Docker named volumes。 |
Hook 参考并受到以下开源项目启发。