Sign inSign up

aierliz/tideflow

By aierliz

Updated 3 months ago

Buildkit cache
Image
0

1.2K

aierliz/tideflow repository overview

🌊 TideFlow(潮汐流量)

定时消耗服务器带宽,像潮汐一样让流量定时涨落。

功能

  • 自动下载 — 从 HTTP/HTTPS 源流式下载,数据直接丢弃
  • 流量上限 — 按日/周/月设置流量上限,到达后自动暂停
  • 下载时段 — 指定允许下载的时间窗口(支持跨天)
  • 并发控制 — 可调并发数,实时生效
  • 限速 — 单任务速度限制
  • 失败冷却 — 源连续失败后自动冷却,避免无效重试
  • Web 面板 — Vue.js SPA 管理界面,密码保护

快速开始

# 构建
go build -o tideflow .

# 运行
./tideflow

打开 http://localhost:8000 ,默认密码 admin

首次启动会自动添加 3 个测速下载源。

Docker

# 构建运行
docker-compose up -d

# 或直接用 Docker
docker run -d \
  -p 8000:8000 \
  -v ./data:/app/data \
  -e ADMIN_PASSWORD=admin \
  aierliz/tideflow:latest

镜像支持 amd64 / arm64

Docker Hub: aierliz/tideflow

API

方法路径说明
GET/health健康检查
GET/api/version版本号
POST/api/auth密码验证
GET/PUT/api/settings全局设置
GET/api/stats实时状态
GET/api/stats/traffic流量历史
GET/POST/PUT/DELETE/api/sources下载源 CRUD
POST/api/sources/test测试 URL 可达性
POST/api/sources/clear-cooldowns清除冷却
POST/api/downloads/pause暂停下载
POST/api/downloads/resume恢复下载

设置项

设置默认值说明
traffic_cap_enabledfalse启用流量上限
traffic_cap_bytes107374182400上限字节数(100GB)
traffic_cap_perioddaily重置周期:daily / weekly / monthly
traffic_cap_reset_hour0重置时刻(0-23)
traffic_cap_reset_weekday1每周重置星期(1=周一…7=周日)
traffic_cap_reset_day1每月重置日期(1-28)
time_window_enabledfalse启用下载时段
time_window_start00:00时段开始
time_window_end23:59时段结束
default_max_speed0单任务限速(0=不限,支持 10M/512K 格式)
max_concurrent3最大并发数

开发

# 依赖
go mod tidy

# 构建
go build -o tideflow .

# 带版本信息构建
VERSION=$(cat VERSION)
go build -ldflags="-s -w \
  -X 'main.version=${VERSION}' \
  -X 'main.commitSHA=$(git rev-parse --short HEAD)' \
  -X 'main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)'" \
  -o tideflow .

架构

main.go                     # 入口,路由注册
internal/
├── config/config.go        # 配置常量
├── storage/                # JSON 文件存储
│   ├── store.go            # 内存缓存 + 持久化
│   └── models.go           # 存储层数据类型
├── models/models.go        # API 数据模型
├── enforcer/enforcer.go    # 带宽消耗引擎(goroutine)
└── handlers/               # HTTP 处理器
    ├── auth.go
    ├── downloads.go
    ├── sources.go
    ├── stats.go
    └── settings.go
app/
├── static/                 # 前端静态资源
└── templates/index.html    # Vue.js SPA

许可证

MIT

Tag summary

Content type

Image

Digest

sha256:9383f8901

Size

5.1 MB

Last updated

3 months ago

docker pull aierliz/tideflow