iGit IPFS 数据面基建(as-built)
[!IMPORTANT] 本文的“已部署并验证(2026-08)”只指 HK/US Kubo、网关、CAR 归档、CID 同步、TLS 和 SSH 等 IPFS 数据面。文中的
repo-registry、CosmWasmupdate_ref和交易轮询描述属于 V1 历史控制面,不代表 EVM Suite 已部署、 已迁移或已切流。EVM V2 的公开SuiteDirectory仍须等待完整 cutover 证据。
本文是 Suite v3(legacy IPFS 路径)数据面的建成记录,不是 v4 BYOS 路径的依赖:
v4 用户使用自有 AWS S3 / Cloudflare R2 桶(已交付,仅限这两个 provider),不经过
本文的任何组件。Amazon S3 和 Cloudflare R2 BYOS 已按 ADR 0004
与 BYOS 实施规格 交付为 successor Suite(suiteVersion 4,测试网已部署);
v3 合约仍只接受 ipfs://,其 IPFS 行为冻结不变,见
ADR 0002。选型过程见
pinning-infrastructure.md。
1. 数据面与 V1 历史控制面
┌────────────── V1 历史写入/归档路径 ──────────────┐
V1 igit push ─▶ CosmWasm V1 repo-registry
update_ref(pack_uris = ipfs://<cid>)
│ (每 2 分钟轮询)
┌────────▼─────────┐
│ US: archive-indexer │ 从 tx 消息体取全部历史 pack_uris
└───────┬─────────────┘
全量 pin ───┘ └──── CAR 归档 + SHA-256 校验
┌──────────────┐ ┌─────────────────┐
│ US Kubo 850GB│ │ Fil.one S3/Filecoin │
└──────────────┘ └─────────────────┘
│
└── 受限 SSH 同步 durable CID 清单 ──▶ HK 热层
┌─────────────────── 读取路径 ───────────────────┐
大陆用户 ─HTTPS─▶ https://igit-hk.haohanyh.ovh/ipfs/<cid>
│ nginx 只读网关
├─ 本地 Kubo 命中(pin + 全网可抓) ⚡
└─ miss/25s 超时 → 回退反代 ipfs.io
- 持久化副本:推送者本地 Kubo、美国全量 Kubo、Fil.one CAR 归档。香港仅负责热缓存。
- 大陆可达:走自家 HK CN2 域名(HTTPS 直达,已实测),不依赖任何被墙的公共网关。
- 控制面边界:上图的 V1 交易轮询只用于解释历史归档来源。当前 EVM V2
目标路径由
SuiteDirectory定位RepositoryCore;在真实 cutover 前,任何 indexer/reaper 都不得把旧 V1 地址或测试地址当作 EVM 生产配置。 - 平台边界:运维人员历史上把部分 SSH 凭据放在 WSL 中,不表示普通 Windows 客户端依赖 WSL2。EVM V2 的产品验收要求 Windows 和 Linux 分别使用原生环境。
2. 组件明细
2.1 HK 网关节点 45.202.249.80
- Debian 11,1C/1G/5G(唯一一台)。PeerID
12D3KooWRfRoRqEyC4Qsb4ow2yfGsSAAymTFSxj6vr2SYQnxk55W。 - Kubo v0.42.0 二进制(非 Docker,省磁盘);
ipfs init --profile=lowpower,server、StorageMax 1GB、ConnMgr 32/96、512M swap;systemdipfs.service(MemoryMax 750M)。 - Kubo 的 API(5001)/Gateway(8080) 只绑
127.0.0.1,一律由 nginx 前置。 - 部署脚本:
scripts/gateway-deploy.sh(root 在服务器执行,幂等)。
2.2 nginx 只读网关 + 公共网关兜底
- 仅暴露
/ipfs/<cid>(只读 path 网关)与/healthz,其余 403。 /ipfs/:本地 Kubo 命中优先;miss 或 25s 超时 →error_page回退到命名 location@pubgw反代https://ipfs.io。- ⚠️
cloudflare-ipfs.com/cf-ipfs.com已于 2024-08 停用(从 HK 都 000),故兜底用ipfs.io。ipfs.io 对网站/HTML 目录会 301 到*.ipfs.dweb.link(大陆被墙),但 raw/文件内容(igit packfile)直接 200,对 igit 无碍。 - 配置写在
scripts/gateway-tls.sh的 nginx heredoc 中(单一来 源)。
2.3 域名与 TLS igit-hk.haohanyh.ovh
- Cloudflare 灰云 / DNS-only,A 记录直指
45.202.249.80(不走 Cloudflare 代理——免费档大陆路由更差且不解封)。 - Let's Encrypt 证书,
certbot --nginx,certbot.timer自动续期(--keep-until-expiring可幂等重跑复用证书)。脚本scripts/gateway-tls.sh。 - GFW 教训(重要):原定
ipfs-gateway-hk.haohanyh.com经实测——整个haohanyh.com注册域被 GFW 按 SNI/Host 封锁,大陆任意子域 HTTP/HTTPS 均被 RST,ICP 备案也无法绕过。换到不同注册域haohanyh.ovh后干净可用。 - 诊断法(选新域名前先测):
curl --resolve <域名>:443:<IP> https://<域名>/——被 RST=被封,能到 TLS(哪怕证书不匹配)=干净。ping 只打 IP、无域名,不能用来判断封锁。
2.4 美国全量 Kubo + Fil.one CAR 归档
- 美国节点
162.35.187.224,Debian 13,Kubo v0.42.0,/var/lib/ipfsStorageMax 850GB;PeerID12D3KooWBGyxqNM3q6nHvacFfqnwoXP2uXxP36uSPab2p16ywfFS。 igit-archive-indexer.timer每 5 分钟分页扫描 CosmWasm V1 的历史update_ref,将 CID Pin 到美国节点,再导出 CAR 到 Fil.one bucketus101010(https://us-east-1.s3.fil.one)。这是 V1 归档流程,不是 EVM Suite indexer。- 对象键为
cars/v1/<CID前两位>/<CID>.car;上传后通过HeadObject校验x-amz-meta-sha256,成功才写入/var/lib/igit-archive/archived.tsv。 igit-durable-cid-sync.timer用受限 SSH 用户把已验证 CID 清单同步到香港;该账号仅能调用格式校验后的接收命令,不能取得 shell。igit-archive-monitor.timer每小时检查 Kubo、归档/同步定时器、美国 Pin 与 Fil.one CAR 对象数量、以及 1TB 用量阈值;异常通过 Resend 发邮件。
2.5 Filebase(旧静态副本)
- bucket
a10101保留现有对象,但不再接收新 CID;pin-indexer.timer和filebase-monitor.timer已停用。
2.6 香港热层 Pin
hot-pin-indexer.timer每 5 分钟运行,保留新内容(14 天)、近 30 天至少 3 次成功网关读取的热门内容,以及/etc/igit/important-cids.list中的手工重要 CID。- 清理仅作用于
/var/lib/igit/durable-cids.list中已确认美国 Pin 和 Fil.one CAR 成功的 CID;未确认 CID 会跳过。
2.7 SSH 加固 与 swarm/4001
- 仅密钥登录:
scripts/gateway-ssh-harden.sh写/etc/ssh/sshd_config.d/99-igit-hardening.conf(PasswordAuthentication no、PermitRootLogin prohibit-password)。历史运维登录密钥位于~/.ssh/igit_hk(WSL 侧,唯一入口;应急走 VPS 控制台);这是服务器运维事实,不是 Windows 客户端运行要求。 - 4001(TCP+UDP/QUIC)已开放:服务器无 ufw/iptables/nft 规则、云侧不限端口。大陆
ipfs swarm connect到 HK 实测成功(TCP+QUIC),为下文 CLI 加速打好基础。
2.8 US 受控复制数据面(staged)
igit-replicationd已部署到162.35.187.224,systemd 服务监听 loopback127.0.0.1:8088;nginx 仅发布两个受控 HTTPS POST 路由。- 2026-08-03 已完成真实授权、Pin、SHA-256 校验和同 JTI 重放验收;证据见 当时的历史记录。该数据面验收不等于 EVM cutover evidence。
- Prometheus textfile monitor 已启用。
- TTL reaper timer 保持禁用。旧条件依赖 V1
repo-registry;EVM cutover 后必须改为绑定证据批准的SuiteDirectory、RepositoryCoreref 状态和正式 身份签发服务。不能使用旧 V1 地址、fixture 或 testnet 地址替代生产配置。