# 📋 铸渊指令|小说下载器·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 ## 新增文件(10个) | **文件** | **作用** | | --- | --- | | `.github/workflows/deploy-novel-mirror-shield.yml` | 一键部署 workflow(4个动作: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 交付完成 · 部署进行中*