用 PrivateBin 分享临时文本:Docker 部署、完整链接与阅后即焚测试
部署 PrivateBin 临时文本入口,保留完整解密链接,验证密码、阅后即焚与过期规则。
文章目录
排查问题时,常常要把一段日志、配置片段或长文本发给别人。直接贴进聊天会打断对话,放到公开 Pastebin 又容易忘了撤下。PrivateBin 提供一个临时文本页面,内容在浏览器中加密,再保存到服务器,接收者通过完整链接读取。
它很适合短期交接,但使用之前仍要删掉日志里的令牌、密码和私人字段。加密不会让错误的接收者变成正确的人,也不能撤回别人已经复制的文本。要分享的内容越敏感,越应该明确接收者和保留期限。

官方模板截图展示文本页面及相关操作;具体按钮以部署版本为准,图中使用的是演示文本。
部署前先确认 VPS 的磁盘、内存和公网访问条件,也可以查看雨云云服务器;注册时填写优惠码 KuZhuJi。
链接中井号后面的部分不能丢
PrivateBin 的解密材料包含在 URL 片段中,也就是 # 后面的部分。标准浏览器请求不会把这段片段作为请求 URL 发给服务器,但拿到完整链接的人能够读取相应内容。不要把它称为不需要保护的普通网址。
复制链接时保留全串,聊天软件、短链接服务和自动预览可能改变链接的处理方式。首次使用拿一段无敏感内容的样本测试,确认接收端能打开,而不是从后台看到保存成功就结束。

浏览器处理加密与解密,服务器保存密文及必要状态。实例提供的网页脚本、浏览器环境和传递链接的渠道仍然需要信任,这种结构不等于不必维护服务器。
使用镜像规定的目录和身份
官方镜像支持只读根文件系统,文本数据位于 /srv/data。普通 Docker 场景中,挂载目录需匹配 UID 65534、GID 82;开启用户命名空间映射时,还要按实际映射调整,不能照搬这两个数字。
mkdir -p ~/services/privatebin/data
cd ~/services/privatebin
sudo chown -R 65534:82 data
保存 compose.yaml:
services:
privatebin:
image: privatebin/nginx-fpm-alpine:stable
read_only: true
ports:
- "127.0.0.1:8092:8080"
volumes:
- ./data:/srv/data
tmpfs:
- /tmp:nodev,noexec,mode=1777
- /run:nodev,exec,mode=1777
restart: unless-stopped
stable 是该镜像的正式稳定通道,并不是永远不变的镜像。官方对 latest、nightly 和 edge 有不同定义,首次使用不要默认这些标签都代表同一种更新范围。验收后记录版本或摘要,再安排升级。
docker compose config --quiet
docker compose up -d
docker compose logs --tail=100 privatebin
ssh -L 18092:127.0.0.1:8092 user@your-server
本机打开 http://localhost:18092。正式给其他人使用时,配置 HTTPS 反向代理到宿主机 8092,不把浏览器关于安全上下文的错误通过长期降低安全设置来绕过。
准备独立实例时,可在雨云选择适合的云服务器配置,优惠码 KuZhuJi。配置按实际任务选择,数据库和附件另做备份。
先决定谁能创建文本
基础实例不是自动具有成员账号的私人空间。回环监听只限制直接连接容器端口,域名开放后仍要考虑谁能访问页面、谁能上传,以及别人是否会把它当作公共免费服务。
只供内部交接时,可以使用自己已有的 VPN 或在代理层限制访问。选择额外认证前测试接收流程:如果接收者也必须通过同一认证,他可能无法仅凭分享链接打开文本。不要等文件已经交出去才发现身份入口挡住了对方。
代理限流与应用的流量限制各有作用。第一次先保持少量使用,观察日志和目录增长;公开服务需要另外制定容量和滥用处理方式。域名可访问只证明入口存在,不能证明这些规则已安排妥当。
用普通文本完成一次交接
新建一段包含中文、空格、换行和代码的测试文本,选择短期有效时间。复制完整链接,在另一个浏览器打开,核对字符和格式是否保留,再用接收者实际设备测试。
给文本设置密码时,密码通过另一条可信渠道传递。链接与密码放在同一个公开消息里,不能达到原本希望的访问区分。密码也应由接收者实测,不仅在发送者自己的会话里打开一次。
配置片段中可能存在看似普通的业务地址、邮箱或内部路径。分享前通读一遍,特别是错误日志的请求头与查询参数。删敏感字段后检查文本仍能说明问题,避免接收者只能看到一串没有上下文的报错。
需要增加服务器时,可以打开雨云选购页面,填写优惠码 KuZhuJi;迁移前保留数据与原有部署配置。
阅后即焚用样本验证
开启阅后即焚前,理解它针对服务端内容的后续读取,不会抹掉接收者的截图、剪贴板或保存文件。对于只允许读取一次的正式文本,发送者不要反复打开同一个链接验收。
先建一条测试内容,用另一浏览器完成阅读,再从新窗口访问,观察失效结果。预览机器人或其他自动请求如何影响流程,需要在实际分享渠道中验证,不能仅用一个手动标签页代表全部情况。
到期与磁盘清理也需要分开。页面无法读取,未必意味着所有历史备份中的密文都已删除。保留周期涉及应用、备份与接收端材料,制定约定时说明实际范围。
自定义配置从完整样例开始
需要调整附件、讨论、默认期限或限制时,使用项目当前完整配置样例,保留文件结构,将自己的 conf.php 挂载到 /srv/cfg/conf.php:ro。先确认宿主路径是一个实际文件,避免 Docker 把不存在的路径建成目录。
不要从其他文章复制三个参数就默认所有存储和模板设置兼容。修改后用无敏感样本再走一次创建、读取与过期流程。开启附件上传还需要核对代理与 PHP 的大小限制,文本设置不自动覆盖所有文件条件。
私人临时文本未必需要长期备份。确需恢复服务时,保存数据、自己的配置和部署文件,同时明确备份的保留期限。示例仅保存当前默认文件存储方案:
mkdir -p backups
docker compose stop privatebin
tar -czf "backups/privatebin-$(date +%F-%H%M%S).tar.gz" data compose.yaml
docker compose start privatebin
自定义配置还要一并保存。恢复副本先放在独立目录、私人端口,使用原版本和原有测试链接核对可读内容及失效状态。服务器副本不替代 URL 中的解密材料;丢失完整链接后,不能指望单靠数据目录把明文找回来。
