h.侯尧天 PERSONAL LAB
MY WORK / 个人实践

把问题,
做成实践。

网络、开源服务和 AI 工具。
从使用中的不便出发,记录选择、过程和结果。

六个案例,各有侧重。先看一页简历 ↗

6 个案例 · 选择一个展开

CASE 01 / 网络与虚拟化2026.10.13 实测

DERP 中继实验

从连接到验收

在 Debian VPS 上部署 DERP,围绕公网连接、节点准入和双向消息转发完成一轮实验,并检查准入服务停止与恢复后的连接行为。

CLIENT ADERPCLIENT BTLS · 双向消息验证
案例示意 · 非运行截图TLS / ACCESS CONTROL

遇到的问题

部署中继之后,怎样确认连接身份、消息内容和准入失效时的行为?这次实验从这些问题出发,在正常转发之外,也把拒绝连接与服务恢复纳入测试。

怎么推进

实验先确认域名解析和 TLS 入口,再设置节点公钥白名单。随后用两个逻辑客户端校验双向消息,并依次测试未登记身份、准入服务停机和服务恢复后的新连接。

结果与收获

登记节点能够转发消息;未登记节点被拒绝。准入服务停机时,新连接没有被默认放行;恢复服务后,双向转发再次通过校验。

我的参与与协作分工

我提供 VPS 和域名,完成 DNS 指向;构建、服务配置、测试程序与测试执行由 Codex 完成。

换一个场景,看准入行为

测试记录演示 · 非实时

允许握手并转发消息

双向每方向 20 条、每条 1 KiB,校验来源与内容一致。

这是两个逻辑协议客户端,不是两台真实 Tailscale 设备。
测试记录 · 范围说明
  • 基于官方 Tailscale v1.104.1 模块的构建记录
  • 每方向 20 条、每条 1 KiB,双向共 40 条内容一致
  • 未登记节点拒绝、准入停机拒绝与恢复后复测记录

本次协议实验使用同一台 Mac 上的两个逻辑客户端,覆盖公网 TLS 连接、消息转发与新连接准入。测试不包含真实 Tailscale 设备的业务选路,未开启 STUN,结果不代表吞吐性能或长期可用率。页面交互演示测试行为,不读取服务器实时状态。

下载脱敏实验记录 ↓
CASE 02 / 网络与虚拟化主路由配置实践

PVE × iStoreOS

把四个网口理清楚

在四网口小主机的 PVE 中运行 iStoreOS,并曾把它作为主路由使用。最花时间的不是启动系统,而是弄清物理网口、管理网络和虚拟网卡怎样对应。

iStoreOSPVE / VIRTUAL MACHINE
01020304
光猫 → 小主机 → 电脑
案例示意 · 非运行截图VIRTUALIZATION / NETWORK

遇到的问题

当时的接线很简单:上游光猫接入小主机,小主机再连接电脑。但进入虚拟化环境后,机身上的网口、PVE 的管理入口和 iStoreOS 看到的接口,并不是同一层概念。

怎么推进

我自行查资料、尝试接口配置,逐步对应物理端口、PVE 管理网络和分配给 iStoreOS 的虚拟网卡,再区分 LAN 与 WAN 的用途。当时的 AI 主要用来查资料,具体配置由我摸索。

结果与收获

iStoreOS 曾实际承担主路由,为下游电脑提供网络。通过这段实践,我开始把物理接口、虚拟网卡和 PVE 管理入口放在一起考虑,梳理它们在同一条网络链路里的不同用途。

我的参与与协作分工

我自行摸索接口配置与调整;AI 只辅助查询资料,没有代为部署或修改配置。

实践要点 · 范围说明
  • 四个物理网口,连接上游光猫与下游电脑
  • PVE 管理网络与 iStoreOS 虚拟网卡的对应配置
  • iStoreOS 曾实际作为主路由使用

本案例介绍四网口小主机的主路由使用经历,重点是物理接口、PVE 管理网络、虚拟网卡与 LAN/WAN 的对应。连接图呈现当时的接线关系,不包含网桥、拨号、DHCP 或 NAT 的完整配置。

CASE 03 / 服务与自动化容器服务部署实践

OpenList 网盘接入

让资源获取少绕一步

起点只是想在 Arch 上下载一份整合包。为了不在每次获取资源时都借助手机中转,我调查并选用 OpenList,以 Docker 部署后接入夸克网盘。

OpenListRESOURCE ACCESS ↗
ARCH ↔ CLOUD
案例示意 · 非运行截图DOCKER / RESOURCE ACCESS

遇到的问题

「落幕曲」当时通过夸克网盘分发,而我日常只使用 Arch。手机传文件可以解决眼前的下载,却意味着后续更新还要重复这一步,因此我开始寻找更适合当前环境的获取方式。

怎么推进

调查相关项目后,我选择 OpenList。AI 提供 Docker 部署命令,我按文档完成网盘侧配置与凭据填写,逐步把服务和网盘接通。这也是我第一次实际接触 Docker。

结果与收获

完成网盘接入并取得所需资源,为后续安装整合包做好准备。一次下载上的不便,也成为我接触 Docker 部署、阅读服务文档和配置网盘接入的起点。

我的参与与协作分工

我判断需求、调查并选择工具,按文档完成网盘接入配置;Docker 部署命令由 AI 提供。OpenList 本身是上游开源项目。

实践要点 · 范围说明
  • 在 Arch 使用环境中选用 OpenList
  • 借助 AI 提供的命令,以 Docker 部署服务
  • 按文档配置夸克网盘接入,取得所需资源

本案例聚焦 OpenList 的 Docker 部署、夸克网盘接入与资源获取,不涉及自动检查或下载更新。页面展示配置流程,不公开网盘凭据或可直接连接的私人配置。

CASE 04 / 网络与虚拟化隔离网络实验

Debian 隔离验证

远程实验,也要能退回来

远程网络实验首先要保住管理连接。这次在 Debian VPS 上按用户 UID 限定测试流量,配合最长 120 秒的运行限制,把测试前、运行中和停止后的检查连起来。

120sRuntimeMaxSecSSH · 管理连接保留
案例示意 · 非运行截图ISOLATION / RECOVERY

遇到的问题

VPS 依赖 SSH 远程管理。如果实验影响了管理流量,配置还没验证完,就可能先失去连接。因此实验的前提是保留 SSH 和已有服务,并限制变更范围。

怎么推进

先记录原有状态,再按 UID 限定实验流量。测试服务默认禁用、设置不自动重启和最长运行 120 秒,随后检查 TCP、DNS、UDP 与文件传输,结束后复核临时接口、规则和既有服务。

结果与收获

当次实验完成了 TCP 顺序与并发、DNS、UDP 和 5 MB 传输测试。停止后继续检查临时接口和规则清理,以及 SSH 与原服务状态,将通信验证与停止后的复核接在一起。

我的参与与协作分工

我提出保留 SSH 与既有服务的约束,并核对停止后的恢复状态;Codex 协助完成隔离配置和测试。

测试记录 · 范围说明
  • 当次 TCP 顺序测试 10/10、并发测试 20/20
  • 当次 DNS、UDP 测试各 10/10,完成 5 MB 传输
  • 停止后的接口与规则清理、SSH 和原服务复核记录

以上数字为当次 Debian 隔离实验的测试结果,配置与测试包含 Codex 协助。记录覆盖通信校验和停止后的恢复检查,不代表长期可用率,也不替代其他平台的实际验证。

CASE 05 / 服务与自动化脚本实现与规则测试

Docker 异常监控

正常等待,不必被打扰

容器显示 running,里面的任务却未必正常推进。为此增加独立看门狗,结合运行状态、错误日志和业务进度判断异常,同时把扫码、排队等正常等待单独处理。

CONTAINER RUNNING检查任务,而不只是进程。
案例示意 · 非运行截图OBSERVABILITY / ALERTS

遇到的问题

自动化任务并非一直有新进度:扫码和排队都可能让日志暂时停下来。如果只看容器是否运行,容易漏掉故障;如果把所有静默都判为卡死,又会误报正常等待。

怎么推进

监控结合容器状态、重启次数、错误日志与业务活动进行判断,对异常通知去重,并在恢复后补发消息。疑似卡死只告警;容器已经停止,则按脚本配置尝试启动。

结果与收获

监控能够区分异常与正常等待,对同一异常去重提醒,并在恢复后单独通知。错误、退出、恢复和正常等待等场景均有测试摘要,配套保留脚本与 systemd 单元。

我的参与与协作分工

我提出异常提醒、防误报和疑似卡死时只告警的要求,并参与规则讨论;脚本编写、部署和测试有 Codex 协助。

这个状态,应该怎么处理?

规则示意 · 不读取容器
现有监控规则业务状态判断

等待本身不触发告警

容器仍在运行,日志显示等待扫码或排队,且没有明确的超时或错误记录。

处理方式

将其视为合法等待;不因暂时没有游戏进度就重启容器或发送卡死告警。

一旦出现排队超时、登录超时等明确错误,仍应进入错误告警路径。
代码与测试 · 范围说明
  • 保存的看门狗源码与 systemd 单元
  • 错误、退出、恢复和正常等待的测试摘要
  • 交互演示现有监控规则,以及独立的时长提醒设计

本案例介绍已有监控脚本与规则测试,代码实现包含 Codex 协助。测试记录不包含整体误报率测量,也不代表服务器当前运行状态。页面演示不读取容器、不发送通知;时长提醒为设计展示,不属于已部署的监控功能。

CASE 06 / 服务与自动化联机与服务端维护

Minecraft 独立服务端

为三个人,单独开个服

从自己装好「落幕曲」,到帮两位室友一起玩,再到不必一直开着个人客户端的独立服务端。这段实践始终围绕一个实际需求:让不同作息的三个人都能联机。

3 PLAYERS
ONE SHARED WORLD
案例示意 · 非运行截图MULTIPLAYER / OPERATIONS

遇到的问题

校园网络存在 AP 隔离,近在同一寝室也不能直接依赖局域网联机。大家作息又不一致,使用游戏内“对局域网开放”意味着我的客户端需要一直开着。

怎么推进

先协助室友安装整合包,通过 SakuraFRP 转发游戏内开放的端口,完成三人联机。后来采用作者提供的服务端包,借助 AI 在本地 Arch 电脑上用 itzg / Docker 部署独立服务端。

结果与收获

三人成功共同游玩,后续不再依赖我的游戏客户端持续打开。一次大量破坏方块后的服务异常,经重启后继续使用,并添加了掉落物上限和超限清理规则;故障根因没有最终确认。

我的参与与协作分工

我负责需求、工具选择、安装协助和游戏设置维护;整合包与服务端来自原作者,部署代码和技术维护主要依赖 AI。

实践要点 · 范围说明
  • 通过 SakuraFRP 完成三人联机
  • 原作者服务端包在 Arch 电脑上以 Docker 运行
  • 服务异常后重启,并增加掉落物上限与超限清理

本案例介绍三人联机、独立服务端部署与游戏设置维护。整合包经反复安装后成功,安装失败与后续服务异常均没有确认根因,重试成功不代表已定位或修复故障。图示呈现使用流程,不提供完整部署参数。

LET’S CONNECT

你好,我是侯尧天。

如果想了解某段实践,或聊聊工作机会,欢迎联系我。

houyaotian@qq.com ↗
微信houyaotianwechat
查看简历 ↗