diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e1e770..d892ed7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -144,6 +144,19 @@ 2. 在 Mac mini 注册 `~/Library/LaunchAgents/com.homelab.mount-zspace.plist`(每 120 秒巡检一次,若极空间或路由器重启后自动重新挂载)。 - **回滚方式**:`ssh mini "launchctl unload ~/Library/LaunchAgents/com.homelab.mount-zspace.plist && umount ~/nas/共享文件 ~/nas/个人空间"` +### 15. 部署 24 小时常驻 AGY 云端 Web 工作台 (`https://agy.961504.xyz` / `ttyd` + `tmux`) +- **操作时间**:2026-11-06 22:46 ~ 22:48 +- **目标设备**:Mac mini (`192.168.31.164`) & SG Azure (`104.43.105.243`) +- **变更内容**: + 1. **同步 `agy` 配置**:将本机 `~/.gemini/antigravity-cli/{jetski_state.pbtxt,settings.json}` 同步至 Mac mini。 + 2. **安装与调优 `ttyd` + `tmux`**:在 Mac mini 安装 `ttyd` (`1.7.7`),编写 `~/.tmux.conf`(开启鼠标滚轮、触屏滑动与 30 万行历史缓存),编写 [`scripts/start-agy-web.sh`](file:///Users/ixvii0iv/homelab/scripts/start-agy-web.sh) 并注册 `~/Library/LaunchAgents/com.homelab.agy-web.plist` 常驻守护进程(监听 `7681` 端口,自动附着到名为 `agy` 的 `tmux` 会话并启动 `agy`)。 + 3. **配置双通道 HTTPS 密码锁反代与导航页卡片**: + - 免端口访问:`https://agy.961504.xyz`(走 Azure 443 + Basic Auth 密码锁) + - 家宽直连访问:`https://agy.home.961504.xyz:10443`(走家里 10443 + Basic Auth 密码锁) + - 已将 **「AGY 云端工作台」** 添加至 `https://nav.961504.xyz` 导航页第一张卡片。 +- **回滚方式**:`ssh mini "launchctl unload ~/Library/LaunchAgents/com.homelab.agy-web.plist"` + + diff --git a/PLAN.md b/PLAN.md index 36d494d..6d1f00a 100644 --- a/PLAN.md +++ b/PLAN.md @@ -45,8 +45,10 @@ - [x] **3.2 VS Code / AI IDE Remote-SSH 与 `agy` 流量出口锁定**: - 已验证本机 MacBook Air 通过 `ssh mini` 免密直连开发。 - **已完成底层网络规则固化**:在小米路由器 `/userdisk/ShellCrash/yamls/config.yaml` 中将 `antigravity.google`、`gemini.google.com`、`googleapis.com`、`deepmind.com` 与 `RULE-SET,google` 统一路由至 `Ai平台`,并将 `Ai平台` 首选默认锁定为 `狮城节点`(仅含 `104.43.105.243` SG Azure 双协议节点),不受其他节点测速波动影响。 -- [ ] **3.3 本地 AI 算力服务(可选)**: - - 利用 M6 24GB 统一内存部署 **Ollama + Open WebUI**,向内网与本机提供私有大模型 API。 +- [x] **3.3 部署 24 小时常驻 AGY 云端 Web 工作台 (`ttyd` + `tmux` 最佳实践)**: + - 已同步本机 `agy` 登录凭证与配置至 Mac mini (`~/.gemini/antigravity-cli/`)。 + - 已配置 `~/.tmux.conf`(支持鼠标/触屏滑动与 30 万行长历史回溯)及 `agy-work` 终端快捷指令。 + - 已部署 `ttyd` + `tmux` Web 终端常驻服务 ([`scripts/start-agy-web.sh`](file:///Users/ixvii0iv/homelab/scripts/start-agy-web.sh)),并暴露免端口入口 **`https://agy.961504.xyz`** 与家宽直连入口 **`https://agy.home.961504.xyz:10443`**(带密码保护),同步添加至家庭导航页首位卡片。 --- diff --git a/scripts/start-agy-web.sh b/scripts/start-agy-web.sh new file mode 100755 index 0000000..c1038f4 --- /dev/null +++ b/scripts/start-agy-web.sh @@ -0,0 +1,25 @@ +#!/usr/bin/env bash +# ============================================================================== +# start-agy-web.sh +# 用途:在 Mac mini 上启动基于 ttyd + tmux 的 24 小时常驻 AGY Web 工作台 +# 监听端口:0.0.0.0:7681 (外网由 Caddy HTTPS + Basic Auth 保护) +# ============================================================================== +export PATH="/Users/ixvii0iv/.local/bin:/Users/ixvii0iv/.orbstack/bin:/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin" +export LANG="en_US.UTF-8" +export LC_ALL="en_US.UTF-8" +export TERM="xterm-256color" + +mkdir -p "$HOME/workspace" + +# 确保 tmux 会话 agy 存在并在其中默认打开 zsh (可直接运行 agy) +if ! /opt/homebrew/bin/tmux has-session -t agy 2>/dev/null; then + /opt/homebrew/bin/tmux new-session -d -s agy -c "$HOME/workspace" + /opt/homebrew/bin/tmux send-keys -t agy "agy" C-m +fi + +exec /opt/homebrew/bin/ttyd \ + -W \ + -p 7681 \ + -t fontSize=15 \ + -t 'titleFixed=Mac mini (M6) - AGY 云端工作台' \ + /opt/homebrew/bin/tmux new-session -A -s agy -c "$HOME/workspace" diff --git a/stacks/azure-edge/Caddyfile b/stacks/azure-edge/Caddyfile index b9c336f..e537b29 100644 --- a/stacks/azure-edge/Caddyfile +++ b/stacks/azure-edge/Caddyfile @@ -21,3 +21,12 @@ wx.961504.xyz:443 { encode zstd gzip reverse_proxy 100.108.205.40:3005 } + +# 4. AGY 24小时云端 Web 工作台 (443 免端口访问) -> https://agy.961504.xyz +agy.961504.xyz:443 { + encode zstd gzip + basic_auth { + ixvii0iv $2a$14$VaaNvgIjsCJFzXCpIxjcOerKUIdkN7GhVWAlGh3/ZZjBOADY9lg.. + } + reverse_proxy 100.108.205.40:7681 +} diff --git a/stacks/gateway/Caddyfile b/stacks/gateway/Caddyfile index 8696c3f..28af733 100644 --- a/stacks/gateway/Caddyfile +++ b/stacks/gateway/Caddyfile @@ -48,3 +48,13 @@ lucky.home.961504.xyz:10443 { encode zstd gzip reverse_proxy 127.0.0.1:16601 } + +# 5. AGY 24小时云端 Web 工作台 (https://agy.home.961504.xyz:10443) +agy.home.961504.xyz:10443 { + tls /Users/ixvii0iv/homelab/stacks/gateway/certs/fullchain.pem /Users/ixvii0iv/homelab/stacks/gateway/certs/privkey.pem + encode zstd gzip + basic_auth { + ixvii0iv $2a$14$VaaNvgIjsCJFzXCpIxjcOerKUIdkN7GhVWAlGh3/ZZjBOADY9lg.. + } + reverse_proxy 127.0.0.1:7681 +}