一个简单的web云盘go-drive

什么是 go-drive ?

go-drive 是一个简单的 web 云盘应用程序,支持本地、FTP/SFTP、S3、OneDrive、WebDAV、Google Drive。

  • 功能:

    • 基本的文件管理(上传,下载,复制,移动,重命名,删除)
    • 基于用户/组的访问控制
    • 图片浏览
    • 文本编辑
    • 路径挂载
    • 在 Drive 之间复制文件(夹)
    • Drive 管理界面
  • 目前支持的 Drives

    • 本地文件
    • FTP
    • SFTP
    • WebDAV 协议
    • S3 兼容的云存储
    • OneDrive
    • Google Drive

安装

在群晖上以 Docker 方式安装。

在注册表中搜索 go-drive ,选择第二个 devld/go-drive,版本选择 latest

docker 文件夹中,创建一个新文件夹,并将其命名为 go-drive

文件夹 装载路径 备注
/docker/go-drive /app/data 数据目录

端口

端口不能冲突

本地端口 容器端口 类型
8089 8089 TCP

运行

在浏览器中输入 http://群晖IP:8089,就看到主界面,不过一开始是空空的

点右上角的 登录 按钮

默认用户为 admin,密码 123456

登录成功后,点 管理员 可以进行设置

添加 OneDrive

点中间的 OneDrive README 有详细的配置说明

【注意】:似乎只能用 personal ,不能使用 bussiness 类型的 OneDrive,1~9步都没问题,但是第10步的验证如果用 bussiness 类型的盘,会显示账号不存在,比较遗憾。

  1. 访问 https://portal.azure.com/,首先登录你的 Microsoft 账户。

  1. 在页面左侧的菜单中选择 Azure Active Directory

并不是所有的账号都支持,老苏就有一个号显示没有权限

  1. 在打开的页面上找到 应用注册

进入 新注册

填写 名称受支持的帐户类型 改为 仅 Microsoft 个人帐户

注册,右上方会显示

  1. 完成之后会显示 概要,点 添加重定向 URI,或者左侧的 身份验证

这里的 应用程序(客户端) ID 就是 客户端 ID

  1. 选择 添加平台,在右侧选择 Web

  1. 重定向 URI 可以填写 https://go-drive.top/oauth_callback

这个链接是一个静态的 HTML 页面,代码在 https://github.com/devld/go-drive/blob/master/docs/oauth_callback.html

  1. 在左侧找到 证书和密码,添加 客户端密码

可以选择 截止期限

创建完成后,将 保存备用, 即为 Client Secret,也就是 客户端秘钥

  1. 在页面左侧找到 API 权限,添加权限。

选择 常用 Microsoft API 下的 Microsoft Graph,然后选择 委托的权限,应用需要三种权限:

  • User.Read: 读取用户的基本信息
  • Files.ReadWrite: 读写 OneDrive 的任何文件
  • offline_access: 这个权限用于登录成功后获取 Refresh Token,保持登录状态

添加完成后,应该如下图所示

  1. 回到 go-drive 的设置界面,填入 客户端 ID客户端秘钥,保存

  1. 连接到 OneDrive,在弹出的界面中点

  1. 下拉选择 personal1,点 保存

  1. 重新加载盘

【注意】:任何对存储映射的修改均需点击 重新加载盘才可生效。

  1. 主页 ,可以看到我们刚刚加的 OD

OD 进入

上传个文件

添加本地目录

默认情况下,本地文件根目录为相对路径,并且被限制在 <数据目录>/local 目录中,如果要添加本地文件的映射,则需提前在 <数据目录>/local 下新建名为映射名称的目录。

例如:我们在 go-drive 中建一个子目录 local,然后在 local 中再建一个子目录 root,看起来是这样的

添加盘

保存 –> 重新加载盘 –> 主页,就可以看到刚刚添加的 本地磁盘

小结

安装简单,配置也不复杂,比较遗憾的是对 Onedrive 只支持 personal 而不支持 bussiness 类型,大大降低了可玩性。

参考文档

devld/go-drive: A simple cloud drive mapping web app supports local, FTP/SFTP, S3, OneDrive, WebDAV, Google Drive.
地址:https://github.com/devld/go-drive

Go-drive | go-drive
地址:https://go-drive.top/