一个简单的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类型的盘,会显示账号不存在,比较遗憾。

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

- 在页面左侧的菜单中选择
Azure Active Directory。

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

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

进入 新注册

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

点 注册,右上方会显示

- 完成之后会显示
概要,点添加重定向 URI,或者左侧的身份验证
这里的
应用程序(客户端) ID就是客户端 ID

- 选择
添加平台,在右侧选择Web

重定向 URI可以填写https://go-drive.top/oauth_callback
这个链接是一个静态的 HTML 页面,代码在 https://github.com/devld/go-drive/blob/master/docs/oauth_callback.html

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

可以选择 截止期限

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

- 在页面左侧找到
API 权限,添加权限。
选择 常用 Microsoft API 下的 Microsoft Graph,然后选择 委托的权限,应用需要三种权限:
User.Read: 读取用户的基本信息Files.ReadWrite: 读写 OneDrive 的任何文件offline_access: 这个权限用于登录成功后获取Refresh Token,保持登录状态

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

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

- 点
连接到 OneDrive,在弹出的界面中点是

- 下拉选择
personal1,点保存

- 点
重新加载盘

【注意】:任何对存储映射的修改均需点击
重新加载盘才可生效。
- 点
主页,可以看到我们刚刚加的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-driveGo-drive | go-drive
地址:https://go-drive.top/