#

go-drive
**一个跨平台、可自托管的文件管理服务器,配备现代化的 Web 界面。**
通过统一的界面管理本地文件以及多种云存储服务。
[](LICENSE)
[](go.mod)
[](web)
[](https://hub.docker.com/r/devld/go-drive)
[](https://hub.docker.com/r/devld/go-drive)
[](https://github.com/devld/go-drive/releases)
[在线演示](https://demo.go-drive.top) · [文档](https://go-drive.top) · [版本发布](https://github.com/devld/go-drive/releases)
[English](README.md) | 简体中文
---
## 目录
- [项目简介](#项目简介)
- [功能特性](#功能特性)
- [支持的存储类型](#支持的存储类型)
- [快速开始](#快速开始)
- [Docker](#docker)
- [Docker Compose](#docker-compose)
- [预编译二进制文件](#预编译二进制文件)
- [配置](#配置)
- [从源码构建](#从源码构建)
- [参与贡献](#参与贡献)
- [许可证](#许可证)
## 项目简介
**go-drive** 是一个使用 Go 编写、前端基于 Vue/TypeScript 的轻量级文件管理服务器。它让你能够通过一个简洁的 Web 界面,在多种存储后端之间浏览、上传、整理和分享文件 —— 包括本地磁盘、FTP/SFTP、WebDAV、S3 兼容对象存储、OneDrive、Google Drive 等等。
整个应用以单个自包含的二进制文件分发(Web 界面与 i18n 资源已内嵌),因此可以非常方便地部署在服务器、NAS 或容器中。
> 默认账号:用户名 `admin`,密码 `123456`。**请在首次登录后立即修改密码。**
## 功能特性
- **文件管理** —— 浏览、复制、移动、重命名、删除,支持拖拽操作以及拖拽/粘贴上传。
- **上传与下载** —— 大文件分片上传,批量文件打包为 zip 下载。
- **访问控制** —— 通过虚拟根路径隔离用户、用户组和匿名访客,并提供细粒度的路径读写权限。
- **LDAP 认证** —— 支持 LDAP/LDAPS、用户首次登录自动创建以及用户组自动同步。
- **路径挂载** —— 将任意存储或子路径挂载到统一的虚拟目录树中。
- **文件预览** —— 基于 [PhotoSwipe](https://github.com/dimsemenov/PhotoSwipe) 的图片画廊、内置音视频播放器和 PDF 查看器,并支持配置外部预览器。
- **编辑器** —— 使用 [CodeMirror](https://github.com/codemirror/) 进行文本编辑,使用 [Monaco Editor](https://github.com/microsoft/monaco-editor) 进行完整的代码编辑。
- **缩略图** —— 为图片、文本、视频和音频生成缩略图(处理器可插拔,可选 `libvips`/`ffmpeg`)。
- **文件名搜索** —— 可选的跨挂载存储文件名索引与搜索。
- **WebDAV 访问** —— 通过 WebDAV 协议访问你的存储。
- **自动化任务** —— 通过 cron 或文件事件触发复制、移动、删除、流程和 JavaScript 动作,并记录执行历史与日志。
- **文件桶** —— 提供带上传 Token 的程序化上传和公开读取端点,支持路径模板、类型/大小限制、缓存与防盗链。
- **可扩展存储** —— 使用 JavaScript 添加新的存储后端,无需重新编译。
- **管理控制台** —— 在浏览器中管理存储、用户、用户组、权限和任务。
## 支持的存储类型
| 存储 | 说明 |
| --- | --- |
| 本地文件 | 主机文件系统上的文件 |
| FTP | FTP 服务器 |
| SFTP | 基于 SSH 的文件传输 |
| WebDAV | 任意兼容 WebDAV 的服务器 |
| S3 | Amazon S3 及 S3 兼容对象存储 |
| OneDrive | 微软 OneDrive |
| Google Drive | 谷歌云端硬盘 |
| Dropbox | 通过脚本(JavaScript)实现 |
| 七牛云 | 通过脚本(JavaScript)实现 |
各存储类型的具体配置方式请参见[文档](https://go-drive.top)。
## 快速开始
### Docker
```shell
mkdir go-drive-data
docker run -d --name go-drive \
-p 8089:8089 \
-v "$(pwd)/go-drive-data:/app/data" \
devld/go-drive
```
`go-drive-data` 是数据目录。将其映射到容器之外,可确保在应用升级后数据得以保留。启动后,访问