知识库网站免备案上线 · 香港轻量服务器方案
入档:2026-06-24 来源:把本知识库做成展示站 tiaozhuxiansheng.com 并部署上线的实操(Astro 静态站) 状态:全链路跑通并验证(国内多节点可达 + HTTPS + CI 自动部署 + .cn 301 跳转)
一句话总结
要让国内用户免备案自由访问一个静态站:把站托管在海外(香港)服务器 + 自定义域名的 A 记录指过去即可——备案只在域名指向大陆服务器时才需要。国内 CDN(Cloudflare 免费版)在大陆不稳(连后台都常打不开),香港轻量服务器区域可控、直连,反而更适合做国内入口。
为什么这么选(决策链)
- GitHub Pages / Cloudflare 的默认域名(
*.github.io/*.pages.dev)在大陆常被墙或限速 → 不能直接丢给国内用户。 - 备案要 1–2 周 + 大陆身份证,且只在指向大陆服务器时才需要 → 不想备案就走海外。
- 海外选香港:对大陆延迟低(实测均值约 100ms,东/中/南部更快)、免备案、区域和路由可控。
- 架构:构建留在 GitHub Actions(已跑通),产物 rsync 到只跑 nginx 的香港服务器。服务器不跑 Node 构建,省内存、更稳。
部署步骤(可照做)
- 域名:海外服务器只需域名实名认证(域名持有者实名),不需 ICP 备案。实名 ≠ 备案,别混。
- 买香港轻量服务器(≥1GB 内存,Ubuntu LTS),在云控制台「防火墙」放行 22 / 80 / 443。
- nginx 服务静态目录;DNS 把
@和www的 A 记录指向服务器公网 IP。 - 先等 DNS 生效,再用 certbot 签 Let’s Encrypt 证书(HTTP-01 要求 Let’s Encrypt 能解析到服务器)。
- CI 加一条部署 job:构建 →
rsyncdist 到服务器 → 以后git push自动更新。 - 多域名收敛:备用域名(如 .cn)加 A 记录 + nginx
return 301跳转到主域名 + 给它单独签证书(否则https://备用域名跳转前会有证书警告)。
踩坑清单(高价值,都是真金白银卡出来的)
- 云厂商防火墙(安全组)≠ 服务器 OS 防火墙。轻量服务器漏开 443 → 全站 https 卡死,但 OS 层
ufw/iptables是通的,很容易往错的地方查。判据:80 通、443 连不上(TCP 超时)→ 先查云控制台安全组端口,而不是查 nginx。 - 本机代理(Clash/Surge)的 fake-ip 会污染本地诊断。本机
nslookup返回198.18.x.x假 IP,浏览器 / curl 全不可信(Cloudflare 后台打不开也是它干的)。绕过法:curl --noproxy '*' --resolve 域名:443:真实IP;或用外部多节点检测(ping.chinaz.com)验证真实可达性。 —— 又一例「所见非真相」。 - certbot 顺序:DNS 先解析到服务器,再签证书。反了 HTTP-01 验证必失败。
- nginx 1.24 不支持
http2 on;(那是 1.25.1+ 的语法);SSL 块用listen 443 ssl;即可。 - Git Bash 没有 rsync:手动传用
tar czf - -C dist . | ssh … 'tar xzf - -C /目标目录';且 Git Bash 会把命令行参数里的/转成 Windows 路径,传BASE_PATH=/这类值要加MSYS_NO_PATHCONV=1。
自动同步的真相(本次顺带检验)
知识库(本仓库)和展示站是两个独立仓库,站点用 pull 式同步:每次构建时 git clone 本知识库,白名单目录(01–05、07)里的 .md 自动上站。
但站点重建的触发是:push 到站点仓库 / 每 6 小时定时 / 手动 —— 本仓库 push 后不会即时上站(没配 repository_dispatch 通知)。所以”自动同步” = 最长 6 小时延迟的定时拉取;要即时上站得手动触发站点构建,或日后给本仓库加一个 dispatch workflow 推送 kb-updated 事件。
如何使用
- 下次要把任何静态站(Astro / Hugo / VitePress / 纯 HTML)给国内用户看且不想备案:照「部署步骤」走,香港轻量 + 域名指过去。
- 调试国内可达性时先怀疑本机代理,用外部多节点检测做基准,别拿被 fake-ip 污染的本机结果下结论。
- https 突然全站连不上、80 还活着:第一反应查云安全组 443。
关联文档
- 同源前身:长期更新展示站_两层结构与无头卡片量产_v1(本站「分类墙 + 详情」两层结构的设计思路;本篇是把它真正部署上线)
- 同类部署复盘:轻量级WebApp部署尸检_WebUploadApp(Flask + Nginx + Gunicorn 部署踩坑;本篇是静态站 + 免备案版)
- 同类「所见非真相」:Windows下编码与DPI的所见非真相(本机环境骗眼睛;本篇是代理 fake-ip 污染国内可达性诊断)
- 站点源码仓库(库外裸路径):
E:\above-the-web(Astro + GitHub Actions,产物 rsync 到香港 nginx)