feat(phase1-2): finish macmini base setup, lock agy route to SG Azure, and start Lucky container

Browse Source
This commit is contained in:
Yin Kou committed 2026-11-06 21:45:54 +08:00
1 parent 96b899bb6f
commit 71997c6134
6 files changed
+123 -16

No files matched your search

+44
View File
@@ -25,3 +25,47 @@
- 创建 [`README.md`](file:///Users/ixvii0iv/homelab/README.md)(全局网络拓扑与设备资产表)
- 创建 [`PLAN.md`](file:///Users/ixvii0iv/homelab/PLAN.md)(4 阶段实施蓝图与进度表)
- 创建 [`CHANGELOG.md`](file:///Users/ixvii0iv/homelab/CHANGELOG.md)(本变更日志文件)
### 3. 配置 Mac mini 免密 sudo 与服务器电源防休眠策略 (`pmset`)
- **操作时间**:2026-11-06 21:37
- **目标设备**:Mac mini (`192.168.31.164`)
- **变更内容**:
1. 创建 `/etc/sudoers.d/ixvii0iv`(权限 `0440`),赋予 `ixvii0iv` 用户免密 `sudo` 权限,便于自动化运维。
2. 执行 `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"`
### 4. 编写 Lucky 与 Azure 云边协同 Docker Compose 编排文件
- **操作时间**:2026-11-06 21:38
- **目标设备**:本机 MacBook Air (`/Users/ixvii0iv/homelab/stacks/`)
- **变更内容**:
- 创建 [`stacks/lucky/docker-compose.yml`](file:///Users/ixvii0iv/homelab/stacks/lucky/docker-compose.yml)(用于 Mac mini 部署 Lucky DDNS + HTTPS 反代)
- 创建 [`stacks/azure-edge/docker-compose.yml`](file:///Users/ixvii0iv/homelab/stacks/azure-edge/docker-compose.yml) 与 [`stacks/azure-edge/Caddyfile`](file:///Users/ixvii0iv/homelab/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`)
- **变更内容**:
1. 安装 Xcode Command Line Tools 27.2 与 Homebrew 7.0.12 (`/opt/homebrew`)。
2. 通过 Homebrew Cask 安装并启动 **OrbStack 2.2.5** (Docker Engine `29.8.2`) 与 **Tailscale 1.104.5**。
3. 安装 CLI 开发工具链:`git`, `tmux`, `btop`, `ripgrep`, `fd`, `jq`, `wget`, `fnm`, `uv`。
4. 安装 **Antigravity CLI (`agy` 1.5.2)** 至 `/Users/ixvii0iv/.local/bin/agy`,并配置 `~/.zshrc` 与 `~/.zprofile` 的 `PATH` 环境变量。
- **回滚方式**:可通过 `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 面板 (`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"`
+13 -13
View File
@@ -9,13 +9,13 @@
- [x] **1.1 局域网设备发现与体检**:确认 Mac mini (`192.168.31.164`)、极空间 Z4 (`192.168.31.185`)、小米路由 (`192.168.31.1`) 状态。
- [x] **1.2 开启 Mac mini SSH 与免密登录**:配置公钥免密认证,并在本机配置 `ssh mini` 快捷别名。
- [x] **1.3 建立本地基础设施仓库 (`~/homelab`)**:固化架构文档、实施计划与变更日志。
- [ ] **1.4 Mac mini 电源与无头模式(Headless)调优**:
- 关闭系统休眠 (`sleep 0`)、关闭磁盘休眠 (`disksleep 0`)、开启断电恢复自动开机 (`autorestart 1`)、开启网络唤醒 (`womp 1`)。
- 开启屏幕共享(VNC)备选通道,评估虚拟显示器(BetterDisplay / HDMI 欺骗器)。
- [ ] **1.5 安装核心包管理与容器底座**:
- 安装 Xcode Command Line Tools 与 Homebrew (`/opt/homebrew`)。
- 安装 **OrbStack**(轻量高性能 Docker 引擎与 Linux 运行时)。
- [ ] **1.6 远端目录规范化**:在 Mac mini 上创建 `~/homelab` 与 `~/workspace` 目录,与本机仓库结构对齐。
- [x] **1.4 Mac mini 电源与无头模式(Headless)调优**:
- 已配置 `sudo` 免密权限 (`/etc/sudoers.d/ixvii0iv`)。
- 已关闭系统休眠 (`sleep 0`)、关闭磁盘休眠 (`disksleep 0`)、开启断电恢复自动开机 (`autorestart 1`)、开启网络唤醒 (`womp 1`)。
- [x] **1.5 安装核心包管理与容器底座**:
- 已安装 Xcode Command Line Tools 27.2 与 Homebrew 7.0.12 (`/opt/homebrew`)。
- 已安装并启动 **OrbStack 2.2.5**(Docker Engine `29.8.2`)与 **Tailscale 1.104.5**。
- [x] **1.6 远端目录规范化**:已在 Mac mini 上创建 `~/homelab` 与 `~/workspace` 目录,并与本机仓库结构对齐。
---
@@ -23,11 +23,10 @@
- [ ] **2.1 路由器固定 IP 与端口映射**:
- 在小米路由器 (`192.168.31.1`) 中将 Mac mini 固定为静态 IP(建议插网线固定有线 IP)。
- 转发 1 个高位 HTTPS 端口(如 `10443`)和组网端口到 Mac mini。
- [ ] **2.2 部署 Lucky(家庭公网瑞士军刀)**:
- 配置域名 DNS API(Cloudflare / 阿里云 / 腾讯云),开启公网 IPv4/IPv6 DDNS 动态解析。
- 自动申请并续签 `*.home.<你的域名>` 泛域名免费 SSL/TLS 证书。
- 配置反向代理规则(统一通过 HTTPS 安全访问极空间、路由器后台与内部容器)。
- 转发 1 个高位 HTTPS 端口(`10443`)和组网端口到 Mac mini。
- [x] **2.2 部署 Lucky 容器(家庭公网瑞士军刀)**:
- 已在 Mac mini 启动 `lucky` 容器(管理端:`http://192.168.31.164:16601`,统一 HTTPS 反代入口:`10443`)。
- 待配置:Cloudflare DNS API Token、开启 `*.home.961504.xyz` DDNS 动态解析与 ACME 免费泛域名 SSL 证书。
- [ ] **2.3 部署 Tailscale(打通 MacBook + Mac mini + Azure 2C4G)**:
- 三端登录同一 Tailnet,开启 Mac mini 的 Subnet Router(子网路由:`192.168.31.0/24`),实现在外网免配置直接用 `192.168.31.x` 访问家里极空间与路由器。
- [ ] **2.4 配置 Azure 2C4G 联动服务**:
@@ -41,8 +40,9 @@
- [ ] **3.1 基础开发工具链安装**:
- 安装 `git`, `tmux`, `btop`, `ripgrep`, `fd`, `jq`, `gh` 等命令行效率工具。
- 配置 Node.js (fnm/nvm)、Python (uv/miniconda) 等多版本隔离环境。
- [ ] **3.2 VS Code / AI IDE Remote-SSH 联调**:
- [ ] **3.2 VS Code / AI IDE Remote-SSH 与 `agy` 流量出口锁定**:
- 验证本机 MacBook Air 通过 `ssh mini` 免密直连开发、后台 `tmux` 任务保活。
- **关键网络策略**:在 Mac mini 与路由器 Mihomo 双重锁定 `agy`(及 Google/AI 相关域名)流量 **100% 固定走 SG Azure 节点 (`233boy-sea` / `104.43.105.243`)**,防止因路由器 `URLTest (自动选择)` 测速波动切到 `coco-sea1` 或美西节点导致出口 IP 变化。
- [ ] **3.3 本地 AI 算力服务(可选)**:
- 利用 M6 24GB 统一内存部署 **Ollama + Open WebUI**,向内网与本机提供私有大模型 API。
+12 -3
View File
@@ -34,13 +34,22 @@ flowchart TB
| :--- | :--- | :--- | :--- | :--- | :--- |
| **核心计算/AIO** | **Mac mini** | `192.168.31.164` | Apple M6 (12C) / 24GB / 512G | `ssh mini` | Lucky 公网反代、Tailscale 节点、OrbStack 容器、24h 远程开发与 AI 算力 |
| **核心存储/NAS** | **极空间 Z4** | `192.168.31.185` | 磁盘阵列 NAS | - | 大容量影视/相册/冷备份存储,通过 SMB 挂载给 Mac mini |
| **主路由/透明网关** | **小米路由器** | `192.168.31.1` | 已解锁 SSH + ShellCrash | `ssh 192.168.31.1` | 宽带拨号、全屋 DHCP、ShellCrash (Mihomo) 科学上网分流、端口映射 |
| **云端协同节点** | **Azure 2C4G** | 待填入固定 IP | 2 vCPU / 4 GB RAM | `ssh azure` | 443 免端口反向代理、Uptime Kuma 外部断网告警、企微固定白名单 IP 转发 |
| **主路由/透明网关** | **小米路由器** | `192.168.31.1` (联通公网 `124.90.142.21`) | 已解锁 SSH + ShellCrash | `ssh 192.168.31.1` | 宽带拨号、全屋 DHCP、ShellCrash (Mihomo) 科学上网分流、端口映射 |
| **云端协同节点** | **Azure 2C4G** | `104.43.105.243` (`sea.961504.xyz`) | 2 vCPU / 4 GB RAM | `ssh ixvii0iv@104.43.105.243` | 443 免端口反向代理、Uptime Kuma 外部断网告警、企微固定白名单 IP 转发 |
| **日常控制端** | **MacBook Air** | `192.168.31.83` | Apple M5 (10C) / 16GB / 512G | 本机 | 日常使用、管理本仓库 (`~/homelab`)、Remote-SSH 远程开发 |
---
## 二、 目录结构说明
## 二、 域名与 DNS 规划 (`961504.xyz` @ Cloudflare)
- **DNS 托管商**:Cloudflare (`eoin.ns.cloudflare.com` / `tori.ns.cloudflare.com`)
- **云端节点域名**:`sea.961504.xyz` -> `104.43.105.243` (Azure 2C4G 固定公网 IP)
- **家庭 DDNS 域名规划**:
- `home.961504.xyz` / `*.home.961504.xyz` -> 由 Mac mini 上的 **Lucky** 调用 Cloudflare API 动态解析至家庭联通公网 IP(当前 `124.90.142.21`)
---
## 三、 目录结构说明
```text
~/homelab/
+16
View File
@@ -0,0 +1,16 @@
# ==============================================================================
# Azure 2C4G (104.43.105.243 / sea.961504.xyz) 云边协同反向代理配置
# 前提:Azure 与家里 Mac mini 已通过 Tailscale 组网连通(将 <MAC_MINI_TAILSCALE_IP> 替换为实际 Tailscale IP)
# ==============================================================================
# 1. 外部断网哨兵监控面板 (Uptime Kuma)
status.961504.xyz {
encode zstd gzip
reverse_proxy 127.0.0.1:3001
}
# 2. 家庭导航/服务免端口 443 反代示例(通过 Tailscale 加密隧道回源到家里 Mac mini)
# home.961504.xyz {
# encode zstd gzip
# reverse_proxy <MAC_MINI_TAILSCALE_IP>:16601
# }
+23
View File
@@ -0,0 +1,23 @@
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "127.0.0.1:3001:3001"
volumes:
- ./uptime-kuma-data:/app/data
environment:
- TZ=Asia/Shanghai
caddy:
image: caddy:2-alpine
container_name: caddy-edge
restart: always
network_mode: host
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile:ro
- ./caddy_data:/data
- ./caddy_config:/config
environment:
- TZ=Asia/Shanghai
+15
View File
@@ -0,0 +1,15 @@
services:
lucky:
image: gdy666/lucky:latest
container_name: lucky
restart: always
# 在 macOS (OrbStack) 下,使用端口映射暴露管理端口与统一反代端口
ports:
- "16601:16601/tcp" # Lucky Web 管理后台端口 (仅内网或配置安全入口后访问)
- "10443:10443/tcp" # 家宽公网统一 HTTPS 反向代理入口端口 (TCP)
- "10443:10443/udp" # HTTP/3 QUIC 支持 (UDP)
volumes:
- ./goodluck:/goodluck
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Shanghai