Cloudreve:基于 Go 语言的现代化自建云盘系统
项目简介
Cloudreve 是一个基于 Go 语言开发的现代化自建云盘系统,它允许用户在自己的服务器上快速搭建功能丰富的私有云存储服务。该项目采用前后端分离架构,后端使用 Go 语言编写,前端采用 Vue.js 框架,提供了美观的用户界面和强大的文件管理功能。
核心特性
1. 多存储后端支持
Cloudreve 支持多种存储后端,包括: - 本地存储 - 阿里云 OSS - 腾讯云 COS - 七牛云 Kodo - 又拍云 USS - OneDrive - Amazon S3 - 自建 MinIO
2. 用户与权限管理
- 多用户系统支持
- 用户组与权限控制
- 存储配额管理
- 分享链接功能
- 文件秒传与断点续传
3. 现代化界面
- 响应式设计,支持移动端
- 拖拽上传
- 文件预览(图片、视频、文档等)
- 在线解压缩
- 目录分享
技术架构
后端技术栈
- Go:高性能后端服务
- Gin:轻量级 Web 框架
- GORM:ORM 数据库操作
- Redis:缓存与会话管理
- MySQL/SQLite:数据存储
前端技术栈
- Vue.js:前端框架
- Element UI:UI 组件库
- Axios:HTTP 客户端
快速部署示例
使用 Docker 部署
text
# 拉取最新镜像 docker pull cloudreve/cloudreve:latest # 运行容器 docker run -d \ --name cloudreve \ -p 5212:5212 \ --mount type=bind,source=/path/to/cloudreve/uploads,target=/cloudreve/uploads \ --mount type=bind,source=/path/to/cloudreve/conf.ini,target=/cloudreve/conf.ini \ --mount type=bind,source=/path/to/cloudreve/cloudreve.db,target=/cloudreve/cloudreve.db \ cloudreve/cloudreve:latest
手动安装部署
text
# 下载最新版本 wget https://github.com/cloudreve/Cloudreve/releases/download/3.8.3/cloudreve_3.8.3_linux_amd64.tar.gz # 解压 tar -zxvf cloudreve_3.8.3_linux_amd64.tar.gz # 赋予执行权限 chmod +x ./cloudreve # 启动服务 ./cloudreve
配置示例
基础配置文件 (conf.ini)
text
[System] Mode = master Listen = :5212 SessionSecret = your_session_secret HashIDSalt = your_hashid_salt [Database] Type = mysql Host = 127.0.0.1 Port = 3306 User = cloudreve Password = your_password Name = cloudreve Charset = utf8 [Redis] Server = 127.0.0.1:6379 Password = DB = 0 [Storage] Policy = local
配置阿里云 OSS 存储策略
text
[Policy] Type = oss Bucket = your-bucket-name Endpoint = oss-cn-hangzhou.aliyuncs.com AccessKeyID = your_access_key_id AccessKeySecret = your_access_key_secret BaseURL = https://your-bucket-name.oss-cn-hangzhou.aliyuncs.com
使用示例
1. 文件上传 API 调用
text
package main
import (
"bytes"
"fmt"
"io"
"mime/multipart"
"net/http"
"os"
)
func uploadFile(url, filePath string) error {
file, err := os.Open(filePath)
if err != nil {
return err
}
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, err := writer.CreateFormFile("file", filePath)
if err != nil {
return err
}
_, err = io.Copy(part, file)
if err != nil {
return err
}
writer.Close()
req, err := http.NewRequest("POST", url, body)
if err != nil {
return err
}
req.Header.Set("Content-Type", writer.FormDataContentType())
req.Header.Set("Authorization", "Bearer your_token_here")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
return err
}
defer resp.Body.Close()
fmt.Println("Response Status:", resp.Status)
return nil
}
2. 创建分享链接
text
# 使用 Cloudreve API 创建分享链接
curl -X POST \
http://your-cloudreve-domain/api/v3/share \
-H 'Authorization: Bearer your_token' \
-H 'Content-Type: application/json' \
-d '{
"path": "/documents/report.pdf",
"expire": 3600,
"password": "optional_password"
}'
扩展开发
自定义存储策略
Cloudreve 支持通过插件机制扩展存储策略。以下是一个简单的存储策略示例:
text
package custom
import (
"context"
"github.com/cloudreve/Cloudreve/v3/pkg/filesystem/driver"
"github.com/cloudreve/Cloudreve/v3/pkg/serializer"
)
type CustomPolicy struct {
PolicyID uint
BucketName string
Server string
}
func (p *CustomPolicy) Put(ctx context.Context, file io.Reader, dst string, size uint64) error {
// 实现文件上传逻辑
return nil
}
func (p *CustomPolicy) Delete(ctx context.Context, files []string) ([]string, error) {
// 实现文件删除逻辑
return []string{}, nil
}
func (p *CustomPolicy) Get(ctx context.Context, path string) (io.ReadCloser, error) {
// 实现文件获取逻辑
return nil, nil
}
性能优势
- 高并发处理:Go 语言的 goroutine 机制使得 Cloudreve 能够高效处理大量并发请求
- 内存效率:相比传统 PHP 云盘系统,Go 语言的内存使用更加高效
- 部署简单:单一可执行文件,无需复杂的运行环境配置
- 跨平台:支持 Windows、Linux、macOS 等多种操作系统
社区与生态
Cloudreve 拥有活跃的开源社区,提供了: - 详细的官方文档 - 插件开发指南 - 第三方主题支持 - 活跃的 GitHub Issues 讨论 - 定期版本更新
总结
Cloudreve 作为一个现代化的自建云盘解决方案,凭借其 Go 语言的高性能优势、丰富的功能特性和优雅的设计,成为了个人和企业搭建私有云存储服务的优秀选择。无论是作为个人网盘、团队协作工具,还是作为文件分发平台,Cloudreve 都能提供稳定可靠的服务。
通过灵活的存储策略配置、完善的权限管理系统和友好的用户界面,Cloudreve 降低了自建云盘的技术门槛,让更多用户能够享受到私有云存储带来的便利和安全。
cloudreve_20260204162912.zip
类型:压缩文件|已下载:0|下载方式:免费下载
立即下载




还没有评论,来说两句吧...