From 74e994dd31a739beacdef92f55222c28a2a83fe3 Mon Sep 17 00:00:00 2001 From: lei Date: Tue, 19 Nov 2024 12:23:35 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0readme=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY.md | 272 +++++++++++++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 4 +- README.md | 213 +++++++++++++++++++++++------------------ VERCEL.md | 197 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 591 insertions(+), 95 deletions(-) create mode 100644 DEPLOY.md create mode 100644 VERCEL.md diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..207655d --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,272 @@ +# AiPan NetDisk Search 部署文档 + +本文档详细说明了如何部署 AiPan NetDisk Search 项目。项目支持两种部署方式:Docker 部署和传统部署。 + +## 环境要求 + +- Node.js v20.18.0 +- PostgreSQL 数据库(版本 12+) +- pnpm 包管理器 +- Docker & Docker Compose (如果使用 Docker 部署) + +## 1. Docker 部署(推荐) + +### 1.1 准备工作 + +1. 确保安装了 Docker 和 Docker Compose +2. 复制环境变量文件: + ```bash + cp .env.example .env + ``` +3. 修改 `.env` 文件,配置必要的环境变量: + ```bash + # 数据库配置(PostgreSQL) + DATABASE_URL="postgresql://username:password@host:5432/database_name" + DATABASE_SCHEMA="public" + SHADOW_DATABASE_URL="postgresql://username:password@host:5432/shadow_database_name" + + # 管理员配置 + ADMIN_USER="admin" + ADMIN_PASSWORD="your_password" + ADMIN_EMAIL="admin@example.com" + + # JWT配置 + JWT_SECRET="your_jwt_secret" + ``` + +### 1.2 使用 Docker Compose 部署 + +1. 数据库迁移: + ```bash + # 生成 Prisma 客户端 + npx prisma generate + + # 执行数据库迁移 + npx prisma migrate deploy + ``` + +2. 构建并启动容器: + ```bash + docker-compose up -d + ``` + +3. 查看容器运行状态: + ```bash + docker-compose ps + ``` + +4. 查看应用日志: + ```bash + docker-compose logs -f aipan-netdisk-search + ``` + +### 1.3 更新部署 + +1. 拉取最新代码: + ```bash + git pull origin main + ``` + +2. 执行数据库迁移(如果有新的迁移): + ```bash + npx prisma migrate deploy + ``` + +3. 重新构建并启动容器: + ```bash + docker-compose up -d --build + ``` + +## 2. 传统部署 + +### 2.1 环境准备 + +1. 安装 Node.js (v20.18.0): + ```bash + # 使用 nvm 安装 Node.js + nvm install 20.18.0 + nvm use 20.18.0 + ``` + +2. 安装 pnpm: + ```bash + npm install -g pnpm + ``` + +3. 安装并配置 PostgreSQL 数据库: + - 创建数据库和用户 + - 设置适当的访问权限 + - 确保数据库可以从应用服务器访问 + +### 2.2 项目部署 + +1. 克隆项目: + ```bash + git clone <项目地址> + cd aipan-netdisk-search + ``` + +2. 安装依赖: + ```bash + pnpm install + ``` + +3. 配置环境变量: + ```bash + cp .env.example .env + # 编辑 .env 文件,配置必要的环境变量 + ``` + +4. 数据库设置: + ```bash + # 生成 Prisma 客户端 + npx prisma generate + + # 执行数据库迁移 + npx prisma migrate deploy + ``` + +5. 构建项目: + ```bash + npm run build + ``` + +6. 启动服务: + ```bash + # 使用 PM2 启动(推荐) + cp ecosystem.config.cjs.example ecosystem.config.cjs + # 编辑 ecosystem.config.cjs 配置文件 + pm2 start ecosystem.config.cjs + + # 或直接启动 + npm run start + ``` + +## 3. 环境变量说明 + +必要的环境变量配置: + +```env +# 数据库配置 +DATABASE_URL="postgresql://username:password@host:5432/database_name" +DATABASE_SCHEMA="public" +SHADOW_DATABASE_URL="postgresql://username:password@host:5432/shadow_database_name" + +# 管理员配置 +ADMIN_USER="admin" +ADMIN_PASSWORD="your_password" +ADMIN_EMAIL="admin@example.com" + +# JWT配置 +JWT_SECRET="your_jwt_secret" + +# 应用配置 +NUXT_HOST="0.0.0.0" +NUXT_PORT=3000 +``` + +## 4. 数据库管理 + +### 4.1 数据模型 +项目使用 Prisma ORM,主要数据模型包括: +- User(用户) +- ResourceType(资源类型) +- Resource(资源) +- Post(文章) +- PostCategory(文章分类) +- Alist(Alist 源) + +### 4.2 数据库维护 +1. 查看迁移状态: + ```bash + npx prisma migrate status + ``` + +2. 创建新的迁移: + ```bash + npx prisma migrate dev --name your_migration_name + ``` + +3. 重置数据库: + ```bash + npx prisma migrate reset + ``` + +### 4.3 数据库备份 +建议定期备份数据库: +```bash +pg_dump -U username -h hostname database_name > backup.sql +``` + +## 5. 常见问题 + +### 5.1 数据库连接问题 +- 检查数据库连接字符串格式 +- 确认数据库服务器防火墙设置 +- 验证数据库用户权限 + +### 5.2 端口占用问题 +如果 3000 端口被占用,可以通过以下方式修改: +- Docker 部署:修改 `docker-compose.yml` 中的端口映射 +- 传统部署:修改 `.env` 文件中的 `NUXT_PORT` + +### 5.3 性能优化 +- 使用连接池管理数据库连接 +- 配置适当的 PM2 实例数 +- 优化数据库查询和索引 +- 考虑使用 Prisma Accelerate + +## 6. 监控和维护 + +### 6.1 应用监控 +1. 使用 PM2 监控: + ```bash + pm2 monit + ``` + +2. 查看应用日志: + ```bash + # PM2 日志 + pm2 logs + + # Docker 日志 + docker-compose logs -f + ``` + +### 6.2 数据库监控 +- 监控连接数 +- 监控查询性能 +- 监控磁盘使用情况 + +### 6.3 定期维护 +1. 更新依赖包 +2. 检查安全更新 +3. 数据库备份 +4. 日志清理 +5. 性能优化 + +## 7. 安全建议 + +1. 数据库安全: + - 使用强密码 + - 限制数据库访问IP + - 定期更新数据库版本 + - 加密敏感数据 + +2. 应用安全: + - 使用 HTTPS + - 定期更新依赖 + - 使用安全的 JWT 密钥 + - 实施速率限制 + +3. 服务器安全: + - 配置防火墙 + - 定期安全更新 + - 监控异常访问 + - 限制端口访问 + +如有任何问题,请查看: +- 应用日志 +- Prisma 错误日志 +- 数据库日志 +- Docker 日志 diff --git a/Dockerfile b/Dockerfile index 3a33b9a..da4b7b8 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,5 @@ # 第一阶段:构建阶段 -FROM node:18-alpine AS builder +FROM node:20.18.0-alpine AS builder LABEL authors="Lei" # 设置工作目录 @@ -24,7 +24,7 @@ RUN npx prisma generate RUN npm run build # 第二阶段:运行阶段 -FROM node:18-alpine +FROM node:20.18.0-alpine LABEL authors="Lei" # 设置工作目录 diff --git a/README.md b/README.md index 4805eef..4f4211b 100644 --- a/README.md +++ b/README.md @@ -1,121 +1,148 @@ -# 爱盼-网盘资源搜索Web [欢迎打赏](https://www.aipan.me/donate) - -🔥 爱盼-网盘资源搜索:是一个免费开源项目! - -[欢迎打赏](https://www.aipan.me/donate) - -------------------- -👉 [爱盼-网盘资源搜索](https://www.aipan.me) - -### 🔥更新日志 -- tv播放 -- 新增Alist源聚合播放 -- 新增批量删除功能 -- 新增博客功能 (分支:[feat-admin-panel](https://github.com/unilei/aipan-netdisk-search/tree/feat-add-admin-panel)) -- 新增批量上传数据 [csv示例](/assets//readme//demo/demo-multi.csv) [xlsx 示例](https://r2cf.aipan.me/readme/demo/demo-multi.xls) -- 增加后台管理, 访问路径:`/login` | `/admin/dashboard` | `/admin/clouddrive` -- 后台可以增加自己的网盘资源 ----- - -### 建议 -项目使用的是第三方的API,对ip有访问限制,建议自己部署使用。 - -## 快速开始 - -### 在 Vercel 上部署 - -`手动安装一样的,只需要配置对应的env就行了` - -[Vercel部署文档](/README_VERCEL.md) +# 爱盘-网盘资源搜索 Web [![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/unilei/aipan-netdisk-search.git&project-name=aipan-netdisk-search&repository-name=aipan-netdisk-search) - -### Docker执行,推荐使用docker compose - -#### Docker-compose +🔥 爱盘-网盘资源搜索是一个开源的网盘资源聚合搜索平台。 -##### 第一步 +## 功能特点 -```在项目根目录创建.env文件``` +- 🎯 多源聚合搜索 +- 📺 在线视频播放 +- 🗄️ Alist 源聚合 +- 📝 博客系统 +- 🔐 后台管理系统 +- 📊 资源管理 +- 🚀 批量导入导出 -##### 编译 +## 技术栈 + +- 💻 Frontend + - Nuxt.js 3 + - Vue 3 + - TailwindCSS + - Element Plus + +- 🛠 Backend + - Node.js v20.18.0 + - PostgreSQL + - Prisma ORM + - JWT Authentication + +## 在线演示 + +- 👉 [爱盘-网盘资源搜索](https://www.aipan.me) +- 💝 [欢迎打赏](https://www.aipan.me/donate) + +## 快速开始 + +### 环境要求 + +- Node.js v20.18.0 +- PostgreSQL 12+ +- pnpm 包管理器 + +### 部署方式 + +1. **Vercel 部署**(推荐) + - 查看 [Vercel 部署文档](/VERCEL.md) + - 点击上方 "Deploy with Vercel" 按钮一键部署 + +2. **Docker 部署**(推荐) + - 查看 [Docker 部署文档](/DEPLOY.md#docker-部署推荐) + ```bash + # 1. 配置环境变量 + cp .env.example .env + + # 2. 构建并运行 + docker compose up -d + ``` + +3. **传统部署** + - 查看 [传统部署文档](/DEPLOY.md#传统部署) + +## 最新更新 + +- ✨ TV 播放功能 +- 🔄 Alist 源聚合播放 +- 🗑️ 批量删除功能 +- 📝 博客功能 +- 📤 批量上传数据 + - [CSV 示例](/assets/readme/demo/demo-multi.csv) + - [XLSX 示例](https://r2cf.aipan.me/readme/demo/demo-multi.xls) +- 🔐 后台管理系统 + - 访问路径:`/login`、`/admin/dashboard`、`/admin/clouddrive` + - 支持自定义网盘资源管理 + +## 项目结构 -```bash -docker compose build ``` -##### 运行 - -```bash -docker compose up -d +aipan-netdisk-search/ +├── assets/ # 静态资源 +├── components/ # Vue 组件 +├── layouts/ # 布局组件 +├── pages/ # 页面组件 +├── prisma/ # 数据库模型和迁移 +├── public/ # 公共文件 +├── server/ # 服务端 API +├── stores/ # Pinia 状态管理 +└── utils/ # 工具函数 ``` -##### 停止 +## 开发指南 ```bash -docker compose down -``` - -## 自己部署(不推荐) -### 1. 克隆项目 - -```bash -git clone https://github.com/unilei/aipan-netdisk-search.git -``` - -### 2. 安装依赖 -```bash -# npm -npm install - -# pnpm +# 1. 安装依赖 pnpm install -# yarn -yarn install -``` - -### 3. 设置prisma - -```bash +# 2. 配置环境变量 +cp .env.example .env +# 3. 数据库设置 npx prisma generate npx prisma migrate deploy -``` -### 3. 运行到浏览器 - -```bash -# npm -npm run dev - -# pnpm +# 4. 启动开发服务器 pnpm run dev - -# yarn -yarn dev ``` -### 4. 在浏览器打开 [http://localhost:3001](http://localhost:3001) +## API 说明 -![success_deploy.jpg](https://r2cf.aipan.me/readme/screen-6.png) -![success_deploy.jpg](https://r2cf.aipan.me/readme/screen-5.png) +后台管理 API 路径: +- 登录:`/login` +- 仪表盘:`/admin/dashboard` +- 网盘管理:`/admin/clouddrive` -#### 如何部署到自己服务器? NUXT.JS 打包部署文档 +## 注意事项 -[部署文档](https://nuxt.com/docs/getting-started/deployment) +- 项目使用第三方 API,对 IP 有访问限制 +- 建议自行部署使用 +- 确保数据库配置正确 +- 定期备份重要数据 -Copyright (C) <2024> +## 贡献指南 -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. +1. 创建特性分支:`git checkout -b feature/AmazingFeature` +2. 提交更改:`git commit -m 'Add some AmazingFeature'` +3. 推送分支:`git push origin feature/AmazingFeature` +4. 提交 Pull Request -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. +## 许可证 -You should have received a copy of the GNU General Public License -along with this program. If not, see . +本项目采用 MIT 许可证 - 查看 [LICENSE](LICENSE) 文件了解详情 + +## 截图展示 + +![部署成功截图](https://r2cf.aipan.me/readme/screen-6.png) + +## 支持项目 + +如果这个项目对你有帮助,欢迎: + +1. 🌟 给项目点个 Star +2. 💝 [打赏支持](https://www.aipan.me/donate) + +## 联系方式 + +- 项目地址:[GitHub](https://github.com/unilei/aipan-netdisk-search) +- 问题反馈:[Issues](https://github.com/unilei/aipan-netdisk-search/issues) +- 功能建议:[Discussions](https://github.com/unilei/aipan-netdisk-search/discussions) diff --git a/VERCEL.md b/VERCEL.md new file mode 100644 index 0000000..e43540e --- /dev/null +++ b/VERCEL.md @@ -0,0 +1,197 @@ +# Vercel 部署指南 + +本文档详细说明了如何将 AiPan NetDisk Search 项目部署到 Vercel 平台。 + +## 1. 准备工作 + +### 1.1 Vercel 账号准备 +1. 访问 [Vercel 官网](https://vercel.com) +2. 使用 GitHub 账号登录或注册新账号 +3. 如果是新账号,完成邮箱验证 + +### 1.2 项目准备 +1. 确保你的项目已经推送到 GitHub 仓库 +2. 确保项目根目录包含以下文件: + - `vercel.json`(已配置) + - `package.json` + - `.env.example` + +## 2. 部署步骤 + +### 2.1 导入项目 +1. 登录 Vercel 控制台 +2. 点击 "Import Project" 或 "New Project" +3. 选择你的 GitHub 仓库 +4. 如果没有看到你的仓库,点击 "Configure GitHub App" 添加仓库访问权限 + +### 2.2 配置部署选项 +1. **项目名称**:输入你想要的项目名称 +2. **Framework Preset**:选择 "Nuxt.js" +3. **Root Directory**:保持默认(如果你的项目在根目录) + +### 2.3 环境变量配置 +在 Vercel 项目设置中配置以下环境变量: + +```bash +# 数据库配置(PostgreSQL) +DATABASE_URL="postgresql://username:password@host:5432/database_name" +DATABASE_SCHEMA="public" +SHADOW_DATABASE_URL="postgresql://username:password@host:5432/shadow_database_name" + +# 管理员配置 +ADMIN_USER="admin" +ADMIN_PASSWORD="your_password" +ADMIN_EMAIL="admin@example.com" + +# JWT配置 +JWT_SECRET="your_jwt_secret" + +# 其他必要的环境变量 +``` + +注意: +- 确保使用生产环境的 PostgreSQL 数据库 URL +- 数据库需要支持 Prisma 的所有功能,建议使用: + - [Vercel Postgres](https://vercel.com/docs/storage/vercel-postgres) + - [Supabase](https://supabase.com/) + - [Railway](https://railway.app/) +- 所有密码和密钥都要使用强密码 +- 不要使用开发环境的配置 + +### 2.4 数据库迁移 +在首次部署前,需要确保数据库已经完成迁移: + +1. 本地运行迁移命令: + ```bash + # 确保本地环境变量配置正确 + npx prisma migrate deploy + ``` + +2. 或者在部署后通过 Vercel CLI 运行: + ```bash + vercel env pull .env.production + npx prisma migrate deploy + ``` + +### 2.5 部署配置 + +1. **构建命令**: + ```bash + npx prisma generate && npm run build + ``` + +2. **输出目录**: + ```bash + .output + ``` + +3. **Node.js 版本**: + - 在项目设置中将 Node.js 版本设置为 20.18.0 + +4. **数据库连接**: + - 确保数据库允许来自 Vercel 服务器的连接 + - 如果使用外部数据库,配置适当的防火墙规则 + - 建议使用连接池优化性能 + +## 3. 部署 + +1. 点击 "Deploy" 开始部署 +2. 等待部署完成 +3. 部署完成后,Vercel 会提供一个默认域名(例如:your-project.vercel.app) + +## 4. 部署后配置 + +### 4.1 自定义域名(可选) +1. 在项目设置中点击 "Domains" +2. 添加你的自定义域名 +3. 按照 Vercel 的说明配置 DNS 记录 + +### 4.2 环境变量更新 +如果需要更新环境变量: +1. 进入项目设置 +2. 点击 "Environment Variables" +3. 添加或修改环境变量 +4. 重新部署项目以应用更改 + +### 4.3 自动部署 +默认情况下,Vercel 会: +- 自动部署 main/master 分支的更改 +- 为每个 PR 创建预览部署 +- 可以在项目设置中修改这些行为 + +## 5. 监控和维护 + +### 5.1 部署监控 +1. 查看部署状态和日志 +2. 监控项目性能 +3. 查看访问分析 + +### 5.2 常见问题处理 +1. 部署失败: + - 检查构建日志 + - 验证环境变量配置 + - 确认依赖项版本兼容性 + +2. 性能问题: + - 使用 Vercel Analytics 监控性能 + - 检查数据库连接 + - 优化API响应时间 + +### 5.3 回滚部署 +如果新部署出现问题: +1. 在 Deployments 页面找到之前的稳定版本 +2. 点击 "..." 菜单 +3. 选择 "Promote to Production" + +## 6. 最佳实践 + +1. **环境变量管理**: + - 使用不同的环境变量用于开发和生产 + - 定期更新敏感信息 + - 不要在代码中硬编码敏感信息 + +2. **部署策略**: + - 使用 Git 分支进行功能开发 + - 在合并到主分支前测试预览部署 + - 保持依赖包更新 + +3. **监控和日志**: + - 定期检查部署日志 + - 监控性能指标 + - 设置警报通知 + +## 7. 注意事项 + +1. **数据库注意事项**: + - 确保 PostgreSQL 数据库版本兼容(建议 12+) + - 定期备份数据库 + - 监控数据库连接数 + - 设置适当的连接池大小 + - 考虑使用 Prisma Accelerate 优化性能 + +2. **环境变量**: + - 所有必需的环境变量都已配置 + - 数据库连接字符串格式正确 + - 生产环境使用独立的数据库 + +3. **API和数据模型**: + - 所有 Prisma 模型都已正确迁移 + - API 路由正确配置 + - CORS 设置适当(已在 vercel.json 中配置) + +4. **性能优化**: + - 使用适当的数据库索引 + - 优化查询性能 + - 考虑使用缓存策略 + +5. **监控和日志**: + - 监控数据库查询性能 + - 设置数据库告警 + - 记录关键操作日志 + +如遇到问题,请查看: +- Vercel 部署日志 +- Prisma 错误日志 +- 数据库日志 +- 项目 GitHub Issues +- Vercel 文档中心