用 Gokapi 分享临时文件:Docker 部署、下载次数与过期检查

用 Gokapi 分享临时文件,核对下载次数、密码及过期行为,保存文件数据和配置以便恢复。

·8 min自托管
把应用部署到土耳其|BRNCHOST · 土耳其 VDS
云服务器,积分可续期|雨云 · 国内外节点 · 积分兑换权益
低价年付,大流量 VPS|RackNerd · SSD 存储 · 1Gbps 端口
香港轻量,搭个小站|晚安云 · 香港云服务器
香港 VPS,大带宽可选|野草云 · BGP 直连
大陆访问,精品线路|搬瓦工 · CN2 GIA / CTGNet 套餐
资料归档,交给 AI 整理|WorkBuddy · 本地文件处理
建站起步,先看应用镜像|腾讯云 · 轻量应用服务器
CN2 GIA,中国方向优化|DMIT · Premium 网络
双 ISP 原生住宅 IP|丽萨主机 · 美国 9929 精品线路
高频 CPU,多地部署|Evoxt · 云服务器 · 每周异地备份
京东云轻量云主机:129元/年,新人专享,限购1台

给别人传一份文件,如果放进长期网盘,往往过了很久还留着分享入口。Gokapi 适合把这种短期交接做成独立服务:维护者上传文件,给接收者下载链接,按时间或下载次数安排有效范围。它不是长期资料库,重要原件仍应放在自己的正式存储里。

先确定链接要给谁、预计什么时候下载,以及交接完成后是否还需要保留。链接过期只能限制服务端后续访问,接收者已经下载的副本不会自动消失;涉及敏感资料时,不能把短期链接等同于资料已经被销毁。

云服务器,积分可续期|雨云 · 国内外节点 · 积分兑换权益

部署前先确认 VPS 的磁盘、内存和公网访问条件,也可以查看雨云云服务器;注册时填写优惠码 KuZhuJi。

上传入口与接收入口分开理解

管理端负责上传和生成链接,接收者打开的是下载页面。需要收集他人文件时,当前版本另有文件请求等功能,应单独核对权限和用途,不把管理账号交给对方来解决上传问题。

Gokapi 官方文件管理界面示例

项目提供的开发版界面示例可以看到文件管理及分享条件,正式发行的细节可能不同。图中的演示文件和状态不属于本次部署,自己的过期、密码和下载设置仍要实际验证。

默认先使用本地存储,不连接对象存储。这样可以把文件、配置和恢复范围说明清楚,等确实需要更大容量或其他存储方式时,再按官方说明迁移。

数据和配置各有持久目录

官方 Docker 示例持久挂载 /app/data 与 /app/config。前者保存相关文件数据,后者保存配置。只挂一处目录,不能默认足够恢复整套服务。

mkdir -p ~/services/gokapi/data ~/services/gokapi/config
cd ~/services/gokapi

保存 compose.yaml:

services:
  gokapi:
    image: f0rc3/gokapi:latest
    environment:
      TZ: Asia/Shanghai
    ports:
      - "127.0.0.1:53842:53842"
    volumes:
      - ./data:/app/data
      - ./config:/app/config
    restart: unless-stopped
docker compose config --quiet
docker compose up -d
docker compose logs --tail=100 gokapi

当前发行标签适合开始验证,正式使用前记录版本或摘要并固定。应用的认证、数据库或加密功能可能随版本变化,升级按对应发行说明处理,不从别人的旧截图猜当前配置。

私人初始化,正式分享再用域名

ssh -L 13842:127.0.0.1:53842 user@your-server

本机打开 http://localhost:13842/setup,完成配置向导。选择合适的认证方式,设置独立管理凭据,并确认本地文件存储位置。初始化之前不把未配置的后台开放到公网。

准备正式分享时,使用自己的域名和 HTTPS,代理到宿主机 53842。按向导及当前配置说明填写外部访问地址,检查生成的链接是否使用实际域名,而不是只在自己电脑能打开的 localhost。

管理员与接收者的访问方式分别验收。退出管理登录后,用匿名窗口打开一个测试下载链接,确认它提供预期文件,却不能进入管理端。管理员需要上传,接收者只需要拿文件,两者不共享账号。

临时文件分享、下载计数与过期关系示意

服务端链接负责后续访问,原件继续保留在自己的存储中。文件一旦下载到接收者设备,就进入另一处保存范围,过期规则不会追踪并删除那些副本。

准备独立实例时,可在雨云选择适合的云服务器配置,优惠码 KuZhuJi。配置按实际任务选择,数据库和附件另做备份。

第一个链接用无敏感内容的样本

上传一份普通文本或小图片,设置短一些的有效时间和少量下载次数。复制链接到另一个窗口,检查文件名、大小和下载内容,再用接收者实际使用的浏览器测试。

不要先用只有一次下载机会的正式文件测试所有设备。自己的预览、网络重试或其他自动访问可能影响实际流程,需要观察当前版本怎样计算下载,再选择适合的次数。保留原件,以便重新生成交接链接。

下载后用内容或哈希核对结果。中断的下载和成功接收是两回事,页面有请求记录不一定代表接收方已经拿到完整文件。重要交接由接收方确认,不能仅靠后台计数完成业务确认。

过期规则要真的走到失效一步

创建短期测试链接,记录创建时间、过期设置和下载次数。达到预设条件后,用新窗口再次访问,确认不能再按原链接取得文件。浏览器本地已缓存或下载的内容不是服务端重新授权,需要分别理解。

查看管理界面与磁盘占用,核对链接失效和物理清理的实际行为。不同存储和当前版本的清理机制可能影响空间释放,不把“到期”直接写成文件已经立即从所有位置删除。

如果业务要求保留证据或延迟清理,提前制定规则;如果不需要长期保存,定期检查遗留文件及有效链接。不要只生成分享入口,从不查看服务里还保存着什么。

云服务器,积分可续期|雨云 · 国内外节点 · 积分兑换权益

需要增加服务器时,可以打开雨云选购页面,填写优惠码 KuZhuJi;迁移前保留数据与原有部署配置。

密码与链接走不同通道

给某份分享设置密码时,尽量通过另一条可信渠道交给接收者,不把链接和密码同时发在一个公开位置。密码保护降低无意转发造成的直接访问,也不能阻止已经获准下载的人继续复制文件。

需要加密功能时,先阅读当前版本的迁移说明。官方安装说明明确提醒:更改已有的加密配置会删除已经加密的文件,不能把它当作无影响的开关。先保存需要保留的原文件和恢复材料,再按支持的流程配置,并做一次独立下载测试。服务器登录、HTTPS、下载密码与端到端加密用途不同,不将一个开关笼统称为“所有文件已安全”。保管对应恢复材料,确认接收者能按预期解密。

公开后台截图前检查文件名、链接、账号和 API 凭据。文件名本身也可能透露私人信息。需要 API 自动上传时,为相应用途建立并管理凭据,停止使用后撤销,不把管理员凭据写进脚本仓库。

大文件先检查代理与磁盘条件

上传大小、代理超时、磁盘剩余空间和出口带宽都会影响交接。先上传一个小样本,再增加到实际常用大小。上传还没进入应用便失败时,查看代理日志;应用处理或写入失败时,再看容器和目录权限。

不要为了一次大文件把所有限制都设为无限。服务器也承载网站时,观察文件传输是否占用了其他服务所需资源。流量套餐的成本和限制另行核对,软件的支持能力不等于服务器的传输配额。

对象存储是后续选项,启用后需要重新测试生成 URL、到期行为和恢复范围。只打包本地目录可能不再包含远端文件,迁移期间保留旧配置和原件,不删除尚未验证完整的新旧数据。

备份可能重新带回已经过期的文件

管理配置和需要保留的数据应有恢复路径,但备份副本本身也有保留周期。服务端清理过期文件,不会自动修改已经生成的备份。恢复旧副本后,检查有效链接和文件状态,避免无意重新开放旧交接。

mkdir -p backups
docker compose stop gokapi
tar -czf "backups/gokapi-$(date +%F-%H%M%S).tar.gz" data config compose.yaml
docker compose start gokapi

备份转移到外部受保护的存储。测试恢复使用独立目录和原镜像,核对管理员登录、一个有效测试链接和一个已过期链接,再验证下载内容。原件仍按长期存储方案保存,临时分享服务恢复正常,不等于所有资料都有了长期副本。