把 HRMA 站点变成「只有您能进」

方案:Cloudflare Pages 托管 + Cloudflare Access 登录 · 全程免费 · 第一次做请预留 30–60 分钟(含注册账号与邮箱验证)· 我已把坑填好,分 3 段做完
先把话说在前面,别指望 15 分钟就搞定。
· 我不能保证一次成功。Cloudflare 的界面每年都在改,如果某一步的名字对不上,说明是我这份手册过时了,不是您的问题。
· 最坏情况不会丢资料:代码在 GitHub 仓库里,任何时候都能重新发布。
· 顺序很重要:先把新地址验证能用,最后才关 GitHub Pages。中途失败老地址照旧,风险为零。
· 真正省时间的地方:我已经把文件都备好了,您只是照着点,不用配置任何代码。
为什么必须这么做。现在这个站是 GitHub Pages,纯静态、无服务器。挂在页面上的 JavaScript 访问门只能管「页面」,管不到 xxx.zip / xxx.pdf / xxx.xlsx 这类文件的直连下载——知道链接的人一样能拉走。 Cloudflare Access 是服务端拦截:请求还没到文件就被挡住,连文件都不存在。这是免费方案里唯一能真锁住文件的办法。
做之前先知道两件事。
① Cloudflare 是境外服务,pages.dev 在国内访问可能比现在慢、偶尔不稳。
② 换域名之后,您在这台电脑上保存的登录状态不会跟着过去(浏览器按域名隔离)。到了新站点还要再用一次恢复码进站——不过那只要 10 秒,见第 4 段。

第 0 段 · 迁移前,先确认老地址进得去(必须做)

这一段在注册 Cloudflare 之前做。原因:等 Access 一开,老地址就会被一起锁住, 万一那时才发现进不去,您就两头都没得用了。
0

用无痕窗口(Mac 上 Command + Shift + N)打开老地址:

https://hrma-city.github.io/access.html

页面底部应该能看到一个蓝底区块写着 「站长通道:用恢复码直接进站」。在输入框里填:

RC-C031D24B28ACB6FF-1DB397A9F971A902

点 「用恢复码进站」 → 应该自动跳到首页,能正常浏览。

✓ 能进去,说明迁移前的底子是对的,可以放心往下做。

✗ 进不去:先到 https://hrma-city.github.io/reset-me.html 再填一次上面这个恢复码、设个新密码, 页面会自动带您进首页。进了再说下一步。

这一步只要一次就好。之后这台电脑会一直记住登录状态,不用来回填。

第 1 段 · 注册 Cloudflare(约 3 分钟)

1
打开 cloudflare.com,注册一个账号
用 3984557428@qq.com 注册。注册流程里通常要填手机号,中国大陆手机号可以,收个短信验证码就行。
注册完会让您选套餐,直接选 free 免费版,别选付费。
2
进入控制台首页
登录后左侧栏最下面有 Workers & Pages,点它 → 顶部按钮 Create → 选 Connect to Git(连接 Git 仓库)。
3
授权 GitHub,选中仓库
点 Authorize Cloudflare 授权 GitHub(授权页若只列部分仓库,勾上 All repositories)。
仓库列表里选 hrma-city / hrma-city.github.io,点 Begin setup。

第 2 段 · 部署到 Cloudflare Pages(约 2 分钟)

4
填写构建配置
字段填什么
Project name(项目名)随便起,比如 hrma-private。这个就是您的新网址:hrma-private.pages.dev
Production branchmain
Framework preset选 None(不是 Next、不是 Astro)
Build commands留空,不要填任何命令
Build output directory留空。仓库根目录本身就是站点文件,不用指子目录
填完点 Save and Deploy。等 1~2 分钟,看到 “Successfully deployed” 就成了。
5
记下您的新网址
形如 https://hrma-private.pages.dev。这就是以后您访问自己站点的新地址,先复制到备忘录。
6
⑥ 关掉 GitHub Pages 的公开访问 —— 务必放在最后做
顺序是这次迁移的安全底线:先按第 3 段配好 Access,用新地址 实测能进,再回来做这一步。
进 GitHub → 仓库 hrma-city/hrma-city.github.io → Settings → 左侧 Pages → 把 Source 从 Deploy from a branch 改成 None。
改完 hrma-city.github.io 会变成 404,不再对外可访问。
关错了怎么办:把 Source 改回 Deploy from a branch、分支选 main、目录选 / (root),等 1 分钟站点就回来了。资料不会丢,代码一直在仓库里。

第 3 段 · 开 Cloudflare Access(约 8 分钟)

7
进入 Zero Trust 控制台
在 Cloudflare 左侧栏(或账户首页)找 Zero Trust,点进去(在新版界面里它可能叫 Access,在左侧 Security 分组下)。
8
新建一个 Access 应用
左侧 Access → Applications → + Add new → Add self-hosted。
填:
  • Application name:HRMA 私有站
  • Application domain / Subdomain:点 Select domain,在列表里挑您的 hrma-private.pages.dev
点 Next。
9
加一条「放行白名单邮箱」的规则
默认会有一条 Default 策略,点它右边的 Edit(铅笔图标),改成:
  • Policy name:仅白名单可进
  • Action:Allow(允许)
  • 在 Include(包含)那里点 + Add include → 选 Email addresses → 先填 3984557428@qq.com(您自己)→ 点 Apply
⚠️ 这就是「审核」的落点:Cloudflare Access 没有独立注册 UI,所谓「他人注册经您审核」= 您把对方邮箱加进这个 Include 列表。不在列表里的邮箱,连登录框都过不去。现在先只放您自己,第 9b 步讲怎么加别人。 点 Next。
9b
以后放行「审核通过的人」
有人想进 → 他先通过站外渠道找您申请(微信 / 邮件 / 您公开的 contact 页留邮箱,见下方「他人如何申请」)→ 您判断无误后:
  • 回到 Zero Trust → Access → Applications → HRMA 私有站 → Policies
  • 编辑「仅白名单可进」这条 → Include → + Add include → Email addresses → 填对方邮箱 → Apply
加完即刻生效,对方下次用那个邮箱 + 验证码就能进。拒绝谁 = 不把他加进列表,无需额外操作。
10
选「一次性验证码」登录方式
在 Configure 这一步:
  • 找到 Authentication method / Login methods 区域
  • 如果列表里已经有 One-time PIN 就勾上;没有就先去左边 Access → Settings → Authentication → Login methods 点 «Add new» 加一个 One-time PIN,再回来勾上
然后 Next → Save(或 Create advanced policy 直接 Save)。
11
打开新网址,收验证码
浏览器访问 https://hrma-private.pages.dev → 会出现 Cloudflare 的登录框 → 输入 3984557428@qq.com → Cloudflare 发一个 6 位数字验证码到这个邮箱 → 填进去 → 进入。
验证码发出来一般 10 秒内到,如果 2 分钟没到,翻一下垃圾箱(CF 的邮件经常被 QQ 邮箱判垃圾)。

他人如何申请进站(审核入口)

Cloudflare Access 本身没有「注册申请页」——不在白名单的人会被直接拦在登录框外,连申请都填不了。所以「申请」要走站外: 审核标准您自己定(例如:只放院校老师 / 已购陪跑的客户)。加白名单 = 通过;不加 = 拒绝。

收尾 · 确认做对了

万一出问题

收不到验证码邮件:先翻垃圾箱;再试一次;还不行就去 Access → Settings → Authentication → Login methods 改成 GitHub 登录或Google 登录,重做第 9~11 步。告诉我,我给您那两条路径的具体步骤。

Cloudflare 注册要手机号但收不到短信:换一个运营商,或用 voice-code 语音验证码。

pages.dev 打开太慢:Cloudflare Pages 也支持绑自己的域名(Custom domains)。买个便宜的境外域名(.xyz / .top 一年几十块)绑上去就行,不需要国内备案。

实在做不下去:老地址只要没关 GitHub Pages 就还能用,第 6 步不做就没有任何损失,随时可以喊我。