高速远程中继下载与
Hook 驱动的自动化转存流水线
本地一键投送,云端高速吸纳,流水线自动归档,多渠道即时知晓。
为 VPS 下载中继打造:内置 Aria2 RPC/CLI、yt-dlp、Wget、Curl 及 夸克网盘转存 (diskcli),零外部数据库依赖,断电重启无缝自愈。
# 1. 登录中继 VPS 保存凭证(一次性保存,后续免传服务器与密钥)
$ skyhook login -s "http://YOUR_VPS_IP:8080" -t "your-secret-token"
✅ 凭证已安全保存至 ~/.skyhook (0600权限)
# 2. 本地一键投送 HTTP 链接 / 磁力链接 / 种子文件 / 流媒体视频
$ skyhook https://releases.ubuntu.com/24.04/ubuntu-24.04.iso
$ skyhook "magnet:?xt=urn:btih:..."
$ skyhook -a quark_backup "https://www.youtube.com/watch?v=..."
🚀 已提交至云端中继: 智能调度引擎 -> 下载完成 -> 触发 Hook 自动转存夸克 -> Telegram 多端推送完成通知
全面完备的核心特性矩阵
拒绝繁琐与脆弱,专为低资源占用、高并发中继与无人值守流水线而生。
多协议下载引擎池
配置文件驱动驱动池与优先级(0-99):内置 Aria2 RPC(BT/磁链)、Aria2 CLI Fork(多线程HTTP)、yt-dlp(流媒体视频)、Wget、Curl 与纯 Go Native 保底引擎。
全生命周期 Hook 系统
首等公民级 Hook:on_create_failed(创建失败告警)、on_start(启动提醒)、on_progress(巡检进度广播)、on_complete(完成转存)、on_error(异常清理)。
多渠道广播通知矩阵
支持 Telegram Bot、企业微信、钉钉、飞书、Bark (iOS) 与通用 Webhook 并行并发推送,自动适配各平台专属 Markdown 与卡片排版。
进程崩溃自愈与断点接管
免外挂 DB(采用原子临时文件落盘),进程重启或断电恢复时自动执行 RecoverAndResume:离线完成的任务自动执行流水线,中断的任务自动断点续传(HTTP Range 206 / Aria2 continue)。
磁盘安全预留与防爆盘熔断
通过 OS 原生 Statfs 实时监控 Bavail 剩余块。任务提交时预检拦截(返回 HTTP 507),下载巡检时若可用空间低于预留安全线立即安全熔断中止,杜绝爆盘死机。
全生命周期 Hook 与动作流水线
从入库预检、实时巡检、落盘完成到多阶段转存与磁盘擦除,赋予每一个下载任务完整的自主生命周期控制能力。
on_create_failed
空间不足 (HTTP 507)、URL/种子解析失败时立即触发,向通知渠道告警。
on_start
成功调度下载引擎(Aria2/yt-dlp 等)并建立连接时触发,记录启动日志。
on_progress
巡检看门狗每 2 秒广播即时速度、进度百分比及落盘体积至监控端。
on_complete
文件完整落盘校验后执行串行流水线命令:夸克网盘转存、转码压缩、OSS 备份。
on_error
下载错误、超时取消 (Watchdog) 或动态空间防爆盘熔断时触发清理与告警。
企业级容错与空间保护机制
-
clean_at_end: true
流水线全部命令顺利完成后自动清理本地 VPS 下载源文件,实现“零磁盘留存”云中转。
-
continue_on_error: true
命令级容错穿透。单个转存渠道(如网盘故障)异常不阻断后续其他云存储备份与通知。
-
retries: 3 & retry_interval: 10s
命令执行故障智能自愈,网络抖动时自动按间隔重试,避免瞬时网络异常导致任务流产。
-
timeout: 45m
命令看门狗超时保护,防止转存或外部转码脚本死锁僵死,保障系统调度稳定性。
命令与通知动态模板变量
在 Hook 命令 run 与通知模板中可直接引用上下文宏变量:
本地落盘完整绝对路径
目标下载存储目录
原始下载链接 / 磁力链接
任务全局唯一调度编号
调度的引擎 (如 aria2_rpc)
错误异常信息详细描述
实时瞬时速率 (MB/s)
当前下载进度百分比
# 定义转存流水线动作 actions: quark_pipeline: name: "夸克网盘自动转存并清理流水线" clean_at_end: true # 转存成功后自动清理 VPS 本地文件,永不爆盘! hooks: on_start: notify: true # 启动时向 Telegram/飞书/企业微信发送广播 on_progress: notify: true # 周期性上报瞬时下载速率与百分比 on_complete: notify: true commands: # 1. 使用容器内置 diskcli 极速上传至夸克网盘 - name: "上传至夸克网盘" run: "diskcli upload \"{path}\" /remote/downloads/" timeout: 1h retries: 3 retry_interval: 10s continue_on_error: true # 即使夸克异常,不阻断后续流程 # 2. 同步上传至阿里云 OSS 灾备归档 - name: "同步至阿里云 OSS" run: "ossutil cp -r \"{path}\" oss://backup-bucket/downloads/" timeout: 30m retries: 2 on_error: notify: true # 失败告警并自动记录异常日志 commands: - name: "错误告警落盘" run: "echo \"[ERROR] {id} failed: {error}\" >> /data/config/error.log"
多渠道并发广播通知矩阵
原生支持主流办公与个人通讯平台,零延迟多端广播。全异步并发分发,绝不阻断核心下载进程。
Telegram Bot
type: "telegram"支持群组 Channel 或个人私聊机器人推送,原生 Markdown 排版,支持任务直链跳转与状态 Emoji。
企业微信 (WeCom)
type: "wecom"企业微信群自定义机器人,适配企业微信专属 Markdown 规范与状态颜色标签(如绿色成功、红色告警)。
钉钉 (DingTalk)
type: "dingtalk"支持钉钉群机器人 Markdown 卡片消息,内置安全签名加签(Sign Secret)与关键词安全校验。
飞书 (Feishu)
type: "feishu"支持飞书群自定义机器人,采用飞书富文本 Post 结构化消息排版,适配团队协作工作流看板。
Bark (iOS 原生推送)
type: "bark"针对 iPhone/iPad 设备的纯原生即时静默/声音推送,支持分组归类(group)、角标以及自定义铃声。
Gotify (自建推送)
type: "gotify"开源私有化推送服务,支持 Android/Web 客户端直连,原生 Markdown 富文本渲染与故障自动升权。
通用 HTTP Webhook
type: "webhook"向自建系统、Node-RED、Home Assistant 或中间件发送标准 JSON 负载,包含完整任务元数据与时间戳。
任务编号:fa126bb5882d
驱动引擎:aria2_rpc (BT/磁力)
目标文件:ubuntu-24.04-desktop-amd64.iso
文件大小:5.82 GB
平均速率:38.4 MB/s
执行流水:quark_pipeline (已转存至夸克网盘)
notify: channels: # 1. Telegram Bot (群组或个人) - name: "运维推送群" type: "telegram" enabled: true bot_token: "123456789:ABCdefGh..." chat_id: "-1001234567890" # 2. 企业微信机器人 - name: "团队工作群" type: "wecom" enabled: true url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=..." # 3. 钉钉群机器人 (支持签名加签) - name: "告警群-钉钉" type: "dingtalk" enabled: true url: "https://oapi.dingtalk.com/robot/send?access_token=..." # 4. Bark (iOS 手机直推) - name: "个人 iPhone" type: "bark" enabled: true url: "https://api.day.app/YOUR_BARK_KEY" # 5. Gotify (私有化推送服务) - name: "个人 Gotify" type: "gotify" enabled: true url: "https://gotify.example.com" token: "Axxxxxxxxxxxxxx" priority: 5
环境变量自动授权
容器启动时只需传入 -e QUARK_COOKIE="...",启动脚本自动配置 /root/.diskcli/config,无需进入容器手动登录。
极速大文件分块上传
通过 diskcli upload "{path}" /remote/downloads/ 命令并发秒级上传,断点续传支持,大体积视频与镜像毫无压力。
中转完毕自动擦除
搭配流水线的 clean_at_end: true,网盘转存完成立即销毁 VPS 本地临时文件,20GB 磁盘也能中继 100GB 大文件。
优雅的面向接口分层架构
高内聚、低耦合,各个模块支持插拔与 Mock 单元测试。
┌────────────────────────────────────────────────────────────────────────┐
│ HTTP RESTful API (:8080) │
│ [Token Auth Middleware] [Global App Context] │
└───────────────────────────────────┬────────────────────────────────────┘
│
┌───────────────────────────────┼────────────────────────────────┐
▼ ▼ ▼
┌──────────────────────┐ ┌──────────────────────┐ ┌──────────────────────┐
│ Downloader Interface │ │ Pipeline & Watcher │ │ Notifier Interface │
│ (Priority Registry) │ │ (Recovery & Timeout) │ │ (Concurrent Dispatch)│
└──────────┬───────────┘ └──────────┬───────────┘ └──────────┬───────────┘
│ │ │
┌─────┴──────┐ ┌─────┴──────┐ ┌─────┴──────┐
│ Aria2 RPC │ │ Atomic │ │ Telegram │
│ Aria2 CLI │ │ TaskStore │ │ 企业微信 │
│ Wget │ │ (.json) │ │ 钉钉 / 飞书 │
│ Curl │ └────────────┘ │ Bark │
│ yt-dlp │ │ │ Webhook │
│ Native Go │ ┌─────┴──────┐ └────────────┘
└────────────┘ │ diskcli │
│ (夸克网盘) │
└────────────┘
三分钟极速部署
选择您喜爱的方式一键启动 SkyHook。
方式 1:Docker 一键拉取运行 (预编译多架构镜像)
无需本地安装任何编译器与外部工具,直接拉取 GitHub 官方镜像:
docker run -d \ --name skyhook \ --restart unless-stopped \ -p 8080:8080 \ -p 6800:6800 \ -e AUTH_TOKEN=your-secure-token \ -e ENABLE_ARIA2_RPC=true \ -e ARIA2_SECRET=your-aria2-token \ -e QUARK_COOKIE="your_optional_quark_cookie" \ -v $(pwd)/downloads:/data/downloads \ -v $(pwd)/config:/data/config \ ghcr.io/phpgao/skyhook:latest
方式 2:使用 Docker Compose 一键启动
在克隆仓库后直接执行:
git clone https://github.com/phpgao/skyhook.git cd skyhook/deploy docker compose up -d
方式 3:单一静态二进制原生运行
# 编译服务端与客户端 go build -o bin/skyhookd ./cmd/skyhookd go build -o bin/skyhook ./cmd/skyhook # 复制配置文件并启动 cp config.example.yaml config.yaml ./bin/skyhookd -c config.yaml
RESTful API 交互规范
简单标准,便于外部自动化系统、脚本或机器人集成。
| 端点 | 方法 | 鉴权 | 描述 |
|---|---|---|---|
| /health | GET | 公开 | 健康检查接口,用于探测探针 |
| /api/tasks | POST | Bearer Token | 批量提交下载任务(支持普通 URL、Magnet 磁链、BT 种子) |
| /api/tasks | GET | Bearer Token | 获取所有历史及正在运行的任务状态清单与进度 |
| /api/tasks/:gid | GET | Bearer Token | 精确查询指定任务 GID 的瞬时速度、百分比及落盘路径 |