
微信群二维码 7 天过期的痛点与解决思路
做过微信群裂变或者私域引流的人,大概率都遇到过这个问题:辛辛苦苦把群二维码印在海报、公众号文章或者个人名片上,结果过了一周发现扫码进不了群,提示“二维码已过期”。微信官方规定,微信群二维码的有效期只有 7 天。这意味着每星期都得重新生成一次二维码,然后去所有渠道手动替换一遍。碰上搞活动、投广告的时候,二维码中途失效,直接浪费掉一笔流量,带来的损失可能比买工具的成本还高。
市面上不是没有解决方案。付费活码平台一个月几十到上百块,免费的那些往往附带弹窗广告或限制扫码次数。更让人不放心的是,关键用户数据放在别人手里,哪天服务商跑路了,所有活码都跟着挂掉。
这篇文章要讲的是一个完全不一样的做法——用 serverless-qrcode-hub 这个开源项目,基于 Cloudflare Workers 和 D1 数据库,自己部署一套永久二维码(活码)系统。不需要买服务器,不需要懂太深的后端知识,跟着步骤操作,前后大概十几分钟就能跑起来。部署之后,你只需要在后台维护一个指向最新微信群二维码的短链接,不管二维码怎么换,你对外分享的那个链接永远不变。这套方案也可以当作短链接生成器使用,功能相当灵活。
什么是 serverless-qrcode-hub?核心功能一览

serverless-qrcode-hub 是一个 GitHub 上的开源项目(项目地址:https://github.com/xxnuo/serverless-qrcode-hub),设计思路很直接:通过 Cloudflare Workers 的无服务器环境,结合 D1 数据库存储数据,生成一个永久有效的短链接,短链接背后指向的可以是微信群二维码图片,也可以是任意 URL。当微信群二维码过期时,你只需在管理后台替换二维码图片,前台同一个短链接扫出来的就是新二维码,用户端完全无感。
项目主要特性
| 特性 | 说明 |
|---|---|
| 永久短链接 | 生成一个固定链接,后台可随时更新指向目标 |
| 微信群活码 | 专门针对微信群二维码场景设计,更换二维码图片即可 |
| 普通短链接 | 也可当作普通的短链接生成器使用 |
| 零服务器 | 基于 Cloudflare Workers 运行,无需自己购买和维护服务器 |
| 自定义样式 | 可以修改二维码的颜色、Logo、公告提示文字 |
| 密码保护 | 管理后台支持密码登录,防止被人篡改 |
| 过期提醒 | 新版支持设置二维码过期提醒,自定义提示文案和字体 |
| 数据自控 | 所有数据都存放在你自己的 Cloudflare D1 数据库中 |
和市面上那些付费活码工具相比,这套方案最大的优势在于数据主权。你的微信群二维码、短链接记录全部由自己控制,不用担心第三方平台跑路或者提价。而且 Cloudflare Workers 的免费额度对于普通私域运营绰绰有余——每天 10 万次请求,足够支持一个中型社群的扫码量。
搭建前置条件:你需要准备什么

动手之前,先确认下面这些条件是否满足。大部分都是免费资源,除了可能需要一个域名(如果你不想用 .workers.dev 的默认域名,国内访问较慢)。
| 条件 | 说明 |
|---|---|
| Cloudflare 账号 | 免费注册,用于创建 Workers 和 D1 数据库 |
| GitHub 账号 | 用于 Fork 项目和编辑配置文件 |
| 域名(可选) | 如果希望国内正常访问,最好绑定自己的域名(需在 Cloudflare 托管) |
| 微信群二维码 | 你要用来做活码的微信群二维码图片(7天内有效即可,后续可替换) |
如果你手头还没有域名,可以用一些免费域名服务搞一个,然后挂到 Cloudflare 上。也可以直接用默认的 *.workers.dev 域名,但国内用户扫码可能会很慢甚至打不开,所以建议有条件的还是绑个自定义域名。
分步搭建:从零到永久活码上线
下面把搭建过程拆成几个关键步骤。我会结合自己实际操作的经验,指出容易踩坑的地方。
第一步:在 Cloudflare 创建 D1 数据库
登录 Cloudflare Dashboard,在左侧菜单找到“Workers & Pages”,然后进入“D1”。点击“创建数据库”,给你的数据库起个名字,比如 qrcode-hub-db。创建成功后,系统会显示一行数据库 ID(格式类似 xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx),复制保存好,下一步会用到。
第二步:Fork 项目仓库并配置数据库 ID
打开 serverless-qrcode-hub 的 GitHub 仓库,点击右上角的“Fork”,把代码复制到自己的 GitHub 账户下。然后在你 Fork 的仓库里找到 wrangler.toml 文件,用 GitHub 的在线编辑器打开,找到 d1databases 这一块,把 databaseid 替换成你刚刚复制的 D1 数据库 ID。
[[d1_databases]]
binding = "DB"
database_name = "qrcode-hub-db"
database_id = "你复制的ID"
提交修改。这一步如果不做,Worker 部署后会找不到数据库,导致无法正常存储数据。
第三步:在 Cloudflare 创建 Worker 并关联 GitHub 仓库
回到 Cloudflare Dashboard,进入“Workers & Pages”,点击“创建 Worker”,选择“创建 Pages”连接到你的 GitHub 账户,选择刚刚 Fork 的仓库。部署设置里,框架预设选“无”,构建命令留空,输出目录留空,直接点“保存并部署”。Cloudflare 会自动识别 wrangler.toml 并进行部署。
部署完成后,页面会给你一个默认的 *.workers.dev 二级域名。这个域名可以直接访问,但国内速度不理想。接下来建议绑定自己的域名。
第四步:绑定自定义域名(强烈推荐)
如果你有域名在 Cloudflare 上托管,进入 Worker 的设置页面,找到“触发器”或“域名”选项卡,添加一个自定义子域名,比如 qr.yourdomain.com。Cloudflare 会自动配置 DNS,整个过程几分钟内生效。
workers.dev 被干扰导致的无法访问问题。但即使这样,也不能保证 100% 稳定,建议结合自身网络环境测试。如果实在无法访问,可以考虑使用国内 CDN 或换其他方案。
第五步:设置管理后台密码
安全方面不能马虎。部署完成后,在 Cloudflare Worker 的环境变量里添加一个名为 PASSWORD 的变量,值用一段足够复杂的字符串,推荐用两段随机生成的 UUID 拼接。或者直接在代码里配置密码,但更建议用环境变量,方便后期修改。密码登录后,你就可以进入管理后台添加短链接和活码了。
第六步:登录后台创建微信群活码
访问你的域名,会看到登录页面。输入密码后进入管理后台。主要功能集中在三个页面:
- 添加短链接:输入目标 URL(比如你的微信群二维码图片地址),系统自动生成一个短代码,访问
你的域名/短代码就会直接跳转到目标地址。 - 添加微信群活码:专门针对微信群设计,上传二维码图片,设置有效期提醒文案,保存后生成活码链接。
- 列表与管理:查看所有已创建的短链接和活码,可以编辑、删除或更新指向。
更新活码时,只需要上传新的微信群二维码图片,保存后活码链接自动指向新图片。你之前铺到所有渠道的那个固定链接不需要做任何变动。
扩展功能:自定义公告与过期提醒
新版 serverless-qrcode-hub 支持在扫码后显示自定义的公告或提示,比如“请添加群主微信入群”或者“该群已满,请扫码进新群”。还可以调整字体大小、颜色等格式,实用性提升了不少。你可以在创建活码时配置这些内容,保存后生效。
常见搭建错误及避坑方法
新手在部署过程中容易在几个地方翻车,我列出最常碰到的几种情况:
- wrangler.toml 里的 database_id 没改或填错:这是最常见的问题。如果你部署后访问页面报错“D1 not found”,回去检查配置文件,确认 ID 是否复制完整且没有多余空格。
- Worker 部署后没有关联 GitHub 仓库:有些新手点错了“创建 Worker”直接创建了一个空 Worker,而不是通过 Pages 连接仓库。导致代码根本没部署上去。正确做法是选“创建 Pages”,然后连接你的 Fork 仓库。
- 环境变量 PASSWORD 没设置或拼写错误:变量名必须是全大写
PASSWORD,不要写成password或PassWord。不设置的话后台无法登录,直接报 401。 - 域名没在 Cloudflare 托管就绑定:自定义域名必须在 Cloudflare 的 DNS 管理下,否则无法自动配置证书。建议先移入 Cloudflare 再绑定。
- 微信群二维码上传后忘了点保存:后台界面操作完记得点保存按钮,否则临时状态不会写入数据库。
这些错误都不难排查,只要耐心复核一遍配置就能解决。如果还是拿不准,可以在 Cloudflare 的 Workers 日志里查看报错信息。
如何验证活码是否正常工作
部署完成并创建第一个活码后,建议按以下步骤做一次完整测试:
- 打开你的域名,确认能正常显示后台登录页。
- 用设置的密码登录,确认能进入管理面板。
- 上传一张微信群二维码图片,生成活码链接。
- 用未登录的设备(比如用另一部手机或者浏览器的隐私模式)扫码测试:确保能正常跳转到微信群二维码图片。注意二维码本身不是活码,而是你生成的短链接指向的图片,所以扫码后应该显示二维码图片,然后用户长按识别进群。
- 测试过期提醒功能:如果设置了到期时间,可以临时把系统时间调快(或者直接修改活码里的到期时间)看是否弹出自定义提醒。
- 修改二维码图片,上传新图片,然后用原来的短链接再扫一次,确认自动指向新图片。
- 如果绑定的是自定义域名,分别用移动网络和 Wi-Fi 测试国内访问速度,确保扫码体验流畅。
全部通过后,就可以把生成的短链接铺到你的推广渠道了。
回滚方案:部署出错怎么办
如果你在部署过程中搞砸了,不用慌,以下回滚或重建的路径可以参考:
- D1 数据库数据丢失:只要不主动删除数据库,D1 的数据是持久化存储的。如果不小心重置了数据库,之前创建的活码记录会消失。此时只要重新添加新的活码即可,不影响短链接的指向(因为短链接 ID 是随机生成并存储在数据库中的,丢失后无法恢复,需要重新生成)。所以建议定期导出 D1 数据备份(可以通过 Cloudflare 的 D1 控制台导出 JSON)。
- Worker 代码出问题:可以随时在 Cloudflare 上重新部署。先删除有问题的 Worker,然后重新按照步骤再走一遍。如果只是配置错误(比如环境变量没设对),直接修改环境变量然后重新部署即可,不需要重建。
- GitHub 仓库改乱了:如果你在本地修改了代码导致部署失败,可以回退到上游版本。在 GitHub 上点击“Fetch upstream”同步原始仓库的最新代码,然后重新部署。
- 自定义域名 SSL 证书问题:Cloudflare 会自动颁发证书,如果出现证书错误,可以尝试在 Cloudflare 的 SSL/TLS 设置中把模式改为“灵活”或“完全”,等几分钟再访问。
- 最省事的回滚方法:如果你实在搞不定,还有一条路——直接删掉 Cloudflare Worker 和 D1 数据库,从头再来一遍。因为整个流程只有十几分钟,重新部署的成本很低。不用担心删库会留后患,只要重新创建,按步骤来就不会再错。
与免费/付费活码工具的对比
| 维度 | serverless-qrcode-hub | 免费活码平台 | 付费活码服务 |
|---|---|---|---|
| 成本 | 零费用(Cloudflare 免费额度内) | 免费但带广告/限制 | 月费几十到几百元 |
| 数据控制权 | 完全自控 | 存于平台 | 存于服务商 |
| 二维码有效期 | 永久(只要不删除记录) | 依赖平台政策 | 通常永久 |
| 自定义能力 | 高(可改代码、换样式) | 低 | 中等 |
| 技术门槛 | 需要基础的 GitHub 和 Cloudflare 操作 | 零门槛 | 零门槛 |
| 稳定性 | 依赖 Cloudflare 网络 | 依赖平台运维 | 依赖服务商运维 |
| 适合人群 | 有技术基础或愿意学习的人 | 纯小白 | 不差钱、不想操心的运营 |
编辑判断:谁适合用这套方案?谁不适合?
适合什么样的人?
- 私域运营者,手上有 3 个以上微信群需要管理,且经常更换群二维码。
- 技术手上有 VPS 或会折腾 Cloudflare 的玩家,愿意花十几分钟部署一次,后续想省心。
- 对数据安全敏感,不想把用户扫码数据交给第三方工具。
- 需要短链接生成功能的用户(可以一鱼两吃)。
不适合什么样的人?
- 完全不懂 GitHub 和 Cloudflare 的小白,连注册账号都有障碍。这类人用免费活码平台反而更省事,虽然有限制但至少能用。
- 扫码量极其巨大(每天超过 10 万次)的企业级社群,免费额度不够,付费 Workers+ 虽然不贵但要花钱。但这种情况比较少见。
- 需要批量生成成千上万个活码的团队,此项目后台批量操作能力较弱,更适合个人或小团队。
什么时候该用,什么时候不该用?
- 如果你的微信群二维码一周内只对外分享一次,用免费活码平台即可,别折腾。
- 如果你每周都要在多个渠道(海报、菜单、公众号)更新二维码,强烈建议花十几分钟部署这套方案,一劳永逸。
- 如果你有多个二维码要管理,且不想每次都手动替换,用这个自建系统就是最优解。
- 如果你的微信群直接暴露在大流量入口(比如公众号菜单、小程序跳转),即使二维码过期,也要确保短链接不失效——这套方案就是为这个场景设计的。
常见问题与注意事项
1. Cloudflare Workers 免费额度够用吗?
免费版每天有 10 万次请求,对于绝大多数微信群运营场景完全够用。如果扫码量更大,可以考虑升级到付费版($5/月起),或者结合缓存策略降低回源次数。具体额度以 Cloudflare 官方最新政策为准。
2. 国内用户扫码会不会很慢?
如果使用默认的 *.workers.dev 域名,国内访问可能会比较慢,甚至在某些网络下无法打开。绑定自己的域名(且在 Cloudflare 上托管)可以改善不少,但因为 Cloudflare 的国内网络依赖于合作伙伴,效果因地区而异。实际使用前建议先自己扫码测试一下。如果访问困难,也可以考虑配合国内 CDN 反向代理。
3. 项目还在维护吗?怎么获取新功能?
项目作者不定期更新,你可以 Fork 后手动同步上游代码。如果遇到 Bug,可以去 GitHub Issues 区看看有没有解决方案。
4. 数据库操作有风险吗?
D1 数据库的所有修改都会即时生效。建议在更换微信群二维码之前,先通过后台测试一下新链接是否正常,再对外推广。
5. 可以同时管理多个微信群吗?
可以。在管理后台创建多个活码记录,每个对应一个不同的微信群二维码。你只需要对外分享不同的短链接即可。
总结:立刻动手部署你的永久活码
微信群二维码 7 天过期的限制,不应该成为私域运营的绊脚石。用 serverless-qrcode-hub 自建活码系统,今天花十几分钟搞定,之后就能一劳永逸地解决二维码频繁更换的问题。而且这套方案还能当短链接生成器使用,一举两得。
如果你对 Cloudflare 操作不熟,建议按照上面的步骤一步步来,遇到问题可以去项目 GitHub 页面看详细文档。如果实在不想折腾,也可以考虑付费活码工具,但数据控制权就交出去了。
和自部署类似的思路也适用于其他工具,例如本站之前写过的 gemini-web2api 部署到 VPS 完全指南,同样是利用无服务器或 VPS 环境自建服务,值得参考。
最后提醒一下:本文提到的所有服务(Cloudflare、GitHub、serverless-qrcode-hub)均为免费或开源方案,价格和优惠信息请以官方页面为准。实际操作中 Cloudflare 的套餐如有变动,建议在部署前查看最新价格。搭建过程中如果遇到难以解决的问题,也可以在本站搜索相关的 Cloudflare 教程文章,我们后续还会更新更多基于 Workers 的自部署方案。
原创文章,作者:cn2gia,如若转载,请注明出处:https://vpscn2gia.com/permanent-wechat-qrcode-cloudflare-workers-d1-setup/
