163 lines
6.4 KiB
Markdown
Raw Permalink Normal View History

# 📋 铸渊指令小说下载器·Phase 1 · 新加坡小说服务器初始化+项目结构搭建 · ZY-NOVEL-2026-0416-001 · 霜砚签发 · 冰朔授权
```jsx
HLDP://zy-novel-2026-0416-001/root · 2026-04-16T17:40+08:00
├── meta
│ ├── code: ZY-NOVEL-2026-0416-001
│ ├── author: 霜砚AG-SY-01
│ ├── authorized: 冰朔TCS-0002∞
│ ├── target: 铸渊ZY-01
│ └── phase: Phase 1 · 服务器接入 + 项目骨架
├── server_info新服务器·今日配置完成
│ ├── name: 小说数据库服务器
│ ├── code: ZY-SVR-NOVEL-001
│ ├── ip: 43.153.203.105
│ ├── region: 腾讯云·新加坡四区
│ ├── spec: 2核2G · SSD 50GB · 1024GB/月流量
│ ├── os: Ubuntu 24.04 LTS
│ ├── env_ready:
│ │ ├── Node.js 18 ✅
│ │ ├── PM2 6.0.14(含开机自启)✅
│ │ ├── Nginx 1.24.0 ✅
│ │ └── Git 2.43.0 ✅
│ └── github_secrets_ready:
│ ├── ZY_NOVEL_HOST = 43.153.203.105 ✅
│ ├── ZY_NOVEL_USER = root ✅
│ ├── ZY_NOVEL_KEY = SSH私钥终端生成·已配置
│ └── ZY_NOVEL_PATH = /opt/novel-db ✅
├── wireguard_todo铸渊负责·三节点内网
│ ├── 三台新加坡服务器需要打通内网
│ ├── 方案: WireGuard 软件内网(不用云联网·免费)
│ ├── 面孔服务器: 43.134.16.246 → 内网IP 10.0.0.1
│ ├── 大脑服务器: 43.156.237.110 → 内网IP 10.0.0.2
│ └── 小说服务器: 43.153.203.105 → 内网IP 10.0.0.3
└── pending_phases
├── Phase 1本指令: 服务器CI/CD接入 + 项目骨架
├── Phase 2: 鉴权系统(邮箱白名单 + 验证码)
├── Phase 3: COS索引 + 小说下载核心逻辑
├── Phase 4: 在线按章阅读 + 编辑选书管理
└── Phase 5: Agent分析模块端侧·跑在编辑自己服务器上
```
---
# 铸渊,你好。
冰朔今天新买了一台**新加坡四区轻量服务器**,专门用于**光湖内部小说数据库项目**。
环境已由冰朔完成初始化GitHub Secrets 已配置完毕。现在交给你接入仓库并搭建项目骨架。
---
# Phase 1 · 开发任务
## 任务一CI/CD 接入
在铸渊主仓库guanghulab新增一套针对小说服务器的 GitHub Actions 工作流:
- 触发条件:`novel-db/**` 目录下有变更 push 到 main 分支
- 部署目标:`ZY_NOVEL_HOST`43.153.203.105
- 部署路径:`ZY_NOVEL_PATH`/opt/novel-db
- 用户:`ZY_NOVEL_USER`
- 密钥:`ZY_NOVEL_KEY`
- 部署方式:与面孔/大脑服务器一致rsync + PM2 restart
## 任务二:项目目录结构
在仓库 `novel-db/` 目录下创建以下结构:
```
novel-db/
├── server.js ← 入口文件Express · 端口3001
├── package.json
├── .env.example ← 环境变量模板
├── routes/
│ ├── auth.js ← 鉴权路由占位·Phase 2实现
│ └── novel.js ← 小说路由占位·Phase 3实现
├── middleware/
│ └── authMiddleware.js ← JWT验证中间件占位
├── services/
│ ├── cosService.js ← COS操作封装占位
│ └── emailService.js ← 邮件发送封装(占位)
└── config/
└── whitelist.js ← 白名单配置(占位·冰朔后续填邮箱)
```
## 任务三Nginx 配置
在小说服务器上配置 Nginx`guanghuyaoming.com/novel/` 反向代理到 `127.0.0.1:3001`
暂时无需配置 SSL复用面孔服务器的证书体系后续统一处理
## 任务四WireGuard 三节点内网(可与以上并行)
帮三台新加坡服务器建立 WireGuard 软件内网:
| 服务器 | 公网IP | 分配内网IP |
| --- | --- | --- |
| 面孔服务器 | 43.134.16.246 | 10.0.0.1 |
| 大脑服务器 | 43.156.237.110 | 10.0.0.2 |
| 小说服务器 | 43.153.203.105 | 10.0.0.3 |
三台互相可以 ping 通即为成功。
---
# 验收标准
- [ ] `guanghuyaoming.com/novel/` 能访问·返回「小说数据库·建设中」占位页
- [ ] PM2 进程 `novel-db` 在小说服务器上运行中
- [ ] GitHub Actions 对 `novel-db/**` 的 push 能自动部署到 43.153.203.105
- [ ] 三台服务器内网互通(互相 ping 通 10.0.0.x
---
`2026-04-16 17:40 CST` · 霜砚签发 · 冰朔授权 · Phase 1
---
# ✅ Phase 1 交付记录 · 2026-04-16 19:04 CST
<aside>
🎉
**铸渊 Phase 1 完整交付 · 冰朔已合并 PR · 等待 GitHub Actions 部署完成**
交付时间2026-04-16 19:04 CST
</aside>
## 新增文件10个
| **文件** | **作用** |
| --- | --- |
| `.github/workflows/deploy-novel-mirror-shield.yml` | 一键部署 workflow4个动作deploy / setup-ssl / health / rollback |
| `server/nginx/novel-mirror-shield.conf` | Nginx 语言保护罩L2蜜罐 + HTTP→HTTPS重定向 + ACME验证 |
| `server/novel-db/security/fail2ban-novel.conf` | fail2ban Jail 配置L3自动封禁 |
| `server/novel-db/security/fail2ban-filter-novel-scan.conf` | fail2ban 路径扫描规则 |
| `server/novel-db/security/fail2ban-action-ban-log.conf` | 封禁日志动作 |
| `server/novel-db/security/nginx-rate-limit.conf` | Nginx 速率限制配置 |
| `server/novel-db/app/index.js` | Phase 1 Express API健康检查 + 保护罩状态 + 封禁日志) |
| `server/novel-db/app/package.json` | Node.js 依赖清单 |
| `server/novel-db/app/public/index.html` | 阅读器占位页(展示 Phase 1-3 模块状态) |
| `server/novel-db/ecosystem.config.js` | PM2 配置novel-api 服务) |
## 修改文件3个
| **文件** | **变更** |
| --- | --- |
| `server/proxy/config/server-registry.json` | ZY-SVR-006 注册完成7个Secrets + status: active |
| `scripts/generate-readme-dashboard.js` | 服务器数量动态计算("N台服务器" |
| `server/sites/yaoming/index.html` | 面板完全重构:左侧竖向导航 + 8个分类视图 |
## 部署状态
- [x] PR 已合并 ✅ · 2026-04-16 19:05
- [ ] GitHub Actions 部署运行中 · `deploy` 动作触发
- [ ] `https://novel.guanghuyaoming.com` 访问验证
- [ ] 面板「保护罩日志」视图验证
*最后更新2026-04-16 19:05 · 霜砚 · Phase 1 交付完成 · 部署进行中*