flowchart TD
subgraph "🌐 DNS"
D1["🅰️<br/>timer.red<br/>76.76.21.21<br/>▲ Vercel"]
D2["🅰️<br/>uptime.timer.red<br/>服务器"]
D3["🅰️<br/>backend.timer.red<br/>服务器"]
D4["☁️<br/>static.timer.red<br/>Cloudflare R2"]
D5["🅰️<br/>panel.timer.red<br/>76.76.21.21<br/>▲ Vercel"]
end
D1 -- "🌍 直接访问" --> Vercel["▲ Vercel<br/>76.76.21.21"]
D4 -- "🌍 直接访问" --> R2["☁️ Cloudflare R2<br/>countdown-generator"]
D5 -- "🌍 直接访问" --> Vercel["▲ Vercel<br/>76.76.21.21"]
subgraph "🖥️ 云雨服务器"
Caddy1["🟢 Caddy<br/>:80<br/>uptime.timer.red"]
Caddy2["🟢 Caddy<br/>:80<br/>backend.timer.red"]
Kuma["📈 Uptime Kuma<br/>172.17.0.5:3001"]
PocketBase["🗄️ PocketBase<br/>172.17.0.4"]
end
D2 -- "➡️" --> Caddy1
D3 -- "➡️" --> Caddy2
Caddy1 -- "🔁 reverse_proxy" --> Kuma
Caddy2 -- "🔁 reverse_proxy" --> PocketBase
uptime.timer.red
和 backend.timer.red
使用 CF 对实际 IP 🔐β MYxvLZrd4m/0zPAcFpARibLNMWoKpyIsXqckdagmDTP6GO8YX/jiiAY62vgEbxv4Ii8jIG3G3NX2392N 🔐 启用代理,然后通过 Caddy 根据域名反代到后面的具体服务上。