246 lines
8.4 KiB
Markdown
246 lines
8.4 KiB
Markdown
# CloudSearch · 自托管云盘资源搜索引擎
|
||
|
||
**CloudSearch** 是一个自托管的网盘资源搜索引擎。支持多网盘(夸克、百度、阿里云盘等)Cookie 接入、关键词搜索、一键转存、多通道消息推送、每日数据汇报。
|
||
|
||
> 🏷️ 当前版本:**v0.3.32** · 活跃开发中
|
||
> 🔒 私有项目 — [Gitea 镜像](https://gitea.timxx.cn/admin/CloudSearch)
|
||
|
||
---
|
||
|
||
## ✨ 主要特性
|
||
|
||
- 🔍 **多源搜索** — 聚合 PanSou + 内置搜索引擎,毫秒级返回
|
||
- ☁️ **多云盘接入** — 支持夸克、百度网盘、阿里云盘、115、UC、迅雷、天翼云、PikPak、123 云盘
|
||
- 📦 **一键转存** — 搜索结果直接转存到已连接的网盘
|
||
- 📊 **管理面板** — 网盘管理、搜索统计、转存记录、系统配置
|
||
- 🔔 **14 通道通知** — 飞书/Lark、Telegram、钉钉、企业微信、Discord、Bark、Server酱、PushPlus、Gotify、ntfy、SMTP 邮件、Qmsg酱、自定义 Webhook
|
||
- 📈 **每日汇报** — 定时统计搜索/转存/用户数据,自动推送到通知通道
|
||
- 🧹 **自动清理** — Cookie 到期检测、空间自动清理、关键词审核
|
||
- 🎬 **TMDB 增强** — 搜索结果自动匹配影视元数据(海报、评分、简介)
|
||
|
||
---
|
||
|
||
## 📋 前置要求
|
||
|
||
| 软件 | 最低版本 | 说明 |
|
||
|------|---------|------|
|
||
| Docker | 24.0+ | 构建和运行容器 |
|
||
| Docker Compose | v2.20+ | 编排多服务 |
|
||
| Git | 2.40+ | 克隆仓库 |
|
||
|
||
---
|
||
|
||
## 🚀 快速部署(3 步)
|
||
|
||
### 1. 克隆仓库
|
||
|
||
```bash
|
||
git clone https://gitea.timxx.cn/admin/CloudSearch.git
|
||
cd CloudSearch
|
||
```
|
||
|
||
### 2. 配置环境变量
|
||
|
||
```bash
|
||
cp docker-compose.env .env
|
||
# 编辑 .env,修改以下必填项:
|
||
# JWT_SECRET — JWT 签名密钥(生成:openssl rand -hex 32)
|
||
# ADMIN_PASSWORD — 管理后台登录密码
|
||
# CORS_ORIGIN — 前端访问域名(如 http://your-domain.com)
|
||
# REDIS_URL — Redis 连接地址
|
||
# PANSOU_AUTH_TOKEN — PanSou 搜索 Token(可选)
|
||
```
|
||
|
||
<details>
|
||
<summary>📋 完整环境变量参考</summary>
|
||
|
||
| 变量 | 默认值 | 必填 | 说明 |
|
||
|------|--------|------|------|
|
||
| `PORT` | `9527` | | 服务端口 |
|
||
| `NODE_ENV` | `production` | | 运行环境 |
|
||
| `TZ` | `Asia/Shanghai` | | 时区 |
|
||
| `JWT_SECRET` | — | ✅ | JWT 签名密钥 |
|
||
| `ADMIN_USERNAME` | `admin` | | 管理员用户名 |
|
||
| `ADMIN_PASSWORD` | — | ✅ | 管理员密码 |
|
||
| `CORS_ORIGIN` | — | ✅ | CORS 允许的域名 |
|
||
| `COOKIE_ENCRYPTION_KEY` | — | | Cookie 加密密钥(生产环境建议设置) |
|
||
| `DB_PATH` | `/data/database.sqlite` | | SQLite 数据库路径 |
|
||
| `REDIS_URL` | — | ✅ | Redis 连接(格式 `redis://[:password@]host:port`) |
|
||
| `PANSOU_URL` | `http://pansou:80` | | PanSou 搜索服务地址 |
|
||
| `PANSOU_AUTH_TOKEN` | — | | PanSou 鉴权 Token |
|
||
| `VALIDATION_CONCURRENCY` | `10` | | 网盘并发校验数 |
|
||
| `VALIDATION_TIMEOUT` | `5000` | | 单次校验超时(ms) |
|
||
| `CACHE_TTL_VALID` | `14400` | | 有效结果缓存(秒) |
|
||
| `CACHE_TTL_INVALID` | `3600` | | 无效结果缓存(秒) |
|
||
| `LOG_LEVEL` | `info` | | 日志级别(debug/info/warn/error) |
|
||
| `UPLOAD_DIR` | `/app/uploads` | | 上传文件目录 |
|
||
| `APP_VERSION_FILE` | `/app/VERSION` | | 版本文件路径 |
|
||
|
||
</details>
|
||
|
||
### 3. 启动服务
|
||
|
||
```bash
|
||
docker compose up -d
|
||
```
|
||
|
||
访问 `http://localhost:9527` — 管理面板:`http://localhost:9527/admin`
|
||
|
||
---
|
||
|
||
## 📦 服务架构
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ Nginx / OpenResty │
|
||
│ (反向代理 + HTTPS) │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ CloudSearch_App (:9527) CloudSearch_PanSou (:80) │
|
||
│ Node.js + Express + TS 第三方搜索聚合服务 │
|
||
│ ┌─────────────────────┐ │
|
||
│ │ 前端 (Vue 3 + Vite) │ │
|
||
│ │ 后端 (Express API) │ │
|
||
│ │ SQLite + Redis │ │
|
||
│ │ Chromium (Playwright)│ │
|
||
│ └─────────────────────┘ │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ Redis (:6379) │
|
||
│ 缓存 + 会话 │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
| 容器 | 镜像 | 端口 | 说明 |
|
||
|------|------|------|------|
|
||
| `CloudSearch_App` | `cloudsearch-app:latest` (自构建) | `9527` | 主服务 |
|
||
| `CloudSearch_PanSou` | `ghcr.io/fish2018/pansou-web:latest` | `80` (内部) | 搜索聚合 |
|
||
| Redis | `redis:7-alpine` | `6379` (内部) | 缓存 |
|
||
|
||
---
|
||
|
||
## 🔄 升级指南
|
||
|
||
### 方案 A:拉取新镜像(推荐生产环境)
|
||
|
||
```bash
|
||
# 拉取最新版本
|
||
docker pull gitea.timxx.cn/admin/cloudsearch:v0.3.32
|
||
|
||
# 更新 .env 中的镜像标签或使用 latest
|
||
docker compose up -d app
|
||
```
|
||
|
||
### 方案 B:从源码重新构建
|
||
|
||
```bash
|
||
git pull origin master
|
||
./build.sh # 读取 VERSION 构建新镜像
|
||
docker compose up -d app
|
||
```
|
||
|
||
> 升级后验证:`curl -s http://localhost:9527/health | jq .version`
|
||
|
||
---
|
||
|
||
## 🛠️ 常用命令
|
||
|
||
```bash
|
||
# 查看服务状态
|
||
docker compose ps
|
||
|
||
# 查看日志
|
||
docker compose logs -f app # 主服务实时日志
|
||
docker compose logs --tail=100 app # 最近100行
|
||
|
||
# 进入容器
|
||
docker compose exec app sh
|
||
|
||
# 重启服务
|
||
docker compose restart app
|
||
|
||
# 健康检查
|
||
curl http://localhost:9527/health
|
||
|
||
# 查看版本
|
||
curl -s http://localhost:9527/health | jq .version
|
||
```
|
||
|
||
---
|
||
|
||
## 📁 目录结构
|
||
|
||
```
|
||
CloudSearch/
|
||
├── VERSION # 🏷️ 当前版本号(唯一真相来源)
|
||
├── build.sh # 🔨 构建 Docker 镜像
|
||
├── docker-compose.yml # 🐳 服务编排
|
||
├── docker-compose.env # 📋 环境变量模板
|
||
├── .env # 🔐 本地环境变量(Git 忽略)
|
||
├── source_clean/ # 🧩 主应用
|
||
│ ├── Dockerfile # 多阶段构建(node:20-alpine)
|
||
│ ├── package.json # Node.js 依赖
|
||
│ ├── tsconfig.json
|
||
│ ├── src/ # 后端 TypeScript 源码
|
||
│ │ ├── main.ts # 入口
|
||
│ │ ├── config/ # 配置管理
|
||
│ │ ├── routes/ # API 路由
|
||
│ │ ├── cloud/ # 云盘驱动(quark/baidu/aliyun...)
|
||
│ │ ├── search/ # 搜索服务
|
||
│ │ ├── database/ # SQLite 数据库
|
||
│ │ ├── services/ # 业务逻辑
|
||
│ │ └── middleware/ # 中间件
|
||
│ ├── frontend-src/ # 🎨 Vue 3 前端源码
|
||
│ │ ├── src/pages/ # 页面组件
|
||
│ │ ├── src/api/ # API 封装
|
||
│ │ ├── vite.config.ts
|
||
│ │ └── package.json
|
||
│ └── frontend/ # 📦 编译后的静态资源
|
||
├── icons/ # 🖼️ 云盘品牌图标
|
||
└── uploads/ # 📤 上传文件
|
||
```
|
||
|
||
---
|
||
|
||
## 🏗️ 开发指南
|
||
|
||
### 后端开发
|
||
|
||
```bash
|
||
cd source_clean
|
||
npm install
|
||
npm run dev # tsx watch,热重载
|
||
```
|
||
|
||
### 前端开发
|
||
|
||
```bash
|
||
cd source_clean/frontend-src
|
||
npm install
|
||
npm run dev # Vite 开发服务器
|
||
```
|
||
|
||
### 构建部署
|
||
|
||
```bash
|
||
# 完整构建流程
|
||
./build.sh # 构建 Docker 镜像
|
||
docker compose up -d app # 部署
|
||
|
||
# 仅前端修改(跳过 Docker 重建)
|
||
cd source_clean/frontend-src && npm run build
|
||
# 将 dist/ 复制到 source_clean/frontend/,重启容器
|
||
```
|
||
|
||
---
|
||
|
||
## 🔗 相关链接
|
||
|
||
- 📦 Gitea 镜像:[gitea.timxx.cn/admin/CloudSearch](https://gitea.timxx.cn/admin/CloudSearch)
|
||
- 🐳 容器注册表:`gitea.timxx.cn/admin/cloudsearch`
|
||
- 📝 版本规则:`X.Y.Z` — patch 每次任务 +0.0.1,minor 每轮测试稳定 +0.1.0
|
||
|
||
---
|
||
|
||
## 📄 License
|
||
|
||
私有项目 — 保留所有权利。
|