Cloudflare 免费节点与额度线

免费节点跑在 Cloudflare 上,按 https://github.com/byJoey/cfnew 部署到 https://lx.snglz.link/sb,订阅端点是 https://lx.snglz.link/sb/sub,订阅正常下发 82 个节点。部署时核对过:兼容日期 2026-01-20,KV 绑定变量名是 C。优选 IP 源是 5 个 bestcf.pages.dev 地址:tiancheng/hk、tiancheng/sg、tiancheng/jp、tiancheng/kr 加 domain/mini.txt。免费额度有三条独立的线,每条都摸过一遍。 第一条是 Workers 每日请求数,上限 10 万。实际每天约 9.5 万,只差 5%。10 月 15 日凌晨烧完过一次:Gmail 告警 01:22(76%)、04:32(91%)、06:14(已超限),08:00(00:00 UTC)重置后恢复,09:35 实测订阅 200、82 个节点正常。10 月 16 日凌晨 02:56 才收到 75% 告警,自 08:00 重置起 19 小时仅用 7.5 万,赶不上 8 点重置,订阅实测正常、82 个节点照常下发。按实际速率全天约 9.5 万请求,离 10 万上限只差 5%,白天用得比凌晨多。结论是每天都在额度边缘,一忙就断。升付费版(每月 5 美元)还是先看控制台指标,还没定。 第二条是 KV 读次数。有天连收 50% 告警,2026-10-21 我进 Cloudflare 控制台只读核查,查了才发现烧量的不是节点用的 lx Worker,而是另一个 Pages 项目 cfnext(域名 cfnext.snglz.link,2026-10-20 下午 15:56、16:24 两次部署)绑定的 cfnext 命名空间(绑定变量名 K):过去 24 小时读 63k 次,占全账户约 98%。lx Worker 的绑定 C 指向 lx 命名空间,当天仅读 25 次,与其调用数一致,是无辜的。账户共有 7 个 KV 命名空间:cfnext、edge、lx、magic、store-fuck、test、warp。今晨 08:12 第二封 KV 告警与控制台数字对不上(今日全账户仅约 5.5k 读),原因未明,已如实说解释不了。处理 cfnext 还是升级付费版,等拍板。 ...

November 6, 2026 · 1 min

Mac 系统停在 15.8.2

11 月 4 日给自己定了一条规矩:这台 Mac 的系统停在当前版本,不再往上升。以后凡是涉及系统升级的建议,都先确认,不默认推荐升级。这台是 snjesus 的 Mac mini,当前系统是 macOS 15.8.2(Sequoia,Build 24H232),与 BD4TWO 那台 Mac mini(macOS 26.5.2)是两台不同的机器,不要混淆。 底线先落实。自动更新设置里,“下载可用的更新"和"安装 macOS 更新"都已关掉,“安装来自 App Store 的应用程序更新"和"安装安全响应和系统文件"留着开。自动更新关了,系统就不会自己升,横幅只是碍眼。 光有关自动更新还不够,系统还会推送新版本横幅。办法是装一个 90 天延迟描述文件,让新版本晚 90 天再出现。文件是 ~/workspace/your_files/DelayMajorUpdates90.mobileconfig,PayloadIdentifier 是 com.guo.delay-major-updates,内层类型 com.apple.applicationaccess、forceDelayedMajorSoftwareUpdates=true、延迟 90 天。第一版没生效:查安装器列表,新版本那行延迟标志还是 NO。2026-11-04 跑 softwareupdate --list-full-installers,全部条目 Deferred: NO,含 macOS 27.2(Golden Gate,Build 26B123,12.93GB)、27.0.1、27.0 及 Tahoe 各版。原因是第一版没写 PayloadScope,默认按用户级装,限制类载荷在用户级不生效。改了一版带 PayloadScope System 的,准备重新装。 这里有个坑:15.8.2 上命令行安装描述文件已被废弃,sudo profiles install 被系统拒绝,报错"profiles tool no longer supports installs. Use System Settings Profiles to add configuration profiles.",必须走图形界面——系统设置、通用、设备管理里装。流程是先删掉旧的描述文件,再双击新文件,在设备管理里批准,装完重跑安装器列表,看 27.2 那行延迟标志是否变成 YES;若仍 NO,则手动安装的限制类描述文件在此系统上确实不被采纳,放弃藏横幅、只靠关自动更新。 ...

November 6, 2026 · 1 min

Mac 小工具

11 月初给 Mac 挑了几样小工具:动态壁纸、文本编辑器、终端。每一件都按实际需求分开算,不给笼统的"最好用"。 动态壁纸想要黑客帝国瀑布式数字雨。做法是自己写一个单文件网页 matrix-rain.html(canvas 数字雨,绿字拖尾、亮雨头,顶部常数 FONT_SIZE/TRAIL/SPEED_MIN/SPEED_MAX 可调密度、速度、拖尾,约 30fps,页面隐藏自动暂停),在 ~/workspace/your_files/matrix-rain.html;再用免费应用 Plash 把这个本地网页(file:// 完整路径)设为桌面。限制要先说清楚:只在解锁后的桌面可见,锁屏看不到;Plash 最新版要求 macOS 26.4 以上,15.8.2 要用匹配系统的旧版。装好没有、显示正不正常,还没确认。 文本编辑器问了三轮,答案得分开算。只装一个,选 VS Code,免费、插件、Git、终端、调试一体,有微软官方简体中文语言包。纯文本处理选 BBEdit,下载包最小(App Store 标 23.7MB),但界面只有英文、无中文界面,编辑中文内容不受影响。跑起来最轻快是 Zed,空闲内存约 50–100MB,VS Code 约 300–500MB。后来又补了一个同时满足小巧加中文界面的:CotEditor,免费、Mac 原生、带简体中文,App Store 标 18.7MB(比 BBEdit 还小),支持 CJK;但它是纯文本编辑器不是 IDE,写代码做项目还是 VS Code;App Store 最新版 7.1.3 要求 macOS 26.0 以上,低于 26 需用匹配系统的旧版。选哪个还没定。 终端默认推荐 Ghostty(2026 年共识默认,快、原生 Metal 渲染、免费开源、零配置开箱即用,brew install --cask ghostty),功能最多的备选是 iTerm2(分屏、触发器、原生 tmux 集成、图形设置),想要 AI 和分块功能的可以看 Warp(客户端 2026 年 4 月开源、AGPL,登录自 2024 年 11 月起不再强制)。装没装还没确认。 ...

November 6, 2026 · 1 min

Muse Terminal AI Passport

10 月 10 日开始在 Mac mini 上装一套硬件桥接:把 AI 会话接到一个终端设备上,项目是 muse-terminal-ai-passport(github.com/jonwong0882-source/muse-terminal-ai-passport),把 FoloToy AI Passport 改成访问我自己 Muse 会话的语音终端。装在 BD4TWO 的 Mac mini 上,主目录 /Users/snjesus,macOS 26.5.2,Python 3.13(/opt/homebrew/bin/python3.13)。包和固件都按校验和验过,没问题:最新 Release 是 v1.0.0(唯一发布),ZIP 完整性 OK,SHA256SUMS.json 全部 170 条哈希逐一核对一致,固件 FoloToy-AI-Passport-full.bin 的 SHA-256 是 ef16688d7de00035e94ddc607ec5265f4f1fb8105ae0141e3d4e1fb7b3714fc9,与文档要求一致,是从 0x0 刷写的合并镜像。 装的过程中遇到一个小插曲:桥接代码写死走 Chrome,但我不想装 Chrome(这台只装了 Edge 和 Safari)。解决办法是改一行代码,让它走我已有的 Edge:source/companion/muse_web.py 里 channel='chrome' 改成 channel='msedge',改之前原文件做了备份(muse_web.py.orig)。虚拟环境在 ~/Library/Application Support/MuseTerminal/venv,esptool 5.5.0、aiohttp 3.13.3、faster-whisper 1.2.1、playwright 1.63.0、pyserial 3.5 均在位。 真正卡住的地方在健康检查。桥要找会话页面的输入框来确认就绪,但我给它的地址是个侧边对话(side chat),页面结构和普通主会话不一样,输入框根本不存在,健康检查一直报 muse_ready=false、no_composer(speech_ready=true)。串口和刷固件的步骤必须等桥健康之后再做,顺序不能乱。串口候选有两个:/dev/cu.usbmodem21201 是当日新出现、疑似 Passport,/dev/cu.usbmodem2020_12_222 是既有的,尚未经插拔比对确认,禁止凭猜测刷机。 下一步很具体:在桥专用的浏览器窗口里打开一个普通主会话,发一句"hello",把新的 muse.ai/thread/ 地址给我,重启桥再验健康。 现状:等这条普通主会话链接,桥接停在我这边。

November 6, 2026 · 1 min

Newifi D1 精简 MMDVM 固件

手里这台 Newifi D1 是我的 MMDVM 数字热点用机,联想 Newifi D1,MT7621AT 双核 880MHz、256MB 内存、32MB 闪存加 128MB NAND、USB 2.0 加 USB 3.0、TF 卡槽。现用固件是定制版"江苏曈宇 2026.10 / MMDVM数字热点",内核 5.4.255,截图显示内存总量 245.13MiB、可用 156.78MiB。现用固件里塞了不少用不上的插件,11 月 5 日决定自己编一套精简版,只留要用的东西。 规格先定死:全模式都要(D-Star、DMR、YSF、P25、NXDN、POCSAG、FM),热点板走 /dev/ttyS0(板载 UART,115200),配置由我手动填、服务默认不启用。呼号 BD4TWO 预填进 MMDVM.ini 及各网关配置模板的 Callsign 栏,DMR ID、频率、服务器密码留空占位,绝不编造。型号栏显示"Newifi-D1 by BD4TWO"(现固件显示的是 Newifi-D1 by BI4PCS),仪表盘也要带上(DG9VH MMDVMHost-Dashboard PHP 版)。底座用官方 OpenWrt 24.10.5 Image Builder(profile lenovo_newifi-d1),镜像上限 IMAGE_SIZE 32448k,刷机走 Breed,不保留旧配置。固件默认 LAN 地址沿用官方 OpenWrt 的 192.168.1.1(LuCI http://192.168.1.1,SSH root@192.168.1.1,首次无密码)。 第一版很快编出来了,13,894,743 字节,SHA256 是 f8e1148ec6e3a1b796073076d228c7ede0733f8a9502f9d56e478208dde0820c,刷上去却起不来:蓝灯一直闪,Mac 直连拿到 169.254.13.87 自分配地址(子网 255.255.0.0,无路由器),说明未获 DHCP,打不开 192.168.1.1。蓝灯是 gpio16 系统灯,正常启动完成应常亮,一直闪就是未启动完、安全模式或启动循环。查编译日志没报错,镜像结构也对得上。起初怀疑网线插错了口——这台机器一共只有 3 个网口(1 个 WAN 加 2 个 LAN),我之前还错说成 4 个 LAN 口。Breed 重刷还是一样。 ...

November 6, 2026 · 2 min

Panabit 上禁 IP

家里在用 Panabit 流控标准版(新版 UI),管理地址是 https://10.0.0.9,账号 snjesus。有次想禁掉一个地址,管理页里现成的示范规则看着很像答案,但用错地方会白忙一场。 关键区别是:DNS 管控只能断 DNS 查询。DNS 管控 → 策略管理页已有现成规则示范:402(目标地址=恶意地址、动作丢弃)、403(源地址=恶意地址、动作丢弃),用地址对象 + 丢弃动作拦流量。照着 402/403 在 DNS 管控里仿一条,只能拦住域名解析,对方直接连 IP 地址照样通。想断掉某个地址的全部流量,得走流量控制:建一条策略组匹配那个地址,绑到一个上下行带宽都是 0 的数据通道上,等于阻断。先在「数据通道」新建一条上下行填 0、命名"阻断",再在策略组里绑它。 策略组和地址对象、丢弃动作的用法,管理页里已有现成规则可以照着抄,照猫画虎不难。真正没验证过的是 0 带宽通道能不能保存下来——如果保存时报错,就把报错截图回来再看。还有一点:这条规则只对那一个地址生效,别误伤正常流量。 现状:方法已定,0 带宽通道能否保存、实测效果如何,等反馈。

November 6, 2026 · 1 min

Ubuntu 上 Steam 打不开

Steam 装在一台 Ubuntu 机器上,10 月 28 日启动失败。这台是联想 ThinkCentre E77(bd4two@bd4two-ThinkCentre-E77),系统是 Ubuntu 24.04 64-bit,不是 Mac mini,跨机器排查必须先写死执行位置,之前就因为默认成 Mac mini 给错过办法。 客户端能打开,但卡在下载更新清单那一步:从 client-update.steamstatic.com 下载更新清单失败,http error 0,报错提示需要联网更新——可机器明明是联网的。 有意思的是,崩溃上报能上传成功,说明一般出网是通的。问题收窄到 Steam 更新服务器这一条线:客户端连不上更新服务器,但别的出网正常。 下一步是查两样东西:终端里的代理环境变量(env | grep -i proxy),和对更新服务器地址做一次带超时的连通性检查(curl -sI -m 10 https://client-update.steamstatic.com/steam_client_ubuntu12)。代理如果配错了,Steam 这类程序可能走了错误的出口;连通性检查能区分是域名解析、连接还是传输层面的问题。 现状:等这两项检查结果再判。顺带给自己立个规矩:在 Steam 修好之前,商店打折先别买,买了也玩不了。

November 6, 2026 · 1 min

X API 按量计费变更

11 月 5 日收到一封计费变更邮件(X Developer Accounts,21:02 UTC):我的账号 @gp800911 在用 X API 的按量计费(PPU)。11 月 22 日起,请求里 expansions 返回的对象也要按标准费率计费,以前这部分是不计费的。 单价是每个对象计费:Post $0.005、User $0.010、Media $0.005、Poll $0.005、Place $0.005。用户对象最贵。以前只算主请求,现在展开带回来的每个对象都算钱,调用量大的话涨幅不小。 要做的事很明确:11 月 22 日之前,把各个请求用的 expansions 检查一遍,不用的删掉。我的实际用量和调用程序还没核实,涨多少算不出来,先把能省的省掉。 提醒已经发出过一次(2026-11-06 上午 10:32),不再重复。这篇就是留个记录:11 月 22 日是死线,检查 expansions,别等到账单来了才发现。

November 6, 2026 · 1 min

博客建站记录

今天把这个博客搭起来了,记录一下过程,免得以后忘了。 目标 一个个人博客,域名用自己的 blog.bd4two.eu.org,以后写无线电、技术和生活方面的东西。要求就一个:免费、稳定、自己能控制。 第一次尝试:GoogieHost,没成 一开始想走 GoogieHost 的免费主机,注册、选域名、下单都走完了,订单号都拿到了,结果被拒。拒的原因写得很直白:订单国家在中国,而中国在他们的禁用名单上。免费主机这条路就这么断了。 改走 Cloudflare Pages + Hugo 免费主机被拒后,改成静态博客的路线: Hugo:静态站点生成器,写 Markdown 就能出站,没有数据库、没有后台,简单可靠。 GitHub:源码放在 snjesus/hugo-blog,推到 main 分支即是发布。 Cloudflare Pages:接 GitHub 仓库,推代码自动构建部署,免费额度个人博客完全够用。 域名:blog.bd4two.eu.org,在 Cloudflare 上做 CNAME 指向 Pages,SSL 自动配好。 中间有个小插曲:GitHub 上本来已经有个 snjesus/blog 的库,里面是另一套完整的博客系统(Qingyu’Blog),不是空库。所以 Hugo 这套单独建了个新库 hugo-blog,没去动原来的那个。 搭建步骤 本地用 Hugo 建站,标题定为“BD4TWO 的博客”,写了篇欢迎帖占位。 GitHub 上新建公开空仓库 snjesus/hugo-blog,把源码推上去。 Cloudflare 上新建 Pages 项目 hugo-blog,连接这个仓库,生产分支 main。 构建设置:框架 Hugo,构建命令 hugo,输出目录 public,环境变量 HUGO_VERSION=0.169.0。 首次部署成功后,给项目加自定义域名 blog.bd4two.eu.org,Cloudflare 自动加了 CNAME 记录并启用 SSL。 打开 https://blog.bd4two.eu.org/ 验证,首页正常,标题、简介、文章列表都在。 写文章的方法 以后写新文章很简单:在仓库的 content/posts/ 里新建一个 Markdown 文件,文件头写标题和日期,正文写内容,推到 main 分支,Pages 会自动重新部署,几分钟后就能在博客上看到。 ...

November 6, 2026 · 1 min

博客上线后的改动记录

博客上线之后又做了几处改动:换 PaperMod 主题、关于页加图片、标题栏图标换成头像图、关于页图片改小并挪到呼号前面。这里把每一步的原样记录下来,包括涉及的地址和细节。 换 PaperMod 主题 上线时用的是自己写的极简模板,后来觉得功能太少,换成了 PaperMod。PaperMod 是 GitHub 上约 1.3 万星的开源主题,MIT 协议,零 JS 构建工具,自带搜索、深浅色切换、目录、面包屑、封面图、多语言支持,不用 Node 和 Ruby,Cloudflare Pages 自带的 Hugo 就能编。 安装没走常规的子模块或 Hugo Modules 路线,而是把主题文件直接拷进仓库根目录的 layouts/、assets/、i18n/,一共 121 个文件。旧的 4 个自定义模板(layouts/_default/baseof.html、list.html、single.html、layouts/index.html)被 PaperMod 的对应内容覆盖,static/css/style.css 改成一行注释弃用。PaperMod 要求 Hugo 不低于 0.158.0,当前用的 0.169.0 符合。 hugo.toml 按 PaperMod 的要求改了一遍:locale = "zh-cn"、defaultContentLanguage = "zh-cn"(languageCode 在 Hugo 0.158 起已废弃,改用 locale)、mainSections = ["posts"](PaperMod 首页靠它取文章列表)、菜单加了首页、归档、搜索、关于,[outputs] home 加了 JSON(给搜索索引用),params 里阅读时间、分享按钮、上下篇导航、面包屑、代码复制按钮、目录都打开,defaultTheme = "auto"。另外新建了 content/archives.md 和 content/search.md。 推送提交是 dbd66fcd48458e363ee461c52e2fd595b6476af3。本地构建通过,Pages 部署后复核:首页 200 且含 PaperMod 标记,搜索索引 index.json 200,归档和搜索页 200,文章页有 post-single 类,中文界面串(分钟、归档、搜索)正常,html lang="zh-cn"。 ...

November 6, 2026 · 1 min