- 完整的前后端代码 - 支持本地存储和SFTP存储 - 文件分享功能 - 上传工具源代码 - 完整的部署文档 - Nginx配置模板 技术栈: - 后端: Node.js + Express + SQLite - 前端: Vue.js 3 + Axios - 存储: 本地存储 / SFTP远程存储
245 lines
5.7 KiB
Markdown
245 lines
5.7 KiB
Markdown
# 玩玩云 - Web SFTP 文件管理系统
|
||
|
||
> 一个基于Web的SFTP文件管理系统,提供文件上传、下载、分享等功能,支持多用户管理。
|
||
|
||
## 📋 项目简介
|
||
|
||
玩玩云是一个现代化的Web文件管理系统,让您可以通过浏览器管理SFTP服务器上的文件。系统支持文件的上传、下载、重命名、删除、分享等操作,并提供桌面端上传工具,方便快速上传大文件。
|
||
|
||
### 主要特性
|
||
|
||
- ✅ **文件管理** - 浏览、上传、下载、重命名、删除文件
|
||
- ✅ **文件分享** - 生成分享链接,支持密码保护和有效期设置
|
||
- ✅ **多用户系统** - 用户注册、登录、权限管理
|
||
- ✅ **桌面上传工具** - 拖拽上传,实时显示进度
|
||
- ✅ **流式下载** - 服务器零存储,纯中转下载
|
||
- ✅ **管理员功能** - 用户管理、文件审查、系统设置
|
||
- ✅ **Docker部署** - 一键部署,易于维护
|
||
|
||
## 🛠️ 技术栈
|
||
|
||
### 前端
|
||
- **Vue.js 3** - 渐进式JavaScript框架
|
||
- **Axios** - HTTP请求库
|
||
- **Font Awesome** - 图标库
|
||
|
||
### 后端
|
||
- **Node.js 20** - JavaScript运行时
|
||
- **Express** - Web应用框架
|
||
- **better-sqlite3** - 轻量级数据库
|
||
- **ssh2-sftp-client** - SFTP客户端
|
||
- **JWT** - 用户认证
|
||
|
||
### 部署
|
||
- **Docker** - 容器化
|
||
- **Docker Compose** - 容器编排
|
||
- **Nginx** - 反向代理
|
||
|
||
## 🚀 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- **Docker**: 20.10.0+
|
||
- **Docker Compose**: 2.0.0+
|
||
- **操作系统**: Linux (Ubuntu 20.04+ / Debian 10+ / CentOS 7+)
|
||
- **内存**: 最低 1GB RAM(推荐 2GB+)
|
||
|
||
### 方法1: 一键部署(推荐)
|
||
|
||
```bash
|
||
# 1. 上传或克隆项目
|
||
cd /var/www
|
||
# 将项目文件上传到此目录
|
||
|
||
# 2. 进入项目目录
|
||
cd ftp-web-manager
|
||
|
||
# 3. 一键部署
|
||
bash deploy.sh
|
||
```
|
||
|
||
deploy.sh脚本会自动:
|
||
- 检查Docker和Docker Compose环境
|
||
- 创建必要的目录
|
||
- 构建并启动所有服务
|
||
- 显示访问信息和默认账号
|
||
|
||
### 方法2: 手动部署
|
||
|
||
```bash
|
||
# 1. 进入项目目录
|
||
cd /var/www/ftp-web-manager
|
||
|
||
# 2. 创建必要的目录
|
||
mkdir -p certbot/conf certbot/www backend/uploads
|
||
|
||
# 3. 构建并启动服务
|
||
docker-compose up --build -d
|
||
|
||
# 4. 查看日志
|
||
docker-compose logs -f
|
||
```
|
||
|
||
### 访问系统
|
||
|
||
部署完成后:
|
||
|
||
- **前端地址**: http://服务器IP:8080
|
||
- **后端API**: http://服务器IP:40001
|
||
- **默认管理员账号**:
|
||
- 用户名: `admin`
|
||
- 密码: `admin123`
|
||
- ⚠️ **请立即登录并修改密码!**
|
||
|
||
## 📖 使用教程
|
||
|
||
### 配置SFTP服务器
|
||
|
||
首次使用需要配置SFTP连接信息:
|
||
|
||
1. 登录后点击右上角用户菜单
|
||
2. 选择"设置"
|
||
3. 填写SFTP配置:
|
||
- **SFTP主机**: 您的SFTP服务器IP
|
||
- **SFTP端口**: 默认22
|
||
- **SFTP用户名**: SFTP账号
|
||
- **SFTP密码**: SFTP密码
|
||
- **HTTP下载基础URL**(可选): 如果有HTTP直接下载地址
|
||
|
||
4. 点击"保存配置"
|
||
|
||
### 文件管理
|
||
|
||
- **浏览文件**: 点击文件夹图标进入子目录
|
||
- **上传文件**: 点击"上传文件"按钮选择本地文件
|
||
- **下载文件**: 点击文件行的下载按钮
|
||
- **重命名**: 点击"重命名"按钮修改文件名
|
||
- **删除**: 点击"删除"按钮删除文件
|
||
|
||
### 文件分享
|
||
|
||
1. 点击文件行的"分享"按钮
|
||
2. 设置分享选项:
|
||
- **分享密码**(可选)
|
||
- **有效期**(可选)
|
||
3. 复制分享链接发送给他人
|
||
|
||
## 🔧 维护操作
|
||
|
||
### 查看日志
|
||
|
||
```bash
|
||
# 查看所有日志
|
||
docker-compose logs -f
|
||
|
||
# 查看后端日志
|
||
docker-compose logs -f backend
|
||
```
|
||
|
||
### 重启服务
|
||
|
||
```bash
|
||
# 重启所有容器
|
||
docker-compose restart
|
||
|
||
# 重启指定容器
|
||
docker-compose restart backend
|
||
```
|
||
|
||
### 停止服务
|
||
|
||
```bash
|
||
docker-compose down
|
||
```
|
||
|
||
### 备份数据
|
||
|
||
```bash
|
||
# 备份数据库
|
||
cp backend/ftp-manager.db backup/ftp-manager.db.$(date +%Y%m%d)
|
||
|
||
# 备份整个项目
|
||
tar -czf backup/wanwanyun-$(date +%Y%m%d).tar.gz .
|
||
```
|
||
|
||
### 更新代码
|
||
|
||
```bash
|
||
# 拉取最新代码
|
||
git pull
|
||
|
||
# 重新构建并重启
|
||
docker-compose up --build -d
|
||
```
|
||
|
||
## 🔐 安全建议
|
||
|
||
1. **修改默认密码**: 首次登录后立即修改admin密码
|
||
2. **使用HTTPS**: 配置SSL证书,使用HTTPS访问
|
||
3. **修改JWT密钥**: 在backend/.env文件中设置随机的JWT_SECRET
|
||
4. **定期备份**: 定期备份数据库文件
|
||
5. **限制端口**: 不要对外暴露40001端口,只通过Nginx访问
|
||
|
||
## ❓ 常见问题
|
||
|
||
### Docker容器启动失败
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker-compose logs backend
|
||
|
||
# 重新构建
|
||
docker-compose down
|
||
docker-compose up --build -d
|
||
```
|
||
|
||
### 上传失败提示权限错误
|
||
|
||
检查SFTP服务器目录权限,确保上传目录有写权限。
|
||
|
||
### 分享链接无法访问
|
||
|
||
检查nginx配置和防火墙设置,确保端口8080可访问。
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
ftp-web-manager/
|
||
├── backend/ # 后端代码
|
||
│ ├── server.js # 主服务器文件
|
||
│ ├── database.js # 数据库操作
|
||
│ ├── auth.js # 认证中间件
|
||
│ ├── Dockerfile # Docker镜像
|
||
│ └── package.json # 依赖配置
|
||
│
|
||
├── frontend/ # 前端代码
|
||
│ ├── index.html # 登录页面
|
||
│ ├── app.html # 主应用页面
|
||
│ ├── share.html # 分享页面
|
||
│ └── libs/ # 第三方库
|
||
│
|
||
├── nginx/ # Nginx配置
|
||
│ └── nginx.conf # 配置文件
|
||
│
|
||
├── upload-tool/ # 上传工具
|
||
│ ├── upload_tool.py # Python源码
|
||
│ └── build.bat # 打包脚本
|
||
│
|
||
├── docker-compose.yml # Docker编排
|
||
├── deploy.sh # 一键部署脚本
|
||
├── .gitignore # Git忽略文件
|
||
└── README.md # 本文件
|
||
```
|
||
|
||
## 🤝 贡献指南
|
||
|
||
欢迎提交Issue和Pull Request!
|
||
|
||
## 📄 许可证
|
||
|
||
本项目仅供学习和个人使用。
|
||
|
||
---
|
||
|
||
**玩玩云** - 让文件管理更简单 ☁️
|