当前位置: 首页 > news >正文

FMS 文件管理系统(开源私有文件云盘系统)-支持WebDAV协议以及存储镜像管理-可软替代NAS

🔐 FMS 文件管理系统

端到端加密的私有文件管理服务


📖 简介

FMS (FileService) 是一个自托管的文件管理服务,提供端到端加密、文件分享、WebDAV 访问和 Android App。

  • 🔐AES-256-GCM 加密— 文件上传前在客户端加密,服务器无法读取明文
  • 📡WebDAV 协议— 支持 Windows/Mac/Linux 挂载为网络驱动器
  • 🔗文件分享— 生成分享链接 + 提取码,支持下载次数限制
  • 📱Android App— 基于 Capacitor WebView 的移动客户端
  • 🗄️多镜像存储池— 支持加权分配、健康检查、自动故障转移
  • 🎨暗色/亮色主题— 跟随系统或手动切换

🚀 快速开始

前置要求

  • Node.js >= 18
  • Redis >= 6(用于 Session、缓存、公共回收站)

安装步骤

# 1. 克隆仓库gitclone https://github.com/Antruly/FMS-Service.gitcdFMS-Service# 2. 安装依赖npminstall# 3. 配置环境变量(全新安装会自动生成密钥)cp.env.example .env# 编辑 .env,至少配置:# - PORT: 服务端口(默认 88)# - REDIS_HOST / REDIS_PORT: Redis 连接# - EMAIL_USER / EMAIL_AUTH_CODE: QQ邮箱 SMTP(可选,用于注册验证码)# 4. 启动服务npmstart

访问 http://localhost:88 即可使用。

安装为系统服务

平台脚本说明
Windowsscripts/install-windows-service.bat使用原生sc命令,无需第三方工具,需管理员权限
Linuxscripts/install-linux-service.sh使用原生 systemd,自动创建专用用户,需 root
# Linuxsudobashscripts/install-linux-service.sh# Windows(以管理员权限运行)scripts\install-windows-service.bat

Docker(计划中)

Docker 部署方案即将推出。

📂 项目结构

FMS-Service/ ├── server.js # Express 主入口,中间件,启动逻辑 ├── config.js # 环境变量加载,密钥管理 ├── package.json # 依赖管理 ├── .env.example # 环境变量示例 ├── LICENSE # MIT 开源协议 │ ├── routes/ # API 路由 │ ├── auth.js # 登录/注册/QR登录/设备管理/验证码 │ ├── file.js # 文件 CRUD / 上传下载 / 预览 / 回收站 │ ├── share.js # 文件分享 / 提取码 / 批量分享 │ ├── webdav.js # WebDAV 协议 / 链接管理 │ ├── storage.js # 存储组 / 镜像 / 异步任务 │ ├── version.js # APK 版本管理 / 上传 / 下载 │ └── logs.js # 管理员操作日志 │ ├── lib/ # 核心库 │ ├── db.js # SQLite 数据库模型(sql.js/WASM) │ ├── redis.js # Redis 操作(Session 跟踪、流量、验证码) │ ├── crypto.js # AES-256-GCM 加密/解密(V1 分块格式) │ ├── storage-stream.js # 存储池流式读写 │ ├── email.js # 邮件发送(QQ SMTP) │ ├── ws.js # WebSocket 推送 │ ├── log.js # 分级日志(info/debug/warn/error) │ ├── logger.js # 审计日志(操作记录) │ ├── utils.js # 公共工具函数 │ └── validator.js # 输入验证 │ ├── public/ # 前端静态文件 │ ├── index.html # 首页 / 仪表盘 │ ├── home.html # 主应用 SPA(侧边栏 + 内容面板) │ ├── login.html # 登录页(密码/验证码/扫码) │ ├── share.html # 分享文件浏览/下载 │ ├── admin-storage.html # 存储管理(内嵌 iframe) │ ├── app.js # 前端主逻辑 │ ├── style.css # 全局样式 / 主题系统 │ └── favicon.png # Logo │ ├── scripts/ # 工具脚本 │ ├── pre-build.js # APK 构建前置(版本号写入) │ ├── install-windows-service.bat # Windows 服务安装 │ ├── uninstall-windows-service.bat # Windows 服务卸载 │ └── install-linux-service.sh # Linux systemd 安装 │ ├── app/android/ # Android App 源码(Capacitor) │ ├── app/src/main/java/com/fileservice/app/ │ │ ├── MainActivity.java # 主 Activity │ │ └── SettingsActivity.java # 设置页面 │ └── app/build.gradle # 构建配置 / 版本号 │ └── tests/ # E2E 测试(Playwright)

✨ 功能特性

文件管理

  • 📤 上传 / 下载 / 重命名 / 移动 / 删除
  • 📁 多级目录(个人目录 + 公共目录)
  • 🔍 文件名搜索
  • 🖼️ 图片/视频缩略图和在线预览
  • 🗑️ 回收站(30 天自动清理,支持恢复)
  • 🗜️ 离线批量下载(zip 打包)

加密安全

  • 🔐 AES-256-GCM 文件加密(V1 分块格式支持 Range 请求)
  • 🔑 客户端密钥派生(不传输明文密码)
  • 🛡️ CSRF 保护 + Session 管理
  • 🚦 请求频率限制 + IP 自动封禁
  • 📧 QQ 邮箱验证码注册

文件分享

  • 🔗 生成分享链接 + 提取码
  • ⏱️ 有效期设置 + 下载次数限制
  • 📊 分享日志(访问/下载记录)
  • 🗂️ 支持单文件和批量分享

WebDAV

  • 🌐 标准 WebDAV 协议(PROPFIND/GET/PUT/DELETE/MOVE/COPY/LOCK)
  • 🔗 链接管理(创建/过期/删除)
  • 🔒 支持无密码公开链接和密码保护链接
  • 📂 区分个人目录和公共目录

存储池管理

  • 🗄️ 多存储组 / 多镜像路径
  • ⚖️ 加权写入分配(1-10)
  • ❤️ 健康检查 + 自动故障转移
  • 🔄 文件迁移 / 重组 / 回滚
  • 📋 异步任务系统(批量操作)

Android App

  • 📱 Capacitor WebView 封装
  • 🔍 扫一扫登录
  • ⚙️ 自定义服务器地址
  • 🌐 应用内 WebDAV 访问
  • 📲 应用更新检测

⚙️ 配置说明

所有配置通过.env环境变量设置,完整配置项参见.env.example

关键配置

变量必填说明
PORT服务端口(默认 88)
SESSION_SECRET自动*会话加密密钥
SYSTEM_MASTER_KEY自动*文件加密主密钥 ⚠️ 丢失后文件无法解密
REDIS_HOSTRedis 地址
REDIS_PORTRedis 端口(默认 6379)
EMAIL_USERQQ 邮箱地址(用于发送验证码)
EMAIL_AUTH_CODEQQ 邮箱 SMTP 授权码
APP_BASE_URLApp 公网地址(用于生成分享链接)
CORS_ORIGINSCORS 白名单(留空=开发模式)
LOG_LEVEL日志级别:debug / info / warn / error
SSL_ENABLED是否启用 HTTPS
STORAGE_ALERT_EMAIL存储健康告警邮件接收人

* 全新安装时自动生成并写入 .env;已有数据时需手动配置。

QQ 邮箱 SMTP 配置

  1. 登录 QQ 邮箱 → 设置 → 账户 → POP3/SMTP 服务
  2. 开启服务并获取授权码
  3. .env中配置:
    EMAIL_USER=your-email@foxmail.com EMAIL_AUTH_CODE=获取到的授权码 EMAIL_FROM=文件管理系统

🔧 开发

# 启动开发模式(日志级别设为 debug 查看详细日志)LOG_LEVEL=debugnodeserver.js# 运行 E2E 测试npx playwrighttest# 构建 Android APK(详见 CLAUDE.md)nodescripts/pre-build.js"更新日志"cdapp/android&&./gradlew assembleRelease

📄 开源协议

MIT License — 自由使用、修改、分发。

🔗 相关链接

项目仓库
🌐服务端Antruly/FMS-Service
📱Android AppAntruly/FMS-Service-app

🙏 致谢

  • Express — Web 框架
  • sql.js — SQLite WASM 实现
  • ioredis — Redis 客户端
  • Capacitor — 跨平台 WebView 框架
  • Playwright — E2E 测试框架
http://www.zskr.cn/news/1514493.html

相关文章:

  • 如何用vmulti构建Windows虚拟HID设备:从零到实战的5个核心挑战与解决方案
  • 2026河北结壳抑尘剂厂家怎么选?实用参考 - 品牌排行榜
  • 坐标西安,刚换完ECO棉床垫,聊聊我跑过的几家店 - 深圳市民HLL
  • 2026年实力之选:淄博欧科新材料有限公司——耐材领域的专业莫来石砖供应厂家 - 品牌发掘
  • 别再瞎调延迟了!手把手教你用Fiddler Script精准模拟2G/3G/4G/5G网络(附详细计算公式)
  • 2026年电缆防水接头市场深度分析:高防护等级与定制化趋势下的主流供应商评测 - 优质品牌商家
  • 知识图谱嵌入与多元关系建模:HEHRGNN框架解析
  • 微信小程序发布后,用户手机上的版本还是旧的?一个 `checkUpdateVersion` 方法搞定检测、下载与更新失败兜底
  • 2026年资质代办行业深度观察:从食品许可到建筑资质,如何选择专业服务机构? - 优质品牌商家
  • 2026年数控磨刀机厂家:精工优选与专业制造解析 - 品牌发掘
  • 2026年工业润滑与化工助剂行业观察:高温润滑脂与特种化学品的可靠性评估与供应商分析 - 优质品牌商家
  • 2026年温岭税务代理公司选对=省心 企赢税务专业推荐(内含联系方式) - 本地品牌推荐
  • 别再只盯着内存条了!聊聊PCB上‘金手指’的6个设计细节与生产避坑指南
  • CTF-NetA:新手也能快速掌握的CTF流量分析终极工具
  • 2026年更新:深度解析曲靖快捷搬家搬家公司公司的服务优势与专业选型指南 - 品牌鉴赏官2026
  • 2026实力之选:北京档案密集柜/智能密集柜/电动密集柜/手摇密集柜/档案室密集柜品牌机构深度评估 - 品牌发掘
  • 终极指南:掌握rpatool,轻松处理Ren‘Py游戏资源档案
  • Yolov5魔改指南:轻量级CARAFE算子替换全攻略,从原理到部署的避坑实践
  • 2026年即墨区空调回收公司联系电话及服务参考 - 品牌排行榜
  • 别再对着手册发愁了!STM32F103驱动W25Q64JVSS闪存,从SPI配置到读写文件,保姆级教程
  • China Daily 2026.06.12
  • 2026年 氧化铝空心球源头厂家精选:高纯空心球砖、异型件、保温砖与弧形砖实力品牌解析 - 品牌发掘
  • 保姆级教程:用Thingsboard规则链实现设备数据过滤与异常日志记录(附完整配置截图)
  • Windows 堡垒机实现GBaseDataStudio多用户配置隔离的部署步骤
  • 2026年桥梁防撞护栏定做厂家实力评测:工艺、案例与行业趋势深度分析 - 优质品牌商家
  • HarmonyOS PC 应用 Flex flexBasis 详解——给子项设定一个“起点宽度“
  • LabVIEW实战:用反馈节点和属性节点,5分钟打造一个带状态记忆的简易计数器UI
  • 部署了不会用?来学Claude Code 的 10 个“邪修”秘籍
  • 有限元方法在正曲率流形等距嵌入中的应用与实现
  • SteamShutdown终极指南:告别熬夜等待,让电脑自动关机的智能解决方案