13 KiB
13 KiB
📝 变更日志 (CHANGELOG)
所有针对 本机 (MacBook Air)、Mac mini (192.168.31.164)、小米路由器 (192.168.31.1) 及 Azure 2C4G 的配置变更均记录在此,包含具体命令与回滚方法。
[2026-11-06] 初始化阶段
1. 开启 Mac mini SSH 免密登录与快捷别名
- 操作时间:2026-11-06 21:29 ~ 21:32
- 目标设备:
- Mac mini (
192.168.31.164) - 本机 MacBook Air (
192.168.31.83)
- Mac mini (
- 变更内容:
- 在 Mac mini 系统设置中开启了“远程登录 (SSH)”。
- 通过
ssh-copy-id ixvii0iv@192.168.31.164将本机公钥写入 Mac mini 的~/.ssh/authorized_keys。 - 在本机
~/.ssh/config中新增了Host mini macmini快捷配置,开启心跳保活 (ServerAliveInterval 60)。
- 验证方式:在本机终端直接运行
ssh mini即可免密秒连 Mac mini。 - 回滚方式:编辑
~/.ssh/config删除Host mini macmini段落。
2. 创建本机 HomeLab 基础设施管理目录 (~/homelab)
- 操作时间:2026-11-06 21:32
- 目标设备:本机 MacBook Air (
/Users/ixvii0iv/homelab) - 变更内容:
- 创建
README.md(全局网络拓扑与设备资产表) - 创建
PLAN.md(4 阶段实施蓝图与进度表) - 创建
CHANGELOG.md(本变更日志文件)
- 创建
3. 配置 Mac mini 免密 sudo 与服务器电源防休眠策略 (pmset)
- 操作时间:2026-11-06 21:37
- 目标设备:Mac mini (
192.168.31.164) - 变更内容:
- 创建
/etc/sudoers.d/ixvii0iv(权限0440),赋予ixvii0iv用户免密sudo权限,便于自动化运维。 - 执行
sudo pmset -a sleep 0 disksleep 0 displaysleep 10 standby 0 autorestart 1 womp 1 tcpkeepalive 1 powernap 1,彻底关闭系统与磁盘休眠,并开启断电恢复自动启动与网络唤醒。
- 创建
- 回滚方式:
- 删除免密 sudo:
ssh mini "sudo rm -f /etc/sudoers.d/ixvii0iv" - 恢复默认休眠:
ssh mini "sudo pmset -a sleep 1 disksleep 10 autorestart 0"
- 删除免密 sudo:
4. 编写 Lucky 与 Azure 云边协同 Docker Compose 编排文件
- 操作时间:2026-11-06 21:38
- 目标设备:本机 MacBook Air (
/Users/ixvii0iv/homelab/stacks/) - 变更内容:
- 创建
stacks/lucky/docker-compose.yml(用于 Mac mini 部署 Lucky DDNS + HTTPS 反代) - 创建
stacks/azure-edge/docker-compose.yml与stacks/azure-edge/Caddyfile(用于 Azure 2C4G 部署 Uptime Kuma 监控与 443 免端口反代)
- 创建
5. 完成 Mac mini 软件底座、OrbStack、Tailscale、开发工具链及 agy 安装
- 操作时间:2026-11-06 21:38 ~ 21:43
- 目标设备:Mac mini (
192.168.31.164) - 变更内容:
- 安装 Xcode Command Line Tools 27.2 与 Homebrew 7.0.12 (
/opt/homebrew)。 - 通过 Homebrew Cask 安装并启动 OrbStack 2.2.5 (Docker Engine
29.8.2) 与 Tailscale 1.104.5。 - 安装 CLI 开发工具链:
git,tmux,btop,ripgrep,fd,jq,wget,fnm,uv。 - 安装 Antigravity CLI (
agy1.5.2) 至/Users/ixvii0iv/.local/bin/agy,并配置~/.zshrc与~/.zprofile的PATH环境变量。
- 安装 Xcode Command Line Tools 27.2 与 Homebrew 7.0.12 (
- 回滚方式:可通过
brew uninstall卸载对应软件包,或删除~/.local/bin/agy。
6. 锁定小米路由器 Mihomo 策略组出口至 SG Azure (233boy-sea / 104.43.105.243)
- 操作时间:2026-11-06 21:43
- 目标设备:小米路由器 (
192.168.31.1:9999) - 变更内容:
- 通过 Mihomo REST API 将
手动切换固定为233boy-sea,并将Ai平台与节点选择固定指向手动切换(取代原先会随延迟自动切换节点的自动选择),确保 Mac mini 与本机的agy流量 100% 稳定走 SG Azure (104.43.105.243)。
- 通过 Mihomo REST API 将
- 回滚方式:在路由器 Mihomo 面板 (
http://192.168.31.1:9999) 中将节点选择切回自动选择。
7. 在 Mac mini 上启动 Lucky 容器 (gdy666/lucky:latest)
- 操作时间:2026-11-06 21:45
- 目标设备:Mac mini (
192.168.31.164) - 变更内容:
- 同步
~/homelab/stacks/lucky/docker-compose.yml至 Mac mini 并执行docker compose up -d。 - 容器已启动,Web 管理面板监听
http://192.168.31.164:16601(默认初始账号密码:666/666),公网反代端口监听10443(TCP/UDP)。
- 同步
- 回滚方式:
ssh mini "cd ~/homelab/stacks/lucky && docker compose down"
8. 小米路由器底层固化:静态 DHCP 绑定、公网 10443 端口转发与 ShellCrash agy 规则锁定
- 操作时间:2026-11-06 21:49 ~ 21:50
- 目标设备:小米路由器 (
192.168.31.1) - 原始备份:
backups/router/config.yaml.bak(路由器端备份为/userdisk/ShellCrash/yamls/config.yaml.bak.20261106) - 变更内容:
- DHCP 静态绑定:通过
uci add dhcp host将 Mac mini (c8:80:6d:50:23:b1) 固定绑定为192.168.31.164(Mac-mini)。 - 公网端口转发 (
Lucky_HTTPS_10443):通过uci add firewall redirect将 WAN 口10443(TCP+UDP) 转发至192.168.31.164:10443。 - ShellCrash 规则永久固化(见
configs/router-shellcrash-config.yaml):- 将
Ai平台的默认首选节点改为狮城节点(该组仅包含coco-sea1-reality-sony与233boy-sea,两者服务端均为你的 SG Azure104.43.105.243)。 - 在
rules:中新增antigravity.google、gemini.google.com、googleapis.com、deepmind.com及RULE-SET,google统一指向Ai平台,彻底隔离其他策略组切换对agy出口 IP 的影响。
- 将
- DHCP 静态绑定:通过
- 回滚方式:
- 恢复 ShellCrash 配置:
cat ~/homelab/backups/router/config.yaml.bak | ssh 192.168.31.1 "cat > /userdisk/ShellCrash/yamls/config.yaml && /userdisk/ShellCrash/start.sh bfstart" - 删除端口转发:
ssh 192.168.31.1 "uci delete firewall.@redirect[-1] && uci commit firewall && /etc/init.d/firewall reload"
- 恢复 ShellCrash 配置:
9. 配置 Cloudflare DDNS 自动守护进程、*.home.961504.xyz 泛域名 SSL 证书与 HTTPS 反代网关
- 操作时间:2026-11-06 21:56 ~ 21:58
- 目标设备:Mac mini (
192.168.31.164) & Cloudflare (961504.xyz) & 小米路由器 (192.168.31.1) - 变更内容:
- Cloudflare DDNS:编写
scripts/cloudflare-ddns.sh并在 Mac mini 注册~/Library/LaunchAgents/com.homelab.cf-ddns.plist(每 5 分钟自动运行),已将home.961504.xyz与*.home.961504.xyz解析至当前联通公网 IP124.90.142.21。 - 泛域名 HTTPS 证书 (
acme.sh):通过 Cloudflare DNS-01 验证自动签发home.961504.xyz+*.home.961504.xyzECC 泛域名证书,存放于~/homelab/stacks/gateway/certs/。 - 明文 HTTPS 反代网关 (
home-gateway):部署stacks/gateway/docker-compose.yml与stacks/gateway/Caddyfile,监听10443端口提供:https://nas.home.961504.xyz:10443(z4.home.961504.xyz:10443) -> 极空间 Z4 (192.168.31.185:5055)https://lucky.home.961504.xyz:10443-> Lucky (16601)https://clash.home.961504.xyz:10443-> 路由器 Mihomo 面板 (192.168.31.1:9999)
- 路由器直连优化:在
configs/router-shellcrash-config.yaml中新增DOMAIN-SUFFIX,home.961504.xyz,全球直连,避免内网访问家庭域名时绕行境外代理。
- Cloudflare DDNS:编写
- 回滚方式:
- 停止 DDNS:
ssh mini "launchctl unload ~/Library/LaunchAgents/com.homelab.cf-ddns.plist" - 停止反代网关:
ssh mini "sudo brew services stop caddy"
- 停止 DDNS:
10. 部署家庭统一导航页 Sun-Panel (https://home.961504.xyz:10443) 与反代 Basic Auth 安全锁
- 操作时间:2026-11-06 22:06 ~ 22:08
- 目标设备:Mac mini (
192.168.31.164) - 变更内容:
- 部署
stacks/sun-panel/docker-compose.yml(监听3002端口),并在 SQLite 数据库中预置了 极空间 Z4、Clash 路由面板、小米路由器后台、Lucky 工具箱 四张卡片(同时配置了外网10443链接与内网192.168.31.x链接,支持一键切换内外网模式)。 - 更新
stacks/gateway/Caddyfile并同步至/opt/homebrew/etc/Caddyfile:- 新增总入口
https://home.961504.xyz:10443(及https://nav.home.961504.xyz:10443)反代至 Sun-Panel (127.0.0.1:3002)。 - 为
clash.home.961504.xyz:10443与router.home.961504.xyz:10443开启basic_auth密码认证(账号ixvii0iv,密码与 Mac mini 一致)。
- 新增总入口
- 部署
- 回滚方式:
ssh mini "cd ~/homelab/stacks/sun-panel && docker compose down"
11. 部署 Mac mini Tailscale 异地组网与家庭子网路由 (100.108.205.40)
- 操作时间:2026-11-06 22:10 ~ 22:18
- 目标设备:小米路由器 (
192.168.31.1) & Mac mini (192.168.31.164) & 本机 MacBook Air - 变更内容:
- 路由器防冲突配置:在
configs/router-shellcrash-config.yaml中将+.tailscale.com、+.tailscale.io、+.ts.net加入fake-ip-filter与全球直连,并添加防火墙Tailscale_UDP_41641端口映射,确保 P2P 直连打洞不被国外代理劫持。 - Mac mini 系统级守护进程:开启内核 IPv4 转发 (
net.inet.ip.forwarding=1),安装并启动sudo brew services start tailscale,执行sudo tailscale up --advertise-routes=192.168.31.0/24 --accept-dns=false。 - 组网结果:Mac mini 获得固定 Tailscale IP
100.108.205.40,同时实测 Mac mini 海外出口 IP 仍为104.43.105.243(SG Azure),对家庭原有网络零干扰。 - 本机 SSH 别名:在
~/.ssh/config新增Host mini-ts(100.108.205.40)。
- 路由器防冲突配置:在
- 回滚方式:
ssh mini "sudo /opt/homebrew/bin/tailscale down && sudo brew services stop tailscale"
12. 配置 SG Azure (104.43.105.243) 外部监控哨兵 (Uptime Kuma)、443 免端口反代与 Tailscale 联动
- 操作时间:2026-11-06 22:21 ~ 22:25
- 目标设备:SG Azure (
104.43.105.243/coco-sea1) & Cloudflare (961504.xyz) - 变更内容:
- Cloudflare DNS:新增
status.961504.xyz与nav.961504.xyz解析指向104.43.105.243。 - Uptime Kuma 容器:在 Azure Rootless Docker 中启动
louislam/uptime-kuma:1(监听127.0.0.1:3001,数据目录~/homelab/uptime-kuma-data)。 - Caddy 443 免端口反代:将
stacks/azure-edge/Caddyfile写入 Azure 的/etc/caddy/sites/homelab.conf并重启 Caddy,使https://status.961504.xyz与https://nav.961504.xyz免端口 HTTPS 生效。 - Tailscale 组网:在 Azure 安装 Tailscale(开启
--accept-dns=false --accept-routes=false确保不影响原有233boy代理节点),获得虚拟 IP100.115.204.51并与家里 Mac mini (100.108.205.40) 建立 P2P 直连。
- Cloudflare DNS:新增
- 回滚方式:
ssh azure "sudo rm -f /etc/caddy/sites/homelab.conf && sudo systemctl restart caddy"
13. 部署微信(企业微信自建应用 \leftrightarrow 个人微信)双向控制与通知网关 (https://wx.961504.xyz)
- 操作时间:2026-11-06 22:30 ~ 22:31
- 目标设备:小米路由器 (
192.168.31.1) & Mac mini (192.168.31.164) & SG Azure (104.43.105.243) - 变更内容:
- 固定企微白名单出口 IP:在路由器
configs/router-shellcrash-config.yaml新增DOMAIN-SUFFIX,qyapi.weixin.qq.com,Ai平台,确保主动推送消息出口永远为104.43.105.243。 - 微信双向网关服务:编写
stacks/wechat-bot/server.py与stacks/wechat-bot/config.env,在 Mac mini 注册~/Library/LaunchAgents/com.homelab.wechat-bot.plist(通过uv run常驻运行于3005端口)。 - 免端口 HTTPS 回调入口:在 Cloudflare 添加
wx.961504.xyz -> 104.43.105.243,并在 Azure Caddy 配置反代至100.108.205.40:3005。
- 固定企微白名单出口 IP:在路由器
- 回滚方式:
ssh mini "launchctl unload ~/Library/LaunchAgents/com.homelab.wechat-bot.plist"