📁 nowen-file
现代化文件管理系统 · 多数据源 · WebDAV · 版本管理
项目介绍
nowen-file 是一个使用 Go + React 构建的现代化文件管理系统,支持 多数据源映射、WebDAV 协议、文件分享 与 版本管理,打造你自己的"百度网盘"。
🎯 设计目标:统一管理本地文件、NAS 上的 SMB/NFS 共享、S3 对象存储,全部通过一个现代化的 Web UI。
核心功能
📁 文件管理
📂
完整 CRUD
创建 · 上传 · 下载 · 重命名 · 移动
🔍
文件搜索
关键词搜索 & 按类型浏览(图片/视频/音频/文档)
🗑️
回收站
软删除 + 恢复,防止误操作
🔗
文件分享
链接分享 · 密码保护 · 自定义有效期
📝
版本管理
历史版本记录 · 一键回滚 · 版本删除
🖼️
文件预览
在线预览图片 / PDF / 文本 / 视频 / 音频
👤 用户与管理
- 用户系统 — 注册 / 登录 / JWT 认证
- 存储空间统计 — 用量监控、配额管理
- 管理员后台 — 系统概览、用户管理、审计日志
- 操作审计 — 完整的用户操作日志记录
🔌 数据源映射(核心亮点)
映射 Windows / Linux / NAS 上的目录进行 统一管理,数据无需复制:
支持的挂载类型
local # 本地目录 smb # SMB/CIFS 网络共享(Windows 共享) nfs # NFS 挂载(Linux/Unix 共享) agent # 远程 Agent(规划中)
📡 WebDAV 协议
通过文件管理器直接 挂载网络驱动器。Windows 用户可在「映射网络驱动器」中输入 http://localhost:8080/dav,使用注册用户名密码认证即可。
☁️ 多存储后端
支持 本地存储 和 S3 / MinIO 对象存储,通过环境变量切换。
技术栈
🐹
后端
Go 1.25 · Gin · GORM · SQLite (纯 Go,无需 CGO) · JWT · MinIO SDK
⚛️
前端
React 18 · TS 5.3 · Ant Design 5 · Zustand · Axios · Vite 5
快速开始
🐳 Docker 一键启动
Terminal
# 拉取镜像(自动匹配 amd64/arm64 架构) $ docker pull nowen/nowen-file:latest # 启动 $ docker run -d \ --name nowen-file \ --restart unless-stopped \ -p 8080:8080 \ -v /your/path/data:/app/data \ -e NOWEN_JWT_SECRET=your-secret-key \ nowen/nowen-file:latest # 访问 http://NAS的IP:8080
💻 本地开发
Terminal — Go 1.21+ / Node 18+
# 后端 (:8080) $ go mod tidy $ go run main.go # 前端 (:3000,自动代理 API 到 :8080) $ cd web && npm install && npm run dev
关键配置
环境变量
# 基础配置 NOWEN_PORT=8080 # 服务端口 NOWEN_DB_PATH=./data/nowen.db # SQLite 路径 NOWEN_UPLOAD_DIR=./data/uploads # 上传目录 NOWEN_JWT_SECRET=change-me # 生产必改! NOWEN_MAX_UPLOAD=1073741824 # 1GB # S3/MinIO(当 NOWEN_STORAGE_TYPE=s3 时生效) NOWEN_STORAGE_TYPE=s3 NOWEN_S3_ENDPOINT=minio.local:9000 NOWEN_S3_BUCKET=nowen-file NOWEN_S3_ACCESS_KEY=... NOWEN_S3_SECRET_KEY=...
NAS 部署(全家桶)
项目在四大 NAS 平台均有详细部署指南:
🟢
绿联 NAS
Docker → 镜像搜索 nowen/nowen-file
🔵
群晖 Synology
Container Manager 项目部署(DSM 7.2+)
🟠
威联通 QNAP
Container Station 创建容器
🟤
飞牛 fnOS
Docker 管理拉取并创建容器
API 速览
主要端点
# 认证 POST /api/auth/register # 注册 POST /api/auth/login # 登录 # 文件管理 GET /api/files/list # 文件列表 POST /api/files/upload # 上传文件 GET /api/files/download/:uuid # 下载文件 GET /api/files/preview/:uuid # 在线预览 # 分享 POST /api/share # 创建分享 GET /api/share/:code # 公开访问 # 数据源 POST /api/mounts # 创建数据源 POST /api/mounts/:id/scan # 触发扫描 # WebDAV 入口 ALL /dav/* # 完整 WebDAV 协议
相关链接
📂 源码仓库: github.com/cropflre/nowen-file
📜 开源协议: MIT