阅后即焚 私有化部署

240次阅读
没有评论

共计 3399 个字符,预计需要花费 9 分钟才能阅读完成。

更新记录

2023-10-10

PasteMe 经过一段实践使用后,发现存在一些不满意的地方:

  • 无法自定义设置过期时间和次数
  • 页面风格不够简洁,加上了一言和阿里云图标等乱七八糟的东西
  • 已经停止维护,持续两年多没有更新

从github上找到了另一个项目歪果仁的项目:cryptgeon​,用于替代 PasteMe。

cryptgeon

部署

参考链接如下:

github cryptgeon docker-compose

github cryptgeon nginx-tls

和 PasteMe 一样,通过docker-compose + nginx tls 。

需要注意的是,必须开启 tls ,服务才会正常工作。

测试

演示站点:burn.bwbit.com/

创建密信

阅后即焚 私有化部署

生成分享链接

阅后即焚 私有化部署

访问链接

阅后即焚 私有化部署

测试是否失效

阅后即焚 私有化部署

PasteME

背景

平常经常会传输密码,aksk 等敏感信息交给业务方。但是IM工具、邮件等有天然劣势,会存档所有的记录,这样如果发生安全问题,会导致信息泄露。

而我需要的场景是阅读一次后,信息即刻被销毁,杜绝后续泄露的的可能。

一番查阅下来,发现了 PasteMe​ 这个工具,在 github 上同类工具 stars 排名第一。

虽然官网提供的服务可以直接使用 PasteME 官方体验站点,但是数据不在自己手上,不令人完全放心。所以自己私有化进行部署。

实施

github地址:GitHub PasteME

官方部署文档:PasteMe 官网文档

采用 docker 方式部署。

部署

  1. 下载 docker-cpmpose yaml
    mkdir /usr/local/pasteme && cd /usr/local/pasteme
    wget https://cdn.jsdelivr.net/gh/LucienShui/PasteMe@main/docker-compose.yml
    
  2. 查看内容
    # 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"
    
  3. 按需修改对应配置:例如 80 端口被占用可改为其他端口,MySQL 账号密码等
  4. 启动服务
    docker-compose up -d
    
  5. 查看对应容器状态
    # 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 数量排名第一,但是也不能代表它的代码是完全安全可靠的,有能力的同学可以自行审计代码后再用于正式场景。

引用链接

正文完
 
pengyinwei
版权声明:本站原创文章,由 pengyinwei 2023-09-25发表,共计3399字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处:https://www.opshub.cn
评论(没有评论)