共计 3399 个字符,预计需要花费 9 分钟才能阅读完成。
更新记录
2023-10-10
PasteMe 经过一段实践使用后,发现存在一些不满意的地方:
- 无法自定义设置过期时间和次数
- 页面风格不够简洁,加上了一言和阿里云图标等乱七八糟的东西
- 已经停止维护,持续两年多没有更新
从github上找到了另一个项目歪果仁的项目:cryptgeon
,用于替代 PasteMe。
cryptgeon
部署
参考链接如下:
github cryptgeon docker-compose
和 PasteMe 一样,通过docker-compose + nginx tls 。
需要注意的是,必须开启 tls ,服务才会正常工作。
测试
演示站点:burn.bwbit.com/
创建密信
生成分享链接
访问链接
测试是否失效
PasteME
背景
平常经常会传输密码,aksk 等敏感信息交给业务方。但是IM工具、邮件等有天然劣势,会存档所有的记录,这样如果发生安全问题,会导致信息泄露。
而我需要的场景是阅读一次后,信息即刻被销毁,杜绝后续泄露的的可能。
一番查阅下来,发现了 PasteMe
这个工具,在 github 上同类工具 stars 排名第一。
虽然官网提供的服务可以直接使用 PasteME 官方体验站点,但是数据不在自己手上,不令人完全放心。所以自己私有化进行部署。
实施
github地址:GitHub PasteME
官方部署文档:PasteMe 官网文档
采用 docker 方式部署。
部署
- 下载 docker-cpmpose yaml
mkdir /usr/local/pasteme && cd /usr/local/pasteme wget https://cdn.jsdelivr.net/gh/LucienShui/PasteMe@main/docker-compose.yml
- 查看内容
# cat docker-compose.yml version: "3" services: pasteme-frontend: image: pasteme/frontend:3.4.2 container_name: pasteme-frontend depends_on: - pasteme-backend healthcheck: test: ["CMD", "curl", "-so", "/dev/null", "localhost:8080/usr/config.json"] interval: 45s timeout: 3s retries: 3 restart: always ports: - 80:8080 volumes: - ./data/nginx-logs/:/var/lib/pasteme/ - ./data/frontend-usr/:/www/pasteme/usr/ pasteme-backend: image: pasteme/go-backend:3.5.2 container_name: pasteme-backend depends_on: - pasteme-mysql healthcheck: test: ["CMD", "wget", "-O", "/dev/null", "localhost:8000/api/v3/?method=beat"] interval: 45s timeout: 3s retries: 3 restart: always volumes: - ./data/backend-config/:/etc/pastemed/ logging: driver: "json-file" options: max-file: "3" max-size: "128m" pasteme-mysql: image: mysql:5.5 container_name: pasteme-mysql healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"] interval: 45s timeout: 3s retries: 3 restart: always command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci' ] environment: MYSQL_USER: username MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: pasteme MYSQL_MAX_ALLOWED_PACKET: 128M MYSQL_INNODB_LOG_FILE_SIZE: 64M volumes: - ./data/mysql:/var/lib/mysql logging: driver: "json-file" options: max-file: "3" max-size: "128m"
- 按需修改对应配置:例如 80 端口被占用可改为其他端口,MySQL 账号密码等
- 启动服务
docker-compose up -d
- 查看对应容器状态
# docker ps |grep pasteme 9b693cded41a pasteme/frontend:3.4.2 "/docker-entrypoint.…" 44 minutes ago Up 44 minutes (healthy) 80/tcp, 0.0.0.0:8085->8080/tcp, :::8085->8080/tcp pasteme-frontend 6d89f3c49c79 pasteme/go-backend:3.5.2 "/usr/bin/env sh /us…" 44 minutes ago Up 44 minutes (healthy) 8000/tcp pasteme-backend b1dbefd35277 mysql:5.5 "docker-entrypoint.s…" 44 minutes ago Up 44 minutes (healthy) 3306/tcp
可以看到,部署完毕后,会启动三个容器。分别为前端、后端、数据库。
通过官方文档查阅代码也可以知道,数据会存于数据库中,默认策略会在分享链接点击一次,或者5分钟后删除数据库数据。
nginx 反代配置
自行修改 upstream
,域名
,证书
等配置。
upstream paste-local {
server 192.168.2.11:8085;
}
server {
listen 80;
server_name paste.bwbit.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name paste.bwbit.com;
ssl_certificate /root/.acme.sh/*.bwbit.com/fullchain.cer;
ssl_certificate_key /root/.acme.sh/*.bwbit.com/*.bwbit.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSV1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_redirect http:// https://;
proxy_pass http://paste-local;
}
}
测试
添加公网解析后,浏览器访问域名:paste.bwbit.com/,贴入需要分享的数据。
点击保存后会生成链接,复制即可
访问生成的链接
再次刷新网页,会发现已经被销毁
总结
此工具在 github 上 stars 数量排名第一,但是也不能代表它的代码是完全安全可靠的,有能力的同学可以自行审计代码后再用于正式场景。