DevOps
Docker/Portainer、Traefik、Cloudflare 隧道、约 140 个容器的 NAS 家庭机房、备份与监控——我最硬核、实操最深的领域。
本分类共 12 篇文章
-
当数据库客户端对你撒谎:为 MariaDB 修补 Workbench 26
MySQL Workbench 26.7.0 能连上 MySQL 8.4,却在 MariaDB 上报出一个毫无意义的 TypeError。三处修补,以及为什么版本号不再能说明它是什么引擎。
-
用 IPBan 替换 RDPGuard:没人写出来的三个坑
我把付费的 RDPGuard 7.8.7 换成了开源的 IPBan 4.1.0,踩到三个没有文档的坑——其中一个卸载程序会悄悄放走 12 个正在攻击的 IP。
-
n8n v1 升级到 v2:一个日志文件里的七项废弃警告
我的自建 n8n 从 1.x 升级到 2.40.1,一次性暴露出七处静默失效——包括一个被 schema 校验拒绝的遥测事件、废弃的 webhook 变量,以及一个悄悄把 AI 沙盒关掉的数据库覆盖值。
-
换了不同的硬盘,同样的损坏又来了——真凶是 TRIM,不是 SSD
两周前 btrfs RAID1 阵列在看似健康的 NVMe 盘上静默损坏数据,两周后同一个全零校验和出现在完全不同的硬盘上。真凶是 Seagate IronWolf 110 上的队列化 TRIM(NCQ)——FreeBSD 早就拉黑了这个固件缺陷,Linux 却一直没有。我是怎么抓到它、以及修复方法的全过程。
-
我差点把这颗 SSD 送修——真正坏的是 SATA 数据线
一颗 Seagate IronWolf 110 SSD 疯狂报 WRITE FPDMA 超时、mkfs 报 'superblock magic doesn't match'、然后读写静默——教科书般的坏盘。我只换了一根 SATA 线,它就干净格式化、零报错。动手判死刑前,先这样排查。
-
SMART 显示健康,RAID 却在悄悄损坏数据
两块看起来完全健康的 NVMe 组成的 btrfs RAID1 阵列,静默地把 Windows 虚拟机喂成了全零字节。我靠校验和取证抓住它——但根因(M.2 转接卡链路故障 vs 批次缺陷)至今仍未定论,现在两块盘测试都干净。
-
Unraid 停止阵列时卡死的真相:Swapfile 锁住挂载点 — 附修复方案
Unraid 停止阵列时一直卡在卸载磁盘:btrfs RAID1 上的 8GB swapfile 通过 loop 设备锁住 /mnt/cache。根因分析、/boot/config/stop 陷阱、两个 User Scripts 彻底修复。
-
Passbolt 界面反复卡死——一个缺失的配置文件引发的三种故障模式
自托管的 Passbolt 连续几周返回 504:GPG 指纹为空卡住邮件投递,重建容器抹掉了修复,代理后面的 ssl.force 又造成无限重定向。
-
Authentik 从 2025.8 升级到 2026.8:那些没人提醒你会坏掉的部分
一年份的 authentik 大版本升级踩坑记录:存储挂载变更、RBAC 会话清理、可信代理,以及 authorization_flow 与 authentication_flow 搞混导致 SSO 彻底瘫痪。
-
不用界面管理 CyberPanel:逆向一个没有文档的 v2 API
CyberPanel v2 砍掉了有文档的 JSON API,只留下 Angular 界面自己调用的 session + CSRF 端点。这篇文章讲清确切的认证流程,以及我怎么从页面背后挖出真正的函数。
-
加固 Tor 洋葱服务:真正重要的是什么
出于对暗网的好奇,我把个人主页和 Git 服务器镜像了过去。这篇记录哪些加固扛得住、哪些会悄悄坏掉,以及值不值得把它当成服务卖给客户。
-
Telegram 机器人通知为什么发不出去:IPv6、DNS 和一个折腾了一整天的 400
一次排障记录:一个跑在 Docker 里的 Telegram 监控机器人,sendPhoto 一直返回 nginx/1.30.1 的 400,但 getMe 却正常——根因是只返回 IPv6 的 DNS 应答、一个写错的 extra_hosts IP,以及一个用 join 拼接破坏了 JPEG 二进制数据的 multipart body。