Gopeed 实用指南:HTTP、BT、ed2k 全协议跨平台下载,从单文件到远程管理
【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeed
当一部电影需要在手机、电脑和服务器上轮流下载,而每台设备装的下载工具都不一样时,Gopeed 就是为此设计的:一个用 Golang + Flutter 写的跨平台下载管理器,支持 HTTP、BitTorrent、磁力链接、ed2k 四种协议,能装在桌面、手机上,也能以 Web 服务和 Docker 形式跑在服务器上。
读完这篇指南,你可以做到:
- 用一条命令下载文件,并指定并发连接数与保存目录
- 分别调好 HTTP 连接数与 BT 做种策略
- 在服务器上用 Web 端远程添加和管理下载任务
- 给下载流程挂上解压、通知等自定义动作
装好一个能用的 Gopeed 📦
想在正式用之前先验证"它在我机器上能不能跑",这是第一步。按使用形态选一条路就行。
只下文件:命令行版本三步装好
装过 Go 的话最快,一条命令装好,第二条验证:
go install github.com/GopeedLab/gopeed/cmd/gopeed@latest gopeed -h要界面:直接下对应平台的安装包
各平台的发行格式在官方 README 里列得很全,挑一行对应的下载即可:
| 平台 | 发行格式 |
|---|---|
| Windows | EXE、绿色版 ZIP |
| macOS | DMG(universal / amd64 / arm64) |
| Linux | DEB、AppImage、Flatpak、Snap |
| Android | APK(universal 及 32/64 位) |
| iOS | IPA |
| 服务器 | Docker 镜像 |
源码参考:README_zh-CN.md
想自己编译
要求 Golang 1.25+ 和 Flutter 3.38+,各平台的完整构建命令(含 cgo、gomobile 步骤)都写在 README 的"开发"章节里:
git clone https://gitcode.com/GitHub_Trending/go/gopeed一条命令下完一个文件 ⚡
日常最高频的操作:拿到一个链接,马上开始下。命令行版把这件事压到了一条命令。
命令格式与两个参数
gopeed https://example.com/largefile.zip -C 16 -D ./downloads-C 16:并发连接数,默认就是 16-D ./downloads:保存目录,不填则存到当前目录
下载过程中会实时刷新进度条,显示百分比、速度和总大小;结束后打印保存路径,失败则打印原因。
源码参考:cmd/gopeed/flags.go
并发连接数怎么设
| 场景 | -C建议值 |
|---|---|
| 小文件、网络一般 | 4~8 |
| 大文件、带宽充足 | 16~32 |
| 连接频繁被重置 | 降到 8 以下再试 |
四种输入都能识别
| 输入 | 示例 |
|---|---|
| HTTP 链接 | https://example.com/a.zip |
| 种子文件 | bt.torrent |
| 磁力链接 | magnet:?xt=urn:btih:... |
| ed2k 链接 | ed2k://\|file\|... |
分别调好 HTTP 与 BT 引擎
两个协议的配置项分开存放,改哪个就动哪个。
HTTP 引擎的三个配置项
| 参数 | 含义 |
|---|---|
connections | 并发连接数 |
userAgent | 自定义请求的 User-Agent |
useServerCtime | 用服务器返回的文件时间 |
源码参考:internal/protocol/http/config.go
BT 引擎的做种策略
做种策略是 BT 场景下最值得动的部分——下完之后继续传多久、按什么条件停:
| 参数 | 含义 |
|---|---|
listenPort | 监听端口,路由器上需放行/映射 |
trackers | 追加的 tracker 服务器列表 |
seedKeep | 下载完成后一直做种,除非手动停止 |
seedRatio | 上传/下载比达到该值后停种 |
seedTime | 完成后做种秒数 |
源码参考:internal/protocol/bt/config.go
用 Web 服务远程管理下载 🌐
场景:服务器上没有图形界面,但你想在手机上随时添加任务、看进度。Gopeed 的 Web 端把整个下载器包成了一个带界面的 HTTP 服务,参数走命令行、配置文件或环境变量三种方式。
启动参数速查
| 参数 | 含义 | 默认值 |
|---|---|---|
-A | 绑定地址 | 0.0.0.0 |
-P | 端口 | 9999 |
-u/-p | Web 登录用户名/密码 | gopeed/ 空(不设密码则关闭认证) |
-T | API Token,开启 Web 认证后调 API 必填 | 空 |
-d | 存储目录 | 程序同目录storage |
-w | 允许下载的目录白名单,逗号分隔 | 无 |
同一组配置也可以写成GOPEED_PORT这样的环境变量,或放在-c指定的config.json里,命令行参数优先级最高——这对 Docker 部署很顺手。
源码参考:cmd/web/flags.go、pkg/rest/model/server.go
用扩展给下载流程加动作
内置功能不够用时(比如"下完自动解压"),扩展系统让你挂进下载流程的四个环节:
| 事件 | 触发时机 | 典型用途 |
|---|---|---|
onResolve | URL 解析阶段 | 改写下载请求 |
onStart | 下载开始前 | 调整任务参数 |
onError | 下载出错时 | 自动重试 |
onDone | 下载完成后 | 解压、发通知 |
安装方式只有两种,都内置在核心库中:按 Git 仓库地址安装,或指定本地文件夹安装。开发时用本地文件夹并开启开发模式,扩展不会被复制走,改一行代码立即生效,省去了反复安装的循环。一个扩展就是manifest.json+ 入口 JS,仓库里带了十几个可运行的样例,从存储、Blob 下载到各类事件钩子都有:
源码参考:pkg/download/extension.go、样例目录 pkg/download/testdata/extensions/
出问题时先查这张表
| 症状 | 先查哪里 |
|---|---|
| BT 速度慢 | 防火墙是否放行入站;trackers是否偏少;端口映射是否生效 |
| HTTP 下载频繁中断 | 把并发降到 8 左右;确认网络是否抖动 |
| Web 端从外网打不开 | -A是否绑了0.0.0.0;是否设置了-p密码 |
| 换机器后任务没了 | 备份并迁移存储目录(任务、设置都存在里面) |
遇到问题与参与项目
日志、数据都在存储目录里,排查时优先看日志文件。想继续深入:
- 贡献指南(含环境要求与编译流程):CONTRIBUTING_zh-CN.md
- 项目介绍与全平台下载地址:README_zh-CN.md
- 前后端结构:Flutter 前端在
ui/flutter,Golang 后端在根目录,两者通过 HTTP 通讯
【免费下载链接】gopeedA fast, modern download manager for HTTP, BitTorrent, Magnet, and ed2k. Cross-platform, built with Golang and Flutter.项目地址: https://gitcode.com/GitHub_Trending/go/gopeed
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考