news 2026/9/21 16:37:30

如何搭建自己的文件传输服务?一条Docker命令部署transfer.sh完整教程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何搭建自己的文件传输服务?一条Docker命令部署transfer.sh完整教程

如何搭建自己的文件传输服务?一条Docker命令部署transfer.sh完整教程

【免费下载链接】transfer.shEasy and fast file sharing from the command-line.项目地址: https://gitcode.com/gh_mirrors/tr/transfer.sh

transfer.sh 是一款用 Go 语言编写的轻量级文件传输服务,让你在自己的服务器上实现"命令行传文件":curl一行命令上传,立刻拿到分享链接,无需注册账号、无需数据库。本教程将带你用一条 Docker 命令完成 transfer.sh 的自托管部署,几分钟内拥有私有化的文件分享站点。

transfer.sh 是什么?为什么值得自建?

公共的临时文件分享网站虽然好用,但文件存在别人服务器上,既不可控也不安全。transfer.sh 的设计初衷就是让你自己掌控传输服务

  • 极速上手:纯命令行操作,一条curl即可上传
  • 📦四种存储后端:本地文件系统(local)、Amazon S3、Google Drive、Storj,代码见 server/storage/
  • 🔒服务端加密:支持 AES256 密码加密,文件下载时自动解密
  • 灵活控制:可限制下载次数、设置自动过期天数
  • 🛡️安全特性:IP 黑白名单、上传认证、限流,实现参考 server/ip_filter.go 与 server/server.go
  • 🐳官方 Docker 镜像:一键部署,源码入口见 main.go 与 cmd/cmd.go

一条Docker命令部署transfer.sh

部署只需要一台安装了 Docker 的 Linux 服务器。官方镜像内置了默认监听端口8080(可在 Dockerfile 中确认),执行以下命令即可启动:

docker run --publish 8080:8080 dutchcoders/transfer.sh:latest --provider local --basedir /tmp/

命令参数说明:

参数含义
--publish 8080:8080把容器 8080 端口映射到宿主机
--provider local使用本地文件系统作为存储后端
--basedir /tmp/文件实际存放的目录

💡推荐:官方提供了-noroot标签的镜像(以 UID/GID 5000 的普通用户运行),可缩小攻击面,生产环境建议使用:

docker run --publish 8080:8080 dutchcoders/transfer.sh:latest-noroot --provider local --basedir /tmp/

镜像标签(tag)速查:

标签说明
vX.Y.Z正式版本构建,生产环境首选
nightly每天午夜定时构建
edgemain 分支每次提交后构建
latest最新 CI 构建(可能包含未发布内容,不建议用于 WatchTower 等自动更新工具)

三步验证你的文件传输服务

第 1 步:上传文件

在任意能访问服务器的机器上执行(把地址换成你的服务器 IP 或域名):

curl -v --upload-file ./hello.txt http://你的服务器IP:8080/hello.txt

第 2 步:获取下载链接

命令成功后,终端会输出一个形如下面的链接:

http://你的服务器IP:8080/AbC123/hello.txt

任何人拿到这个链接都可以下载文件,这就是你的文件分享链接。

第 3 步:删除文件

上传响应头里有一个X-Url-Delete字段,里面是带删除令牌的专用 URL。用DELETE请求即可删除文件:

curl -X DELETE http://你的服务器IP:8080/hello.txt/AbC123/hello.txt/PDw0NHPcqU

实用配置:过期时间、下载次数与服务端加密

transfer.sh 支持通过 HTTP 请求头精细控制每个文件的"生命周期":

限制下载次数Max-Downloads):

curl --upload-file ./hello.txt http://你的服务器IP:8080/hello.txt -H "Max-Downloads: 1"

设置 1 天后自动删除Max-Days):

curl --upload-file ./hello.txt http://你的服务器IP:8080/hello.txt -H "Max-Days: 1"

服务端加密X-Encrypt-Password)——只在自己的服务器上才值得用这个功能:

curl --upload-file ./hello.txt http://你的服务器IP:8080/hello.txt -H "X-Encrypt-Password: mysecret"

下载时带上X-Decrypt-Password: mysecret请求头,服务端会自动解密后返回明文。完整用法示例可参考 examples.md。

进阶部署:持久化存储与 S3 后端

让文件重启后不丢失

上面示例中--basedir /tmp/里的文件会随容器删除而丢失。生产环境建议挂载数据卷,并配置自动清理策略:

docker run -d --name transfersh \ -p 8080:8080 \ -v /data/transfersh:/files \ dutchcoders/transfer.sh:latest-noroot \ --provider local --basedir /files \ --purge-days 3 --purge-interval 6
  • --purge-days 3:文件保存 3 天后自动清除(对应PURGE_DAYS环境变量)
  • --purge-interval 6:每 6 小时执行一次清理

接入 S3 兼容存储

如果文件量较大,可以把存储后端换成 S3(也兼容 MinIO 等自建对象存储),实现代码见 server/storage/s3.go:

docker run --publish 8080:8080 dutchcoders/transfer.sh:latest-noroot \ --provider s3 \ --aws-access-key YOUR_KEY --aws-secret-key YOUR_SECRET \ --bucket my-bucket --s3-region us-east-1

使用 MinIO 时额外加上--s3-path-style参数。此外还支持 Google Drive 与 Storj 后端,参数说明全部在 README.md 的参数表中。

关键配置项速查

参数(环境变量)作用
PURGE_DAYS文件自动清除的天数
MAX_UPLOAD_SIZE最大上传大小(KB)
RATE_LIMIT每分钟请求数限制
IP_WHITELIST/IP_BLACKLISTIP 黑白名单
HTTP_AUTH_USER/HTTP_AUTH_PASS上传时强制 Basic 认证
FORCE_HTTPS+TLS_CERT_FILE强制 HTTPS(建议反代或配置证书)

完整参数列表见 README.md。

用 shell 别名加速日常传输

把下面这行加入~/.bashrc,以后传输文件只需要transfer 文件名

transfer() { curl --progress-bar --upload-file "$1" http://你的服务器IP:8080/$(basename "$1"); echo; }

更多花样玩法(批量打包上传、加密备份数据库、邮件发送链接等)都整理在 examples.md 中;如果想把 transfer.sh 作为系统服务常驻运行,仓库还附带了 init 脚本模板 extras/transfersh。

常见问题排查

问:浏览器打不开http://服务器IP:8080先确认防火墙/安全组放行了 8080 端口;容器内用docker logs查看服务是否报错。

问:容器重启后文件没了?说明没有挂载数据卷,请参照上面"持久化存储"一节加-v参数。

问:想要正式稳定版本?把镜像标签从latest换成具体的版本号,如dutchcoders/transfer.sh:vX.Y.Z

至此,你已经拥有一套完全私有的文件传输服务:一条 Docker 命令部署、curl 一行命令上传、链接即分享。接下来可以按需开启加密与认证,把它变成团队内部的"私人网盘入口"。

【免费下载链接】transfer.shEasy and fast file sharing from the command-line.项目地址: https://gitcode.com/gh_mirrors/tr/transfer.sh

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/21 16:34:27

Django框架核心优势与开发实践指南

1. Django框架概述与核心优势Django作为Python生态中最成熟的Web框架之一,已经服务了从个人博客到Instagram等大型应用的开发。我第一次接触Django是在2013年一个电商项目里,当时就被它"开箱即用"的特性所震撼。这个框架最吸引我的地方在于它完…

作者头像 李华
网站建设 2026/9/21 16:33:20

【热力学】基于FEM的二维热传导与对流边界附Matlab代码和报告

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、算法改进、程序设计科研仿真。🍎 往期回顾关注个人主页:完整代码获取 定制创新 论文复现私信🍊个人信条:做科研&#xff0c…

作者头像 李华
网站建设 2026/9/21 16:28:25

Vercel 部署错误指南:Invalid Region or DC Identifier 的成因与修复

CLI后端云原生 【免费下载链接】vercel Develop. Preview. Ship. 项目地址: https://gitcode.com/gh_mirrors/ve/vercel 点击查看 免费下载 本文围绕 Vercel 开源仓库(GitHub 加速计划 / ve / vercel)中的错误说明文档 errors/deploy-invali…

作者头像 李华