如何搭建自己的文件传输服务?一条Docker命令部署transfer.sh完整教程
如何搭建自己的文件传输服务一条Docker命令部署transfer.sh完整教程【免费下载链接】transfer.shEasy and fast file sharing from the command-line.项目地址: https://gitcode.com/gh_mirrors/tr/transfer.shtransfer.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-Downloadscurl --upload-file ./hello.txt http://你的服务器IP:8080/hello.txt -H Max-Downloads: 1设置 1 天后自动删除Max-Dayscurl --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.godocker 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最大上传大小KBRATE_LIMIT每分钟请求数限制IP_WHITELIST/IP_BLACKLISTIP 黑白名单HTTP_AUTH_USER/HTTP_AUTH_PASS上传时强制 Basic 认证FORCE_HTTPSTLS_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),仅供参考

相关新闻

Handsontable 数据绑定实战指南:六大数据结构、数据装载 API 与空值语义全解析

Handsontable 数据绑定实战指南:六大数据结构、数据装载 API 与空值语义全解析

Handsontable 数据绑定实战指南:六大数据结构、数据装载 API 与空值语义全解析 【免费下载链接】handsontable JavaScript Data Grid / Data Table with a Spreadsheet Look & Feel. Works with React, Angular, and Vue. Supported by the Handsontable team ⚡…

2026/9/21 16:36:34 阅读更多 →
python-sdk 客户端开发指南:用 `Client` 与 MCP 服务器交互的完整实战

python-sdk 客户端开发指南:用 `Client` 与 MCP 服务器交互的完整实战

人工智能MCP 服务MCP Clients 【免费下载链接】python-sdk The official Python SDK for Model Context Protocol servers and clients 项目地址: https://gitcode.com/gh_mirrors/pythonsd/python-sdk 点击查看 免费下载 Client 是 python-sdk 提供给 Python 程序…

2026/9/21 16:36:34 阅读更多 →
react-native-vector-icons 的 FontAwesomeProSolid 图标包:自备字体、安装配置与源码实现全解析

react-native-vector-icons 的 FontAwesomeProSolid 图标包:自备字体、安装配置与源码实现全解析

react-native-vector-icons 的 FontAwesomeProSolid 图标包:自备字体、安装配置与源码实现全解析 【免费下载链接】react-native-vector-icons Customizable Icons for React Native with support for image source and full styling. 项目地址: https://gitcode.…

2026/9/21 16:36:34 阅读更多 →

最新新闻

AI前端面试核心:TypeScript+流式处理+SSE实战指南

AI前端面试核心:TypeScript+流式处理+SSE实战指南

1. 这不是鸡汤,是9月AI前端面试现场的真实切片“最后提醒一次,9月的AI前端面试不用太老实”——这句话不是标题党,是我上个月连续陪跑6场一线大厂和明星创业公司AI方向前端终面后,把录音逐字稿重听三遍、把面试官追问的27个问题归…

2026/9/21 17:42:23 阅读更多 →
深拷贝与浅拷贝全解析:从内存机制到工程实践避坑指南

深拷贝与浅拷贝全解析:从内存机制到工程实践避坑指南

别小看“深拷贝”和“浅拷贝”这六个字,我见过不少写了三五年业务的前端,一到对象复制就踩坑。有的是表单提交前改了数据,结果上一页的状态跟着变了;有的复制一份配置对象想改着玩,结果把全局配置给改了;还…

2026/9/21 17:42:23 阅读更多 →
从Vuex到Pinia:Vue状态管理的实战迁移、模块化拆分与持久化方案

从Vuex到Pinia:Vue状态管理的实战迁移、模块化拆分与持久化方案

如果有人问我:"Vue 项目里的状态管理,现在到底选 Vuex 还是 Pinia?"我的回答一向很干脆:新项目直接 Pinia,老项目也值得花时间迁过来。去年我把一个中型后台管理系统从 Vuex 整体迁到 Pinia,前后…

2026/9/21 17:42:23 阅读更多 →
PHP接入支付宝沙箱支付:从零到跑通全流程实战

PHP接入支付宝沙箱支付:从零到跑通全流程实战

咱们直接聊干货。这段时间正好帮一个朋友的项目把支付模块从“只在本地瞎点按钮”做到了“真正跑通支付宝沙箱全流程”,整个过程中踩了不少坑,也把支付宝开放平台的文档翻来覆去啃了几遍。这篇博文就把我当时从零开始接入支付宝沙箱支付的完整过程整理出…

2026/9/21 17:42:23 阅读更多 →
优之良衫选型指南:5个维度拆解最佳实践

优之良衫选型指南:5个维度拆解最佳实践

优之良衫选型指南:5个维度拆解最佳实践 凌晨两点,线上服务挂了,你盯着控制台里那一片红色的 StackTrace ,满屏的 NullPointerException 和 IndexOutOfBoundsException…

2026/9/21 17:42:23 阅读更多 →
SpringBoot启动流程深度解析与性能优化实践

SpringBoot启动流程深度解析与性能优化实践

1. SpringBoot启动过程全景透视当我们在IDE中点击运行那个标注了SpringBootApplication的main()方法时,背后究竟发生了什么?这个看似简单的启动动作,实际上触发了一个精密的连锁反应机制。作为Java生态中最主流的应用框架,SpringB…

2026/9/21 17:41:22 阅读更多 →

日新闻

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程

agents-generator 决策矩阵全解析:从项目检测到 AGENTS.md 规则生成的 16 步判定流程 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and …

2026/9/21 0:00:01 阅读更多 →
gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析

gin-vue-admin 前端工具函数全景指南:src/utils 复用规范与源码级解析 【免费下载链接】gin-vue-admin 🚀ViteVue3Gin拥有AI辅助的基础开发平台,企业级业务AI开发解决方案,内置mcp辅助服务,内置skills管理,…

2026/9/21 0:00:01 阅读更多 →
Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

Wox 全功能插件开发实战指南:基于 Python / Node.js 宿主与 WebSocket 的持久化插件体系

桌面应用AI 应用插件系统 【免费下载链接】Wox A cross-platform launcher that simply works 项目地址: https://gitcode.com/gh_mirrors/wo/Wox 点击查看 免费下载 全功能插件(Full-featured Plugin)是 Wox 三类插件实现方式中能力最完整的…

2026/9/21 0:00:01 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/21 3:13:20 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/21 2:19:36 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/21 4:51:05 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/19 23:35:34 阅读更多 →