# GateCDN Infrastructure Reference

> 在线 manifest：https://gatecdn.com/infra.json

## 架构概览

```
gatecdn.com          门户 / Agent 发现入口
cdn.gatecdn.com      前端 CDN（cdnjs 兼容）
hub.gatecdn.com      Docker Hub Registry Mirror
ghcr.gatecdn.com     GitHub Container Registry Mirror
quay.gatecdn.com      quay.io Registry Mirror
docker.gatecdn.com   301 → hub.gatecdn.com（兼容）
npm.gatecdn.com      npm Registry Mirror (Verdaccio)
go.gatecdn.com       Go Module Proxy (goproxy)
rust.gatecdn.com     Rust Crates Mirror (crates-io-proxy)
pip.gatecdn.com      PyPI Mirror (NORA)
nora.gatecdn.com     NORA Multi-Format Registry (PyPI/Maven/Terraform + UI)
```

## Frontend CDN

- **Endpoint**: `https://cdn.gatecdn.com`
- **格式**: 与 cdnjs 路径兼容
- **示例**:
  - `https://cdn.gatecdn.com/ajax/libs/jquery/3.6.0/jquery.min.js`
  - `https://cdn.gatecdn.com/ajax/libs/bootstrap/5.1.3/css/bootstrap.min.css`
  - `https://cdn.gatecdn.com/ajax/libs/vue/3.2.36/vue.global.prod.js`

## Registry Mirrors

### Docker Hub

```json
{
  "registry-mirrors": ["https://hub.gatecdn.com"]
}
```

验证：`curl https://hub.gatecdn.com/v2/` → `{}`

### GHCR

前缀替换规则：`ghcr.io/X` → `ghcr.gatecdn.com/X`

### Quay

前缀替换规则：`quay.io/X` → `quay.gatecdn.com/X`

## npm

```ini
registry=https://npm.gatecdn.com
```

验证：`npm ping --registry https://npm.gatecdn.com`

## Go modules

```bash
export GOPROXY=https://go.gatecdn.com,direct
```

## Rust (Cargo)

```toml
[source.crates-io]
replace-with = "gatecdn"

[source.gatecdn]
registry = "sparse+https://rust.gatecdn.com/index/"
```

## PyPI (pip)

```ini
[global]
index-url = https://pip.gatecdn.com/simple/
trusted-host = pip.gatecdn.com
```

验证：`curl -sI https://pip.gatecdn.com/simple/pip/ | head -3`

## NORA

- UI: https://nora.gatecdn.com/ui/
- PyPI path: `/simple/`
- Maven path: `/maven2/`
- Terraform path: `/terraform/`

## Agent 集成方式

1. **Cursor Skill**：将 `https://gatecdn.com/agents/SKILL.md` 内容复制到项目的 `.cursor/skills/gatecdn-infra/SKILL.md`
2. **Manifest 拉取**：Agent 启动时 fetch `https://gatecdn.com/infra.json` 获取最新 endpoint
3. **项目 Rule**：在 `.cursor/rules/` 中引用 manifest URL

## 部署目录（服务器）

| 组件 | 路径 |
|------|------|
| 门户站点 | `/www/wwwroot/gatecdn.com/` |
| 镜像加速 | `/root/project/docker-proxy/` |
| 包管理加速 | `/root/project/pkg-proxy/` |
| 门户站点 | `/root/project/gatecdn-site/` |
| nginx 镜像/包管理配置 | `/www/server/panel/vhost/nginx/*.gatecdn.com.conf` |

## 证书

| 域名组 | 证书路径 | 续期 |
|--------|----------|------|
| gatecdn.com, cdn.gatecdn.com | 宝塔 TrustAsia | 宝塔自动 |
| hub/ghcr/quay/docker/npm/go/rust/pip/nora | mirror.gatecdn.com (LE SAN) | acme.sh cron，脚本 `pkg-proxy/renew-mirror-cert.sh` |
