Ctrl K
ComunidadGuías…

README.md

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
# Transfer-Station

面向个人实验环境的 AI API 网关部署整合项目。仓库使用 Docker Compose 编排 [Sub2API](https://github.com/Wei-Shaw/sub2api)、PostgreSQL、Redis、Nginx 和可选聊天界面,并提供品牌落地页。

号池调度、模型协议、计费和支付等业务能力来自上游 Sub2API,本仓库自身不实现这些功能,也不代表模型供应商或上游项目提供服务保证。

## 项目边界

| 仓库 | 职责 | 不包含 |
| --- | --- | --- |
| **Transfer-Station** | 带落地页和 Nginx 示例的实验性整合部署 | 自研网关、模型账号或合规授权 |
| [ai-gateway-kit](https://github.com/YouRen1320/ai-gateway-kit) | 安全优先、品牌中立的可复用部署底座 | 营销站和产品品牌 |
| [open-gateway-starter](https://github.com/YouRen1320/open-gateway-starter) | 明确标注演示数据的前端站点模板 | 认证、支付或代理后端 |

> [!WARNING]
> 当前 Compose 使用上游的可变 latest 镜像,Redis 密码默认留空,初始化流程还依赖从日志读取上游生成的管理员密码。它适合受控实验和二次开发,不应未经镜像固定、网络隔离、密钥加固、备份恢复及合规审查就直接作为公共生产服务。需要更严格的部署基线时,优先使用 ai-gateway-kit。

## 架构

```
客户端 ──HTTPS──> nginx (443)
                   ├── api.你的域名  →  Sub2API (8080)
                   │                     ├─ PostgreSQL
                   │                     └─ Redis
                   └── 你的域名      →  落地页 (静态)
```

## 快速开始

### 1. 准备

- 一台 VPS(建议至少 2GB 内存,推荐 Debian 12)
- 一个域名(已在 Cloudflare 或其他 DNS 托管)
- 已安装 Docker + Docker Compose V2 + nginx

### 2. 部署

```bash
git clone https://github.com/YouRen1320/Transfer-Station.git
cd Transfer-Station

# 交互式初始化:输入域名和邮箱,自动生成 .env + nginx 配置
./setup.sh

# 启动全部服务
docker compose up -d

# 查看日志(当前上游首次启动流程可能在日志中给出管理员密码)
docker compose logs -f sub2api
```

### 3. SSL 证书

推荐 acme.sh + Cloudflare DNS 通配证书(setup.sh 会打印具体命令):

```bash
export CF_Token="你的_cloudflare_api_token"
~/.acme.sh/acme.sh --issue --dns dns_cf -d 你的域名 -d '*.你的域名' --keylength ec-256

# 安装到 nginx
~/.acme.sh/acme.sh --install-cert -d 你的域名 --ecc \
  --fullchain-file /etc/nginx/ssl/你的域名.crt \
  --key-file /etc/nginx/ssl/你的域名.key \
  --reloadcmd 'systemctl reload nginx'
```

### 4. 打开浏览器

- 管理后台 + API:`https://api.你的域名`
- 落地页:`https://你的域名`

## 可选:聊天 UI

```bash
# 启用 Hermes Web UI(额外占用 ~200M 内存)
docker compose --profile chat up -d
```

## 可选:落地页

项目自带一个 React 落地页(`landing/`),fork 后换个品牌名就能用:

```bash
# 1. 编辑品牌配置(名称、域名、颜色)
vim landing/site.config.js

# 2. 构建
cd landing
npm ci
npm run build

# 3. 部署到服务器
scp -r dist/* 你的服务器:/opt/transfer-station/landing/dist/
```

## 项目结构

```
Transfer-Station/
├── docker-compose.yml      # Sub2API + PostgreSQL + Redis + (可选) Hermes UI
├── .env.example            # 所有配置项,带注释
├── setup.sh                # 交互式初始化脚本
├── nginx/
│   ├── api.conf.template   # API 反代模板
│   └── landing.conf.template   # 落地页模板
├── landing/                # 静态落地页源码
│   ├── site.config.js      # 品牌配置(fork 后改这个)
│   ├── build.mjs           # esbuild 构建
│   ├── src/                # React 组件
│   └── styles.css
├── scripts/
│   └── image_client_example.py  # 图片生成 API 示例
└── README.md
```

## 常用运维

```bash
# 看状态
docker compose ps

# 看日志
docker compose logs -f sub2api

# 重启
docker compose restart sub2api

# 升级 Sub2API
docker compose pull sub2api
docker compose up -d sub2api

# 备份(包含 .env 和数据库,属于敏感文件,必须加密并限制访问)
tar czf backup-$(date +%Y%m%d).tar.gz .env data/
```

## 上游项目

- [Sub2API](https://github.com/Wei-Shaw/sub2api) — AI 网关 / 号池 / 计费 / 支付
- [Hermes Web UI](https://github.com/EKKOLearnAI/hermes-web-ui) — 聊天前端

## 许可证

本仓库原创代码采用 [MIT License](LICENSE)。Sub2API、Hermes Web UI 及其他第三方镜像和依赖保留各自的许可证、商标与使用条款。