博客
共 41 篇文章
一次 Android chroot 递归挂载事故
事故复盘 · 4手机使用清理功能后,多个 App 和 SSH 同时失效。这里记录安全模式恢复、目录权限检查、递归挂载来源和启动脚本修改。
1. 恢复基本操作 · 2. Termux 恢复后的检查 · 3. Ubuntu 挂载为什么不断增加 · 4. 插曲:pgrep 造成的误判
把闲置小米手机改成 Ubuntu 服务器
硬件折腾 · 3在已 Root 的 Android 13 手机上安装 Ubuntu 24.04,配置 22/8022 两个 SSH 端口、ACC 充电限制和开机脚本。
1. 准备的软件 · 2. 安装 BusyBox、chroot-distro 和 Ubuntu · 3. Ubuntu 里没有 systemd · 4. 配置两个 SSH 端口
把手机服务器接入 Tailscale、SSH 和监控
网络与组网 · 9Tailscale 安装在 Android,其他设备通过一个 SSH Host 连接手机,再用 Uptime Kuma 检查 22 端口,用 Beszel 查看 CPU、内存和磁盘。
1. 为什么后来改用 Tailscale · 2. Tailscale 安装在 Android · 3. 在其他设备中加入 SSH 配置 · 4. 检查 SSH 公钥登录
用 Docker Compose 自建 Headscale,并接入手机和电脑
网络与组网 · 1在 VPS 上部署 Headscale 0.29.3 和 Caddy,创建用户与一次性密钥,再让 Android、iPad、Linux 和 macOS 加入自己的 Tailnet。
1. 准备域名和服务器 · 2. 创建目录并下载同版本配置 · 3. 编写 Docker Compose 配置 · 4. 修改 Headscale 配置
把 USB 打印机改成全屋无线打印机:斐讯 N1 + CUPS + brlaser
硬件折腾 · 4在斐讯 N1(Armbian/Debian 12)上用 CUPS、Avahi 和源码编译的 brlaser 6.2.8,把只有 USB 口的 Brother HL-2240D 发布成局域网 IPP 打印机,Windows、Android、MacBook 和 Tailscale 设备都能打。
选型:cudy 还是 N1 · 驱动路线:为什么要自己编译 brlaser · 本文实际时间线与较短路径 · 本文实际时间线
代理出口间歇性卡顿排障:从 IPv6 怀疑追到 DNS 解析差异
代理与出口 · 4出口间歇性卡到 1.2 秒,IPv6 和代理实现两个假设先后被自己的数据推翻。最后观察到两台同架构设备解析同一域名拿到不同 IP,改 DNS 上游后短期恢复正常。但差异由哪家上游返回、差异如何产生,都没有记录和证明。
香港 VPS 到底是不是 CN2:把营销标签拆成可验证的路由证据
代理与出口 · 3同一台香港 VPS,电信路径能看到 59.43 和 CTCN2,联通走 4837,移动走 CMI。如何用分运营商 traceroute、BGP 视图和证据边界判断它是选择性 CN2,而不是笼统的 CN2 GIA。
我的代理出口层是怎么搭的:集中生成配置、语义 selector 和运行时验证
代理与出口 · 1配置怎么生成和下发,selector 为什么管出口语义而 urltest 只在等价入口内工作,以及为什么禁止手改生成配置。
Sub2API 频繁 503:ping 正常时的一次分段排障记录
代理与出口 · 2客户端频繁 503、ping 却正常。逐段排查后把流停滞的位置定在德国 VPS 到家庭节点 SOCKS 之间,并确认 503 由 Sub2API 本地熔断产生。家庭设备为何无响应未查明。
服务器报警了不用我爬起来查,一个 Hermes 应用案例
自托管服务 · 6让 Hermes 这个 AI agent 替我值夜班:告警进来后它自己 SSH 进设备查 sshd、负载和登录日志,分清真故障和探针抖动,再把结论发到 Telegram。记录 webhook、签名、诊断、投递这条链路是怎么搭起来的。
1. 告警来源 · 2. 95 行的 signer · 3. infra-alert 路由和 SSH · 4. 双路通知