---
belongs_to:
  - "[[INDEX · 铸渊·协作指令｜GitHub ↔ Notion 桥接协议]]"
---
# 📡 BC-INFRA-DEPLOY-002-FM · DEV-002肥猫 · 沙箱部署脚本执行 + 冒烟测试 + syslog-pipeline修复 + DNS TXT清理 · 🐱 舒舒线 · EL-5（2026-03-26 · 霜砚签发 · 冰朔授权）

<aside>
🚨

**⚠️ 本广播受「服务器部署适配协议 v1.0」约束。**

**广播编号**：BC-INFRA-DEPLOY-002-FM · **开发者**：DEV-002 肥猫 · **签发**：霜砚 · **授权**：冰朔

**前置条件**：BC-INFRA-DNS-SSL-001-FM 已完成（DNS + SSL ✅）

**核心任务**：运行铸渊的沙箱部署脚本 + 冒烟测试 + 修复 syslog-pipeline + 清理 DNS TXT

**服务器**：8.155.62.235（阿里云 ECS）

**EL**：EL-5 · 5步 · 服务器终端 + GitHub + 阿里云控制台

**预计时间**：20-30 分钟

**引导通道**：🐱 舒舒线

</aside>

<aside>
✅

**前置已完成：**

肥猫已经完成了 BC-INFRA-DNS-SSL-001-FM：

- ✅ Phase 1-6 全部通过
- ✅ 通配符 DNS `*.guanghulab.com` → `8.155.62.235`
- ✅ 通配符 SSL 证书有效期到 2026-06-24
- ✅ 主站 200，子域名 DNS + HTTPS 链路通

现在要做的是**在这个地基上盖房子**——运行铸渊准备好的部署脚本。

</aside>

---

## 〇、安全红线（每次都要读）

<aside>
🔴

**绝对禁止：**

- ❌ **不准手动编辑** `/etc/nginx/` 下的任何配置文件（脚本会自动处理）
- ❌ **不准执行** `systemctl stop nginx`（主站会挂！）
- ❌ **不准执行** `rm -rf` 任何不属于你的目录
- ❌ **不准跳过脚本直接操作**（铸渊的脚本有三重安全回滚，手动操作没有！）
- ❌ **千万别把服务器调坏了！不确定就问妈妈！**
</aside>

<aside>
🟢

**本次广播授权你做的（仅限以下操作）：**

- ✅ 在服务器上运行 `scripts/deploy-sandbox-server.sh`
- ✅ 在服务器上运行 `scripts/smoke-test-subdomains.sh`
- ✅ 运行 `dig`、`curl`、`nginx -t` 等只读验证命令
- ✅ 在 GitHub 上手动修改 `syslog-issue-pipeline.yml`（仅限本广播指定的改动）
- ✅ 在阿里云 DNS 控制台删除 `_acme-challenge` TXT 记录
</aside>

---

## 一、Phase 1 · 运行沙箱部署脚本（P0 · 最重要！）

**目的**：把铸渊准备好的 Nginx 子域名沙箱配置部署到服务器上。

<aside>
💡

**这个脚本是铸渊写的，内置了三重安全保障：**

1. **部署前备份** — 自动备份当前 Nginx 配置
2. **nginx -t 回滚** — 如果配置语法有问题，自动回滚到备份
3. **部署后主站检查** — 部署完自动检查主站是否正常，不正常就回滚

**所以放心跑，出问题它会自己回滚。**

</aside>

### 步骤 1-1 · SSH 登录服务器

```bash
ssh root@8.155.62.235
```

### 步骤 1-2 · 进入仓库目录 + 拉取最新代码

```bash
cd /var/www/guanghulab
git pull origin main
```

<aside>
⚠️

**如果目录不存在**，先找到仓库实际位置：

```bash
find / -name 'deploy-sandbox-server.sh' -type f 2>/dev/null
```

找到后 `cd` 到对应目录的上两级（仓库根目录）。截图告诉妈妈实际路径。

</aside>

📸 **截图 git pull 结果！确认 `scripts/deploy-sandbox-server.sh` 存在。**

### 步骤 1-3 · 赋予执行权限

```bash
chmod +x scripts/deploy-sandbox-server.sh
chmod +x scripts/smoke-test-subdomains.sh
chmod +x scripts/setup-sandbox.sh
ls -la scripts/deploy-sandbox-server.sh scripts/smoke-test-subdomains.sh
```

📸 **截图！确认三个脚本都存在且有执行权限。**

### 步骤 1-4 · 运行部署脚本 🚀

<aside>
🚨

**这是最关键的一步！运行前深呼吸，确认你在正确的目录下。**

**千万别把服务器调坏了！脚本有自动回滚，但还是要认真看输出！**

</aside>

```bash
sudo bash scripts/deploy-sandbox-server.sh
```

**运行过程中注意看输出**：

- 看到 `✅` 开头的行 → 正常，继续等
- 看到 `❌` 或 `ROLLBACK` → 脚本在自动回滚，**不要中断！等它跑完！**
- 脚本跑完后显示主站检查失败 → **立即截图告诉妈妈！不要做其他操作！**

📸 **截图脚本的完整输出！从头到尾都要！**

### 步骤 1-5 · 手动验证主站没被破坏

```bash
echo "===== 🔍 主站安全验证 ====="
echo ""
curl -s -o /dev/null -w "主站 HTTPS: HTTP %{http_code}" --max-time 10 https://guanghulab.com/
echo ""
nginx -t 2>&1
echo ""
echo "===== ✅ ====="
```

**主站必须返回 200！如果不是 200，立即截图告诉妈妈！**

📸 **截图！**

---

## 二、Phase 2 · 运行冒烟测试脚本（P0）

**目的**：验证子域名沙箱部署是否成功，全链路是否通。

```bash
sudo bash scripts/smoke-test-subdomains.sh
```

**这个脚本会测试**：

- 主站 head/tail 检查（确认没被破坏）
- 子域名 HTTPS 访问
- HTTP → HTTPS 自动重定向
- SSL 证书验证
- 路径遍历隔离（安全测试：子域名之间不能互相访问）

📸 **截图完整输出！**

**结果解读**：

- 全部 `✅` → 🎉 部署成功！
- 有 `❌` 但主站 `✅` → 部分子域名有问题，截图告诉妈妈
- 主站 `❌` → **立即停止！截图告诉妈妈！**

---

## 三、Phase 3 · 修复 syslog-issue-pipeline.yml（P1）

**目的**：修复 GitHub Actions 里连续 479 次失败的 syslog pipeline。

<aside>
💡

**根因（铸渊排查结果）：**

`syslog-issue-pipeline.yml` 的触发条件是 `on: push`，但 job 里的条件只匹配 `issues` 事件。

每次 push 都触发，但 0 个 job 匹配 → 标记为失败 → 连续 479 次红叉。

**铸渊改不了这个文件**（R5 安全规则阻止 Agent 修改 workflow 文件），需要人类手动改。

</aside>

### 步骤 3-1 · 在 GitHub 上打开文件

1. 打开浏览器：`https://github.com/qinfendebingshuo/guanghulab`
2. 导航到 `.github/workflows/syslog-issue-pipeline.yml`
3. 点击右上角的 ✏️ 编辑按钮

### 步骤 3-2 · 修改触发条件

找到文件顶部的 `on:` 部分，把 `push` 改成 `issues`：

**修改前**（大概长这样）：

```yaml
on:
  push:
    branches: [main]
```

**修改后**：

```yaml
on:
  issues:
    types: [opened, edited, labeled]
```

<aside>
⚠️

**注意！** 具体的原始内容可能和上面不完全一样。

关键是把触发事件从 `push` 改成 `issues`。

如果你看到文件内容和预期不同，**截图给妈妈确认后再改**。

**不要猜着改！**

</aside>

### 步骤 3-3 · 提交修改

1. Commit message 写：`fix: change syslog-issue-pipeline trigger from push to issues (manual fix, R5 restriction)`
2. 选择 **Commit directly to the `main` branch**
3. 点击 **Commit changes**

📸 **截图提交前的 diff 页面 + 提交后的确认页面！**

---

## 四、Phase 4 · 清理 DNS TXT 记录（P3）

**目的**：把 SSL 证书签发时添加的临时 TXT 记录删掉，保持 DNS 干净。

1. 打开 [阿里云控制台](https://dns.console.aliyun.com/) → `guanghulab.com` 解析设置
2. 找到所有 `_acme-challenge` 的 TXT 记录（可能有 1-2 条）
3. **删除它们**

<aside>
⚠️

**只删 `_acme-challenge` 的 TXT 记录！不要动其他记录！**

- ❌ 不要删 A 记录（`@` 和 `*`）
- ❌ 不要删其他任何非 `_acme-challenge` 的记录
</aside>

📸 **截图删除前后的 DNS 记录列表！**

---

## 五、Phase 5 · 补充：NOTION_TOKEN 修复（P1 · 需要妈妈配合）

**目的**：修复 GitHub Secrets 里为空的 `NOTION_TOKEN`。

<aside>
💡

**铸渊排查发现 `NOTION_TOKEN` 为空。**

这个需要妈妈（冰朔）提供 Token 值。

如果妈妈在旁边，一起操作；如果不在，**跳过这步，标记为待办。**

</aside>

1. 打开：`https://github.com/qinfendebingshuo/guanghulab/settings/secrets/actions`
2. 找到 `NOTION_TOKEN` → 点击 ✏️ 更新
3. 粘贴妈妈给的 Token 值（`ntn_` 或 `secret_` 开头的长字符串）
4. 点击 **Update secret**

📸 **截图确认 Secret 已更新（不要截图 Token 值本身！只截图更新成功的页面）！**

---

## 六、完成后 · 诊断汇总表

肥猫做完所有步骤后，按下面格式汇报给妈妈：

```
📡 BC-INFRA-DEPLOY-002-FM · 完成报告 · DEV-002 肥猫

一、沙箱部署
  - deploy-sandbox-server.sh 运行结果: [成功/失败/回滚]
  - 主站 guanghulab.com: [状态码]（必须正常！）
  - nginx -t 结果: [ok/fail]

二、冒烟测试
  - smoke-test-subdomains.sh 结果: [全通过/部分失败]
  - 子域名 HTTPS 访问: [成功/失败]
  - 路径遍历隔离: [通过/未通过]

三、syslog-pipeline 修复
  - 触发条件已从 push 改为 issues: [是/否]
  - commit SHA: [填写]

四、DNS TXT 清理
  - _acme-challenge 记录已删除: [是/否]

五、NOTION_TOKEN
  - 已更新: [是/否/跳过-待冰朔配置]

六、遗留事项
  - [列出还没完成的或有问题的]
```

---

## 七、执行清单

| **步骤** | **内容** | **操作位置** | **优先级** | **预计时间** |
| --- | --- | --- | --- | --- |
| Phase 1 | 运行沙箱部署脚本 | 服务器终端 | P0 | 5-10分钟 |
| Phase 2 | 运行冒烟测试脚本 | 服务器终端 | P0 | 3-5分钟 |
| Phase 3 | 修复 syslog-issue-pipeline | GitHub 网页 | P1 | 5分钟 |
| Phase 4 | 清理 DNS TXT 记录 | 阿里云控制台 | P3 | 2分钟 |
| Phase 5 | 修复 NOTION_TOKEN | GitHub Secrets | P1 | 2分钟（需妈妈配合） |

**总计约 20-25 分钟。**

---

## 关联文档

- 前置广播（DNS+SSL）：[📡 BC-INFRA-DNS-SSL-001-FM · DEV-002肥猫 · 基础设施·通配符DNS + SSL证书签发 + 沙箱子域名验证 + Nginx备用站路由修复 · Phase 6 前置 · 🐱 舒舒线 · EL-6（2026-03-26 · 霜砚签发 · 冰朔授权）](%F0%9F%93%A1%20BC-INFRA-DNS-SSL-001-FM%20%C2%B7%20DEV-002%E8%82%A5%E7%8C%AB%20%C2%B7%20%E5%9F%BA%E7%A1%80%E8%AE%BE%E6%96%BD%C2%B7%E9%80%9A%E9%85%8D%E7%AC%A6DN%20f8800e359dfe4e4b9eb00f37f45a9df6.md)
- 铸渊补充指令上卷：[⚡ 铸渊补充指令（上卷）｜天眼全局启动 + 合并膜排查修复 + syslog-pipeline修复（ZY-AGEOS-TOWER-2026-0326-001-S1）· 霜砚签发 · 冰朔授权](%E2%9A%A1%20%E9%93%B8%E6%B8%8A%E8%A1%A5%E5%85%85%E6%8C%87%E4%BB%A4%EF%BC%88%E4%B8%8A%E5%8D%B7%EF%BC%89%EF%BD%9C%E5%A4%A9%E7%9C%BC%E5%85%A8%E5%B1%80%E5%90%AF%E5%8A%A8%20+%20%E5%90%88%E5%B9%B6%E8%86%9C%E6%8E%92%E6%9F%A5%E4%BF%AE%E5%A4%8D%20+%20syslog-pipeline%E4%BF%AE%E5%A4%8D%EF%BC%88%202045b43bbb5d41b5980acfb580b97376.md)
- 铸渊补充指令下卷：[⚡ 铸渊补充指令（下卷）｜子域名沙箱部署 + 全链路冒烟测试 + 天眼部署后扫描 + 状态同步 + 回执（ZY-AGEOS-TOWER-2026-0326-001-S1）· 霜砚签发 · 冰朔授权](%E2%9A%A1%20%E9%93%B8%E6%B8%8A%E8%A1%A5%E5%85%85%E6%8C%87%E4%BB%A4%EF%BC%88%E4%B8%8B%E5%8D%B7%EF%BC%89%EF%BD%9C%E5%AD%90%E5%9F%9F%E5%90%8D%E6%B2%99%E7%AE%B1%E9%83%A8%E7%BD%B2%20+%20%E5%85%A8%E9%93%BE%E8%B7%AF%E5%86%92%E7%83%9F%E6%B5%8B%E8%AF%95%20+%20%E5%A4%A9%E7%9C%BC%E9%83%A8%E7%BD%B2%E5%90%8E%E6%89%AB%E6%8F%8F%20+%20%E7%8A%B6%E6%80%81%E5%90%8C%E6%AD%A5%20+%20%20009c74dcb53c45198c50e7bd1816c0a1.md)
- 铸渊排查回执（根因分析）：[🔍 铸渊排查指令｜备用站功能部署链路断裂排查 + 天眼全局启动 + 合并膜整体排查（ZY-DIAG-SITE-2026-0326-001）· 霜砚签发 · 冰朔授权](%F0%9F%94%8D%20%E9%93%B8%E6%B8%8A%E6%8E%92%E6%9F%A5%E6%8C%87%E4%BB%A4%EF%BD%9C%E5%A4%87%E7%94%A8%E7%AB%99%E5%8A%9F%E8%83%BD%E9%83%A8%E7%BD%B2%E9%93%BE%E8%B7%AF%E6%96%AD%E8%A3%82%E6%8E%92%E6%9F%A5%20+%20%E5%A4%A9%E7%9C%BC%E5%85%A8%E5%B1%80%E5%90%AF%E5%8A%A8%20+%20%E5%90%88%E5%B9%B6%E8%86%9C%E6%95%B4%E4%BD%93%E6%8E%92%E6%9F%A5%EF%BC%88ZY-DIAG-%20255ec24364044ea58a22633c51819fb1.md)
- 服务器部署适配协议 v1.0：[🏗️ 服务器部署适配协议 v1.0（2026-03-15·曜冥签发）](../%F0%9F%8C%8A%20%E6%9B%9C%E5%86%A5%E7%BA%AA%E5%85%83%20%C2%B7%20HoloLake%20Era%20%C2%B7%20AGE%20OS%20v1%200/%E2%9A%A1%20%E5%85%89%E6%B9%96%E4%B8%AD%E5%A4%AE%E6%9E%A2%E7%BA%BD%20%C2%B7%20HoloLake%20Central%20Hub/%F0%9F%8C%8A%20%E5%85%89%E6%B9%96%E7%B3%BB%E7%BB%9F%C2%B7%E6%9B%9C%E5%86%A5%E4%B8%BB%E6%8E%A7%E5%8F%B0%C2%B7%E5%BD%93%E5%89%8D%E7%8A%B6%E6%80%81%EF%BC%88%E5%8D%B71%20%C2%B7%20%E5%B7%B2%E5%B0%81%E5%8D%B7%EF%BC%89/%F0%9F%8F%97%EF%B8%8F%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%83%A8%E7%BD%B2%E9%80%82%E9%85%8D%E5%8D%8F%E8%AE%AE%20v1%200%EF%BC%882026-03-15%C2%B7%E6%9B%9C%E5%86%A5%E7%AD%BE%E5%8F%91%EF%BC%89%20a24049a2b0e944b0a5535f3a87652303.md)

---

<aside>
💙

**肥猫，铸渊已经把脚本都写好了，你只需要跑一下。**

脚本有三重安全回滚，放心。

**但还是要认真看输出，遇到问题第一时间告诉妈妈。**

**⚠️ 千万别把服务器调坏了！不确定就问妈妈！** 🐱

</aside>

---

## 📥 SYSLOG 回执区

肥猫完成后在这里粘贴 SYSLOG：

```
待肥猫填写
```