一个跨平台、可自托管的文件管理服务器,配备现代化的 Web 界面。
通过统一的界面管理本地文件以及多种云存储服务。
English | 简体中文
go-drive 是一个使用 Go 编写、前端基于 Vue/TypeScript 的轻量级文件管理服务器。它让你能够通过一个简洁的 Web 界面,在多种存储后端之间浏览、上传、整理和分享文件 —— 包括本地磁盘、FTP/SFTP、WebDAV、S3 兼容对象存储、OneDrive、Google Drive 等等。
整个应用以单个自包含的二进制文件分发(Web 界面与 i18n 资源已内嵌),因此可以非常方便地部署在服务器、NAS 或容器中。
默认账号:用户名
admin,密码123456。请在首次登录后立即修改密码。
libvips/ffmpeg)。| 存储 | 说明 |
|---|---|
| 本地文件 | 主机文件系统上的文件 |
| FTP | FTP 服务器 |
| SFTP | 基于 SSH 的文件传输 |
| WebDAV | 任意兼容 WebDAV 的服务器 |
| S3 | Amazon S3 及 S3 兼容对象存储 |
| OneDrive | 微软 OneDrive |
| Google Drive | 谷歌云端硬盘 |
| Dropbox | 通过脚本(JavaScript)实现 |
| 七牛云 | 通过脚本(JavaScript)实现 |
各存储类型的具体配置方式请参见文档。
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 是数据目录。将其映射到容器之外,可确保在应用升级后数据得以保留。启动后,访问 http://localhost:8089。
官方 Docker 镜像已内置 ffmpeg 和 libvips,并自动启用视频/音频以及高性能图片缩略图处理器。
如需自定义配置,可先从镜像中提取默认的 config.yml,再将其映射回容器:
# 通过一个临时容器提取 config.yml
cid=$(docker run -d devld/go-drive) && docker cp "$cid:/app/config.yml" . && docker stop "$cid" && docker rm "$cid"
# 同时将数据目录和配置文件映射到容器外
docker run -d --name go-drive \
-p 8089:8089 \
-v "$(pwd)/go-drive-data:/app/data" \
-v "$(pwd)/config.yml:/app/config.yml" \
devld/go-drive
services:
go-drive:
image: devld/go-drive
container_name: go-drive
ports:
- "8089:8089"
volumes:
- ./go-drive-data:/app/data
restart: unless-stopped
docker compose up -d
在 Releases 页面下载对应平台的压缩包,解压后运行:
./go-drive
直接运行 go-drive.exe 即可。
默认情况下,go-drive 会读取工作目录中的 config.yml(如果存在),并监听 :8089。常用参数:
./go-drive -c /path/to/config.yml # 使用指定的配置文件
./go-drive -show-config # 打印解析后的配置
./go-drive -v # 打印版本信息
go-drive 通过 YAML 文件进行配置。完整且带注释的参考配置位于 docs/config.yml,可复制后按需修改。部分常用选项:
| 选项 | 默认值 | 说明 |
|---|---|---|
listen |
:8089 |
HTTP 服务监听地址 |
data-dir |
./data |
所有应用数据目录(数据库、会话、缩略图、本地文件等) |
temp-dir |
data-dir/temp |
临时文件目录 |
max-concurrent-task |
100 |
最大并发任务数(复制、移动、删除) |
free-fs |
false |
允许本地存储使用绝对路径(存在安全风险) |
trusted-proxies |
空 | 用于解析真实客户端 IP 的可信代理 IP/CIDR |
api-path / web-path |
空 | 在子路径下提供服务时覆盖 API/静态资源路径 |
go-drive 支持 SQLite(默认)和 MySQL。WebDAV 访问、全文搜索、缩略图处理器以及反向代理/子路径部署等也都在此配置 —— 完整参考请见 docs/config.yml 和文档。
⚠️ 设置
free-fs: true会允许管理员用户通过本地存储浏览整个主机文件系统。除非你完全了解其影响,否则请保持为false。
前置要求: go.mod 中指定的 Go 版本、Node.js 24,以及 C 工具链(SQLite 需要 CGO)。
git clone https://github.com/devld/go-drive.git
cd go-drive
# 构建全部:前端、后端及发布压缩包
make all
make all 会构建 Vue 前端(web/dist),将其与 i18n 资源一起内嵌到 Go 二进制文件中,并在 build/ 下生成发布压缩包。仅前端开发时:
cd web
npm install
npm run dev # 启动开发服务器
npm run lint # 类型检查 + lint
npm run build-web # 生产构建
欢迎贡献代码!请遵循以下流程:
go test,并发代码使用 go test -race)。web/ 目录下运行 npm run lint 和 npm run build-web。fix(server): ...)。基于 MIT 许可证 发布。版权所有 © 2020 devld。
$ claude mcp add go-drive \
-- python -m otcore.mcp_server <graph>