当前位置: 首页 > news >正文

开源一个自己写的代码分享工具 PasteShare,支持语法高亮+端到端加密,可自部署

前言

平时写代码经常需要把一段代码发给同事看,微信发过去格式全乱,QQ 也好不到哪去。Pastebin 国内又访问不了。

所以自己动手写了一个代码分享工具:PasteShare,支持语法高亮、端到端加密、二维码分享,可以部署到自己服务器上。

项目已开源,仓库名BigsurCalifornia/pasteshare,在 GitHub 上搜就能找到。

觉得有用的话给个 ⭐ Star 支持一下!


这个工具能干什么

简单说就是:粘贴代码 → 生成链接 → 发给别人看

核心功能:

  • 📝 粘贴代码或文本,自动生成唯一短链接
  • 🎨30+ 种编程语言语法高亮(JavaScript、Python、Java、Go、Rust...)
  • 🔒端到端加密:内容在浏览器里加密,服务器看不到明文
  • ⏰ 设置过期时间:1小时 / 1天 / 7天 / 30天 / 永不过期
  • 📱 生成二维码,手机扫一扫就能看
  • 📋 一键复制内容和分享链接
  • 👁 浏览量统计
  • 🐳 Docker 一键部署

技术栈

层级技术
前端React 18 + TypeScript + Vite + Tailwind CSS
后端Node.js + Express + TypeScript
数据库SQLite(better-sqlite3)
加密Web Crypto API(AES-256-GCM)

选 SQLite 是因为零配置、单文件数据库,部署的时候不需要额外装 MySQL 或 PostgreSQL,特别适合这种轻量工具。


怎么跑起来

本地开发

git clone https://github.com/BigsurCalifornia/pasteshare.git cd pasteshare npm install npm run dev

打开http://localhost:5173就能用了。

Docker 部署(推荐)

git clone https://github.com/BigsurCalifornia/pasteshare.git cd pasteshare docker compose up -d

访问http://你的服务器IP:3001就行,数据自动持久化。


加密是怎么实现的

这是我觉得比较有意思的部分。很多 Pastebin 类工具的"加密"其实是服务端加密,服务器能看到你的明文。

PasteShare 用的是真正的端到端加密

  1. 用户输入密码
  2. 浏览器用PBKDF2(10万次迭代)从密码派生出密钥
  3. AES-256-GCM在浏览器里加密内容
  4. 只有密文发送到服务器
  5. 查看时在浏览器里解密

服务器全程看不到明文,就算数据库被拖了,没有密码也解不开。

核心代码大概长这样:

// 加密 async function encrypt(plaintext: string, password: string): Promise<string> { const salt = crypto.getRandomValues(new Uint8Array(16)); const iv = crypto.getRandomValues(new Uint8Array(12)); const key = await deriveKey(password, salt); // PBKDF2 派生密钥 const encrypted = await crypto.subtle.encrypt( { name: 'AES-GCM', iv }, key, new TextEncoder().encode(plaintext) ); // 把 salt + iv + 密文打包成 base64 return arrayBufferToBase64(pack(salt, iv, encrypted)); }

用的是浏览器原生的 Web Crypto API,不依赖任何第三方加密库。


API 接口

如果你想用脚本批量创建分享,可以直接调 API:

# 创建一个分享 curl -X POST http://localhost:3001/api/pastes \ -H "Content-Type: application/json" \ -d '{"title":"测试","content":"print(hello)","language":"python","expiresIn":"7d"}' # 返回 # {"id":"abc123","url":"/p/abc123","expiresAt":"2026-05-07T00:00:00.000Z"}

也可以集成到你的 CI/CD 里,比如构建失败时自动把日志发到 PasteShare 生成链接。


项目结构

pasteshare/ ├── client/ # React 前端 │ ├── src/ │ │ ├── components/ # UI 组件 │ │ ├── pages/ # 页面 │ │ ├── api.ts # API 调用 │ │ ├── crypto.ts # 加密/解密 │ │ └── languages.ts # 语言配置 ├── server/ # Express 后端 │ └── src/ │ ├── routes/paste.ts # API 路由 │ ├── db.ts # 数据库 │ └── index.ts # 入口 ├── Dockerfile # Docker 构建 ├── docker-compose.yml # 一键部署 └── README.md

前后端分离,monorepo 结构,用 npm workspaces 管理。


和同类工具对比

功能PasteSharePastebin.comPrivateBinUbuntu Pastebin
语法高亮✅ 30+语言
端到端加密
可自部署
二维码
国内访问✅ 自己部署❌ 很慢
技术栈Node.jsPHPPHPPython
数据库SQLiteMySQL文件PostgreSQL

后续计划

  • [ ] 支持 Markdown 渲染预览
  • [ ] 支持文件上传(图片、文档)
  • [ ] 用户系统(管理自己的分享)
  • [ ] 自定义短链接
  • [ ] 暗色/亮色主题切换

最后

项目完全开源,MIT 协议,随便用。

如果觉得有用,欢迎:

  • ⭐ 给个 Star:https://github.com/BigsurCalifornia/pasteshare
  • 🐛 提 Issue 反馈 bug
  • 🔧 提 PR 贡献代码

有问题评论区聊!

http://www.jsqmd.com/news/730303/

相关文章:

  • Keil uVision:用__weak关键字修饰函数
  • 终极指南:如何用QtScrcpy在电脑上流畅操控安卓手机
  • 3分钟解决NVIDIA显卡色彩难题:novideo_srgb让显示器色彩回归真实
  • 欧美诗化妆品价格怎么样?广州欧琪诗费用高吗 - mypinpai
  • 别再死记硬背了!从仿真波形反推Verilog同步FIFO的设计细节与调试技巧
  • AMD Ryzen处理器深度调试与性能调优终极指南:SMUDebugTool完整使用教程
  • Sands流处理框架实战:轻量级高性能数据流引擎设计与应用
  • 26C1 基于Ubuntu安装ROS-Noetic
  • 掩码扩散语言模型:并行解码与生成式AI新突破
  • BACnet Loop 对象:空调自动恒温的“隐形大脑”
  • BetterGI原神自动化工具:5分钟掌握80%日常任务解放方案
  • 【Dify集成效能跃迁报告】:实测对比——接入后流程交付周期缩短68%,运维成本下降41%,附Gartner级评估矩阵
  • Dify文档解析精度突降预警:2026.3版本默认启用Strict Mode,未适配的PDF Schema将触发硬性拒绝——附兼容性迁移速查表
  • 探寻口碑佳的地坪研磨机,品质与信赖的选择
  • Vue3 Proxy性能优化实战
  • 告别数据抖动!STM32CubeIDE配置ADC的完整指南:从单通道到多通道DMA扫描
  • 2026 AI员工推荐榜TOP5 全链路经营自动化工具深度测评
  • 技术突破:Windows原生APK安装器的架构设计与实现原理
  • NoSQL和HBase
  • 分块加载卡顿、内存泄漏频发,R 4.5新API中data.table::fread+arrow::open_dataset混合分块方案全解析
  • GHelper技术深度解析:华硕笔记本硬件控制开源工具的核心架构与优化策略
  • 小户型客厅小,窗帘怎么选不显拥挤、显空间大?
  • 如何用LibreVNA构建你的专业射频实验室:开源矢量网络分析仪终极指南
  • 别再被`Encountered unexpected token`搞懵了!一个MyBatis XML文件里的`database()`函数引发的jsqlparser解析血案
  • 2026年主流排插/插座品牌深度解析:从国民优选到国际标杆 - 品牌排行榜
  • PHP Swoole对接大模型长连接的7个致命陷阱:90%团队在第3步就崩溃了!
  • GKMLT通讯工具箱(WPF MVVM) - 05-WebAPI通讯
  • 告别报告堆砌:超自动化巡检的智能分析与洞察
  • 运维入门指南:从基础到实战
  • 【限时开源】PHP 9.0 AI Bot Starter Kit正式发布:内置JWT鉴权、对话上下文管理、Token自动节流——仅开放前2000名下载