shotsync

2个月前发布 65 00

shotsync 是一个轻量级、自托管的跨设备内容同步工具。它利用 Cloudflare Workers 和 R2 存储桶构建,为用户提供了一个私有的“中转池”,用于快速传输截图、图片和短文本片段。

所在地:
中国
收录时间:
2026-08-21
其他站点:
shotsyncshotsync

shotsync 是一个轻量级、自托管的跨设备内容同步工具。它利用 Cloudflare Workers 和 R2 存储桶构建,为用户提供了一个私有的“中转池”,用于快速传输截图、图片和短文本片段。不同于 iCloud 或 AirDrop 的生态锁定,也不同于公开图床的隐私风险,shotsync 确保数据仅在你的设备和你的 Cloudflare 账户之间流转,且完全免费(在 Cloudflare 免费额度内)。

shotsync

核心特性

  • 🔒 极致隐私与安全:
    • 数据自有:所有数据存储在用户自己的 Cloudflare R2 桶中,不经过任何第三方图床。
    • Token 门禁:采用单一共享密钥(AUTH_TOKEN)进行鉴权,支持 constant-time 比较,防止时序攻击。Token 仅保存在本地 localStorage,永不出现在 URL 中。
    • 签名分享:为单个条目生成带 HMAC-SHA256 签名的临时公开链接(默认 7 天过期),分享时不暴露池中其他内容。
  • ⚡ 极速部署与零成本:
    • 完全运行在 Cloudflare 免费档(Workers + R2),无需服务器维护。
    • 约 5 分钟即可完成从克隆代码到部署的全过程。
  • 📱 PWA 体验,无需安装 App:
    • 手机端通过浏览器“添加到主屏幕”即可作为 PWA 使用,拥有类原生 App 的全屏体验。
    • 支持 iOS 快捷指令和 Mac 菜单栏助手,实现截图自动上传或从分享菜单直接推送。
  • 🖼️ 高效的客户端处理:
    • HEIC 转 JPEG:在浏览器端完成格式转换,节省流量并提高兼容性。
    • 缩略图生成:客户端生成缩略图,Worker 仅负责存储原始字节,降低服务端负载。
  • 🗑️ 自动清理的中转池:
    • 设计初衷为“中转”而非“归档”。通过 R2 生命周期规则,物品在 30 天后自动删除,保持池子清爽。

快速部署指南

1. 前置准备

  • 一个 Cloudflare 账户(需绑定支付方式以启用 R2,但免费额度内不扣费)。
  • Node.js 18+ 环境。

2. 部署步骤

# 克隆项目
git clone https://github.com/Defiabell/shotsync
cd shotsync

# 安装依赖
npm install

# 登录 Wrangler
npx wrangler login

# 创建 R2 存储桶(名字需与 wrangler.toml 一致)
npx wrangler r2 bucket create shotsync

# 生成并设置共享访问 Token
openssl rand -hex 24  # 生成一个随机串,复制下来
npx wrangler secret put AUTH_TOKEN # 粘贴刚才生成的 Token

# 部署到 Cloudflare
npm run deploy

3. 配置自动清理

在 Cloudflare 控制台进入 R2 桶 shotsync -> Settings -> Object lifecycle rules,添加规则:对象创建 30 天后删除。

使用场景

  1. 跨设备截图传输:在手机截图,几秒后在电脑浏览器中下载;或在电脑截图,手机上直接保存。
  2. 临时剪贴板同步:输入一段文字或代码片段,在其他设备上快速复制。
  3. 安全分享单张图片:生成有时效性的签名链接分享给他人,无需担心隐私泄露。

安全模型说明

  • 单一 Token 机制:shotsync 适用于个人或可信小圈子。任何持有“地址 + Token”的人均可查看、上传或删除内容。如需轮换 Token,请使用 npx wrangler secret put AUTH_TOKEN,注意这将使所有现存的分享链接失效。
  • 非多租户设计:请勿将其作为公共服务平台开放给陌生人使用。

相关导航