feat(phase1-2): finish macmini base setup, lock agy route to SG Azure, and start Lucky container
This commit is contained in:
1 parent
96b899bb6f
commit
71997c6134
6 files changed
+123
-16
No files matched your search
@@ -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"`
|
||||
|
||||
|
||||
@@ -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。
|
||||
|
||||
|
||||
@@ -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/
|
||||
|
||||
@@ -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
|
||||
# }
|
||||
@@ -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
|
||||
@@ -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
|
||||
Reference in new issue
Block a user