Skip to content

About

无需账号的跨网络临时剪贴板:配对传输文字与富文本,可选 AES-256-GCM 加密,支持 Vercel + Cloudflare 和 Docker 自托管。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

Repository files navigation

隔空剪贴板

无需账号,让两台联网电脑通过临时配对直接复制粘贴。

License: MIT No account Pair lifetime Deployments

功能特色 · 使用方法 · 部署选择 · 隐私说明 · 常见问题

创建或加入临时配对

隔空剪贴板适合在两台独立电脑之间临时传送文字、段落和富文本。两台设备打开同一个部署地址,输入相同的站点口令,再使用随机生成的 10 位配对码连接。连接完成后可以连续发送、复制和删除内容,无需为普通消息反复输入提取码。

适用场景

  • 办公电脑与个人电脑之间快速传送文本。
  • 不方便登录聊天软件或云盘时临时中转内容。
  • 跨网络复制带段落、列表或表格的资料。
  • 自己管理入口口令、保存时间和服务器位置。

本项目面向临时文本传输,不是长期笔记库、多人协作文档或文件存储服务。

核心特色

能力 说明
无需账号 使用者不用注册个人账号;部署者设置一个固定站点口令,由后端 API 校验读取和写入请求。
两机跨网 两台设备只要能访问同一个部署地址,就可以在不同网络中配对。
临时配对 一台设备生成 10 位随机配对码,另一台输入一次即可加入。
自动清理 配对创建 12 小时后自动失效,也可随时手动取消配对并删除房间内容。
随时删除 每条消息都可以单独删除,不需要等房间到期。
三种格式 可选择纯文字、结构化纯文字或富文本,按内容决定保留多少格式。
可选加密 敏感消息可在浏览器内使用 PBKDF2 + AES-256-GCM 加密后再发送。
使用限制明确 每个配对最多保留 30 条消息,每条最多 5 万字符。
双版本部署 同时支持 Vercel + Cloudflare 云端版,以及阿里云等 Linux 服务器自托管版。

4 步开始传送

  1. 验证访问:两台电脑访问同一个剪贴板网址,输入部署者设置的站点口令并由后端 API 验证。
  2. 创建配对:第一台电脑点击“创建新配对”,获得 10 位随机配对码。
  3. 加入配对:第二台电脑输入该配对码并加入,连接状态会保留在当前浏览器。
  4. 发送内容:选择传输模式,粘贴并发送;另一台电脑会自动刷新,也可以复制或删除收到的消息。

配对满 12 小时会自动失效。任意一台设备都可以点击“取消配对”并提交整个房间的删除请求。自托管版会立即把删除写入 SQLite;云端版由 Cloudflare KV 处理,跨地区副本可能在短时间内仍读到旧数据。

已配对后的传送工作区

三种传输模式

模式 保留内容 不保留内容 适合
纯文字 文字本身 段落结构、换行、制表符、连续空格和视觉样式 短句、命令、验证码等只关心内容的文本
结构化纯文字 段落、换行、连续空格、缩进和制表符 粗体、斜体、颜色、字号和对齐等视觉样式 代码片段、分段资料、需要保持空白结构的内容
富文本 标题、粗体、斜体、颜色、对齐、列表、链接和表格等常用格式 脚本、表单及其他危险内容会被过滤 从网页或文档复制并希望尽量保留排版的内容

富文本能否完整保留,还取决于来源应用提供的剪贴板数据,以及目标应用支持的粘贴格式。

加密与隐私边界

加密是每条消息的可选项。勾选“加密这条内容”后,浏览器使用 PBKDF2 从该消息的内容密码派生密钥,并使用 AES-256-GCM 加密。内容密码不会发送给后端,接收方需要输入相同密码才能解密。

未勾选加密时,消息会以原文存入所选后端:

  • 云端版存入 Cloudflare KV。
  • 自托管版存入服务器上的 SQLite。

因此,本项目不应被描述为“所有消息都端到端加密”。云端版的静态网页资源可以公开加载;站点口令由后端 API 校验,用于阻止未授权读取和写入。10 位配对码用于进入临时房间;单条内容密码只在用户主动开启加密时使用,三者用途不同。

建议对敏感消息开启单条加密,并在传送完成后提交消息删除或取消配对。自托管版对公网开放时应配置 HTTPS。

两种部署方案

云端版 自托管版
目录 cloud/ self-hosted/
组成 Vercel 静态前端 + Cloudflare Worker + KV Node.js 服务 + 静态前端 + SQLite
维护成本 无需维护 Linux 服务器 需要管理服务器、Docker、端口和 HTTPS
数据位置 Cloudflare KV 自己的服务器磁盘
国内访问 取决于当地网络环境 使用国内云服务器时通常更直接
并发写入 KV 最终一致性,极短时间同时发送可能覆盖更新 SQLite 事务处理并发写入
推荐场景 希望快速上线、少维护 希望国内直连并自行掌握数据

两个版本可以同时在线,使用彼此独立的地址、站点口令和数据存储,互不覆盖。两台设备必须进入同一个版本的网址,才能加入同一个配对房间。

快速部署

云端版

  1. 创建 Cloudflare KV namespace。
  2. 部署 Worker,并绑定 CLIPS、SITE_ACCESS_KEY 和 ALLOWED_ORIGINS。
  3. 在 cloud/frontend/config.js 填入自己的 Worker 地址。
  4. 将 cloud/frontend 部署到 Vercel。

查看云端版完整部署说明 →

阿里云或其他 Linux 服务器

cd self-hosted
cp .env.example .env
# 编辑 .env,设置至少 12 位的 SITE_ACCESS_KEY
docker compose up -d --build

查看自托管版说明 → · 查看阿里云 ECS 步骤 →

目录结构

private-clipboard/
├─ cloud/
│  ├─ frontend/           # 部署到 Vercel 的静态网页
│  ├─ cloudflare-worker/  # Worker 接口与 Wrangler 示例
│  ├─ tests/              # 云端 Worker 流程测试
│  └─ README.md           # 云端部署说明
├─ self-hosted/
│  ├─ public/             # 自托管网页
│  ├─ server/             # Node.js + SQLite 接口
│  ├─ tests/              # 自托管流程测试
│  ├─ compose.yaml        # Docker Compose 配置
│  ├─ Dockerfile
│  └─ DEPLOY_ALIYUN.md    # 阿里云部署说明
├─ docs/images/           # README 截图
└─ package.json           # 统一检查与测试命令

测试与限制

Node.js 22.5 或更高版本可在仓库根目录运行:

npm run verify

该命令会检查两套前后端 JavaScript 语法,并运行 Cloudflare Worker 与自托管服务器的配对流程测试。生产自托管 Docker 镜像使用 Node.js 24。

当前限制:

  • 每个配对最多保留 30 条消息;超出后清理较早的内容。
  • 每条消息最多 5 万字符。
  • 配对有效期从创建时计算,为 12 小时,暂不提供延期。
  • 当前产品用于文字和富文本,不提供通用文件传输。
  • Cloudflare KV 采用最终一致性,两台设备在极短时间内同时发送时可能覆盖其中一次更新;删除消息或取消配对后,变更传播到其他地区也可能短暂延迟。高并发或要求删除立即落库时建议使用自托管版。
  • 浏览器剪贴板和 Web Crypto 能力在 HTTPS 下最可靠;公网自托管部署应启用 HTTPS。

常见问题

使用者需要注册账号吗?

不需要。使用者只需知道部署地址和站点口令。部署云端版的人仍需拥有 Vercel 与 Cloudflare 账号;部署自托管版的人需要一台可用服务器。

只有网址的人能看到我的消息吗?

云端版静态网页可以公开加载,但这不会直接开放消息。后端 API 会校验站点口令,进入具体房间还需要 10 位配对码。站点口令是共享凭证,不是个人账号系统,因此不要把网址、站点口令和配对码同时公开。

所有内容都会自动加密吗?

不会。只有勾选“加密这条内容”的消息才会在浏览器端加密。普通消息会以原文存入 Cloudflare KV 或自托管 SQLite。

云端版和自托管版能互相同步吗?

不能。它们是两套独立部署,可以同时运行,但配对房间与消息互不相通。两台设备应打开同一个版本的网址。

取消配对后还能恢复吗?

不能通过本项目恢复。取消配对会请求删除整个房间及其中消息;单独删除一条消息也没有恢复功能。自托管版会立即把删除写入 SQLite;云端版的 Cloudflare KV 跨地区传播可能短暂延迟。请先复制需要保留的内容。

为什么富文本粘贴后少了某些样式?

来源应用可能没有把全部样式写入系统剪贴板,目标应用也可能不支持某些格式。项目还会主动过滤脚本、表单等危险内容,因此不能保证像素级还原。

License

MIT

About

无需账号的跨网络临时剪贴板:配对传输文字与富文本,可选 AES-256-GCM 加密,支持 Vercel + Cloudflare 和 Docker 自托管。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages