WJ

个人技术笔记 · 自用小工具

WJ的 技术笔记

把自己用的小工具和一点点笔记,
停在这里。

往下翻
第 2 话

小工具

第 3 话

笔记

  1. 跨境只有 25 KB/s:把部署包从 22 MB 砍到 2.6 MB

    GitHub Actions 在海外构建,服务器在国内。实测两边互传只有 25~40 KB/s,一个带 node_modules 的 Next.js standalone 包是 22 MB,传一次要 13 分钟。

    做法是包里只放编译产物和依赖清单(package.json、pnpm-lock.yaml),服务器用国内的 npm 镜像自己装依赖,并按清单的哈希缓存,依赖没变就直接复用。

    结果:包 2.6 MB,上传约 1.5 分钟,服务器端部署 4 秒。

  2. 给 Fork 装一个每天自动追上游的小机器人

    每天定时把代码重置到上游最新版,但保留自己的 .github 目录,再用一个脚本把本地修改重新打一遍补丁。这样自己的改动永远不会和上游冲突。

    两个坑:一是用 GITHUB_TOKEN 推送的提交不会触发其他工作流,所以部署要在同一个工作流里显式调用;二是和上次相比没有变化时要跳过推送,否则每天都会白白部署一次。

  3. 一把只能上传、不能登录的 SSH 密钥

    让 CI 往服务器推送文件,又不想把服务器的钥匙交出去:在 authorized_keys 里给这把公钥加上 restrict,command="…/receive.sh"。

    不管对方想执行什么命令,都只会跑这个接收脚本;端口转发会被拒绝(administratively prohibited)。解压也用低权限用户执行,健康检查失败就自动回滚到上一个版本。

番外

关于

WJ,写点代码,做点自己用的小工具。这里是个人技术笔记,
非经营性网站。