基于 Rust + Axum 的高性能文件加速下载服务 (High-performance file acceleration download service)
- 高性能: 基于 Rust 和 Axum 框架,提供极致性能
- GitHub 加速: 自动识别并加速 GitHub 文件下载
- 智能重定向: 自动处理 HTTP 重定向和 URL 转换
- CORS 支持: 完整的跨域资源共享支持
- 现代界面: 蓝色渐变设计的现代化 Web 界面
- 详细日志: 结构化日志记录,支持多级别日志输出
- 灵活配置: 支持命令行参数和环境变量配置
- 容器化: 提供 Docker 镜像,支持容器化部署
# Ubuntu/Debian
sudo apt update -y
sudo apt install -y pkg-config libssl-dev
# CentOS/RHEL
sudo yum install -y pkgconfig openssl-devel
# macOS
brew install pkg-config openssl- 下载源码
git clone https://github.com/idev-sig/filetas.git
cd filetas- 开发环境运行
cargo run- 生产环境构建
cargo build --release
./target/release/filetasfiletas [OPTIONS]
选项:
-H, --host <HOST> 服务器监听地址 [默认: 0.0.0.0] [环境变量: HOST]
-p, --port <PORT> 服务器端口 [默认: 8000] [环境变量: PORT]
-t, --title <TITLE> 页面标题 [默认: 文件加速下载] [环境变量: TITLE]
--template-dir <DIR> 模板目录路径 [默认: templates] [环境变量: TEMPLATE_DIR]
--user-agent <USER_AGENT> 请求用户代理 [环境变量: USER_AGENT]
-v, --verbose 启用详细日志 (等同于 RUST_LOG=debug)
-q, --quiet 启用安静模式 (等同于 RUST_LOG=warn)
-h, --help 显示帮助信息
-V, --version 显示版本信息# 基本使用
filetas
# 自定义端口和主机
filetas --host 127.0.0.1 --port 3000
# 自定义页面标题
filetas --title "我的文件服务器"
# 启用详细日志
filetas --verbose
# 使用环境变量
HOST=0.0.0.0 PORT=8080 TITLE="File Server" filetas
# 组合使用
RUST_LOG=debug filetas --port 8080 --title "开发服务器"| 变量名 | 描述 | 默认值 |
|---|---|---|
HOST |
服务器监听地址 | 0.0.0.0 |
PORT |
服务器端口 | 8000 |
TITLE |
页面标题 | 文件加速下载 |
TEMPLATE_DIR |
模板目录路径 | templates |
USER_AGENT |
请求用户代理 | Mozilla/5.0 ... |
RUST_LOG |
日志级别 | filetas=info,tower_http=info |
# 默认日志级别 (INFO)
filetas
# 详细调试日志
filetas --verbose
# 或
RUST_LOG=debug filetas
# 只显示警告和错误
filetas --quiet
# 或
RUST_LOG=warn filetas
# 自定义日志级别
RUST_LOG=filetas=trace,tower_http=debug filetas- Releases:
https://github.com/user/repo/releases/download/v1.0.0/file.zip - Archive:
https://github.com/user/repo/archive/refs/heads/main.zip - Raw 文件:
https://github.com/user/repo/raw/main/file.txt - Blob 文件:
https://github.com/user/repo/blob/main/file.txt(自动转换为 raw) - Gist:
https://gist.github.com/user/gist-id/raw/file.txt - Tags:
https://github.com/user/repo/tags
- 任何 HTTP/HTTPS 文件 URL
- 自动处理重定向
- 支持大文件流式传输
- 访问
http://localhost:8000 - 在输入框中粘贴文件 URL
- 点击下载按钮或按回车键
- 文件将通过加速服务下载
| 镜像仓库 | 镜像地址 | 说明 |
|---|---|---|
| Docker Hub | idevsig/filetas:latest |
官方镜像仓库 |
| GitHub Container Registry | ghcr.io/idev-sig/filetas:latest |
GitHub 容器注册表 |
| 阿里云容器镜像服务 | registry.cn-guangzhou.aliyuncs.com/idevsig/filetas:latest |
阿里云镜像 |
| 腾讯云容器镜像服务 | sgccr.ccs.tencentyun.com/idevsig/filetas:latest |
腾讯云镜像 |
# Docker Hub
docker run -p 8000:8000 -d idevsig/filetas:latest
# GitHub Contgistry
docker run -p 8000:8000 -d ghcr.io/idev-sig/filetas:latest
# 阿里云镜像(国内用户推荐)
docker run -p 8000:8000 -d registry.cn-guangzhou.aliyuncs.com/idevsig/filetas:latest
# 腾讯云镜像
docker run -p 8000:8000 -d sgccr.ccs.tencentyun.com/idevsig/filetas:latest
# 自定义配置
dockrun -p 3000:3000 -e PORT=3000 -e TITLE="My File Server" -d idevsig/filetas:latestservices:
filetas:
image: idevsig/filetas:latest
container_name: filetas
restart: unless-stopped
ports:
- "8000:8000"
environment:
- HOST=0.0.0.0
- PORT=8000
- TITLE=文件加速下载
- RUST_LOG=filetas=info
volumes:
- ./templates:/app/templates # 可选:自定义模板# 克隆仓库
git clone https://github.com/idev-sig/filetas.git
cd filetas
# 构建镜像
docker build -t my-filetas .
# 运行
docker run -p 8000:8000 -d my-filetas# 通过服务下载文件
curl -L "http://localhost:8000/https://example.com/file.zip" -o file.zip
# GitHub 文件加速
curl -L "http://localhost:8000/https://github.com/user/repo/releases/download/v1.0.0/file.zip" -o file.zip服务支持跨域请求,可以在前端 JavaScript 中直接使用:
// 获取文件
fetch("http://localhost:8000/https://example.com/file.json")
.then((response) => response.json())
.then((data) => console.log(data));
// 下载文件
const downloadUrl =
"http://localhost:8000/" + encodeURIComponent("https://example.com/file.zip");
window.open(downloadUrl);filetas/
├── docker/
│ └── Dockerfile # Docker 构建文件
├── src/
│ └── main.rs # 主程序
├── templates/
│ └── index.html # Web 界面模板
├── Cargo.toml # 项目配置
├── Cargo.lock # 依赖锁定文件
└── docker-bake.hcl # Docker Bake 构建配置
# 克隆项目
git clone https://github.com/idev-sig/filetas.git
cd filetas
# 安装依赖并运行
cargo run
# 开启详细日志的开发模式
RUST_LOG=debug cargo run -- --verbose
# 运行测试
cargo test
# 代码格式化
cargo fmt
# 代码检查
cargo clippy- 使用 Rust 的零成本抽象和内存安全特性
- 基于 Tokio 异步运行时,支持高并发
- 流式传输大文件,减少内存占用
- 智能重定向处理,减少不必要的请求
- 结构化日志记录,便于性能分析
-
端口被占用
# 检查端口占用 lsof -i :8000 # 使用其他端口 filetas --port 8080
-
模板文件未找到
# 确保模板目录存在 ls -la templates/ # 或指定自定义模板目录 filetas --template-dir /path/to/templates
-
SSL/TLS 错误
# 确保安装了 OpenSSL 开发包 sudo apt install libssl-dev pkg-config
# 启用详细日志查看请求详情
RUST_LOG=debug filetas
# 只查看错误日志
RUST_LOG=error filetas
# 查看特定模块日志
RUST_LOG=filetas::proxy=debug filetas欢迎提交 Issue 和 Pull Request!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 创建 Pull Request
本项目采用 Apache-2.0 许可证 - 查看 LICENSE 文件了解详情。