2026-08-23 00:50:44 +08:00
2026-08-23 00:48:10 +08:00
2026-08-23 00:50:44 +08:00
2026-08-23 00:48:10 +08:00
2026-08-23 00:50:17 +08:00
2026-08-23 00:50:44 +08:00
2026-08-23 00:48:10 +08:00

文件存储系统 (FileStorageSystem)

一个类似七牛云的文件存储系统,提供用户注册、项目隔离存储、API文件操作等功能。

环境配置

前端环境配置

开发环境 (.env.development)

VITE_API_BASE_URL=http://localhost:8100/api/v1
VITE_APP_TITLE=云泽文件存储云平台 (开发)
VITE_APP_ENV=development

生产环境 (.env.production)

VITE_API_BASE_URL=https://file.yunzer.cn/api/v1
VITE_APP_TITLE=云泽文件存储云平台
VITE_APP_ENV=production

后端配置

配置文件 (go/config.yaml)

server:
  port: 8100
  mode: debug
  domain: https://file.yunzer.cn

环境变量

  • FSS_SERVER_PORT: 服务器端口
  • FSS_SERVER_MODE: 运行模式 (debug/release)
  • FSS_SERVER_DOMAIN: 生产环境域名
  • FSS_JWT_SECRET: JWT密钥
  • FSS_JWT_EXPIRE: JWT过期时间

功能概述

1. 用户系统

  • 用户注册/登录:支持邮箱/手机号注册,JWT认证
  • API密钥管理:每个用户可生成多个API Key,用于程序化访问
  • 用户信息管理:个人资料、密码修改、账户设置
  • 角色权限:基于角色的访问控制(RBAC),灵活配置权限
  • 账户安全:登录失败锁定、密码强度要求

2. 项目管理

  • 项目创建:用户可创建多个独立项目(如项目A、项目B)
  • 项目隔离:每个项目拥有独立的存储空间和文件命名空间
  • 项目配额:可设置每个项目的存储容量限制
  • 项目成员(可选):支持项目级别的权限管理

3. 文件管理

  • 文件上传:支持单文件/批量上传,断点续传
  • 文件下载:直接下载或生成临时下载链接
  • 文件删除:软删除/硬删除,回收站机制
  • 文件元数据:文件名、大小、类型、上传时间、MD5校验
  • 文件目录:支持虚拟目录结构组织文件
  • 文件访问控制:公开/私有文件设置,访问密码保护
  • 临时链接:生成带过期时间的临时访问URL
  • 文件预览:图片、视频、文档在线预览(可选)

4. API接口

  • RESTful API:标准REST风格接口
  • 认证方式:API Key + Secret签名认证
  • SDK支持:提供Go/Python/JavaScript SDK(后期)

5. 存储引擎

  • 本地存储:文件存储在本地文件系统
  • 元数据存储:SQLite数据库存储文件元数据、用户信息等
  • 文件去重:基于MD5的文件去重,节省存储空间
  • 存储统计:项目/用户级别的存储使用统计
  • 流量统计:记录上传/下载流量,便于计费分析
  • 自定义域名:支持绑定自定义域名访问文件(可选)

6. 安全特性

  • API认证:HMAC-SHA256签名认证
  • 访问控制:项目级别的文件访问隔离
  • 文件限制:可配置的文件大小、类型限制

7. 系统管理

  • 系统设置:站点名称、站点描述、Logo配置、备案信息等
  • 注册开关:控制是否开放用户注册功能
  • 站点开关:站点维护模式,临时关闭站点访问
  • 操作日志:记录用户关键操作(登录、文件操作、项目管理等)
  • 系统日志:记录系统运行日志(错误、警告、调试信息)
  • 存储配置:默认存储配额、文件大小限制、允许的文件类型
  • 邮件配置:SMTP设置,用于发送通知邮件(可选)
  • 用户管理:用户列表、封禁/解封、角色分配、密码重置
  • 角色管理:创建/编辑/删除角色,配置角色权限
  • 权限管理:查看系统权限点,按模块分组
  • API限流:请求频率限制,防止滥用
  • Webhook回调:文件上传/删除等事件的HTTP回调通知
  • 数据备份:数据库和文件的手动/自动备份

技术架构

后端技术栈

  • 语言:Go 1.21+
  • Web框架:Gin (高性能HTTP框架)
  • 数据库:SQLite (嵌入式数据库)
  • ORM:GORM (Go ORM库)
  • 配置管理:Viper
  • 日志:Zap (高性能日志库)
  • 认证:JWT + API Key签名
  • 限流:golang.org/x/time/rate (令牌桶限流)

前端技术栈

  • 框架:Vue 3 + TypeScript
  • UI组件:Element Plus
  • 构建工具:Vite
  • HTTP客户端:Axios
  • 状态管理:Pinia

快速开始

环境要求

  • Go 1.21+
  • SQLite 3
  • Node.js 16+
  • npm 或 yarn

后端安装和运行

# 进入Go后端目录
cd go

# 安装依赖
go mod tidy

# 运行程序
go run main.go

前端安装和运行

# 进入前端目录
cd backend

# 安装依赖
npm install

# 启动开发服务器
npm run dev

配置文件

后端配置 (go/config.yaml)

server:
  port: 8100
  mode: debug
  domain: https://file.yunzer.cn

database:
  driver: sqlite
  source: ./storage/data.db

storage:
  root: ./storage/files
  backups: ./storage/backups

admin:
  username: admin
  password: admin123  # 首次运行后请修改
  email: admin@example.com
  role: super_admin

jwt:
  secret: please-change-this-secret-key  # 生产环境请修改为随机密钥
  expire: 24h

log:
  level: info
  dir: ./storage/logs
  max_days: 7

前端配置

  • 开发环境:.env.development
  • 生产环境:.env.production

详细文档

更多详细信息请查看 docs/README.md

注意事项

  1. 安全性:生产环境需要修改JWT密钥,启用HTTPS
  2. 性能:大量文件建议使用对象存储服务(如MinIO、阿里云OSS)
  3. 备份:定期备份SQLite数据库和文件存储目录
  4. 监控:建议添加Prometheus监控指标
  5. 日志管理:定期清理过期日志,避免数据库过大
  6. 站点维护:开启维护模式时,确保管理员仍可访问后台
  7. 权限控制:管理员账户需在配置文件中预设,避免权限滥用

许可证

MIT License

S
Description
No description provided
Readme
13 MiB
Languages
Go 55.4%
Vue 38.2%
TypeScript 6.1%
CSS 0.2%
HTML 0.1%