PrivateBin 是一个极简的开源在线粘贴板,服务器对粘贴数据零知识。数据在浏览器端使用256位AES的伽罗瓦计数器模式(GCM)进行加密和解密。
本仓库包含创建Docker镜像所需的Dockerfile和资源,预安装了PrivateBin实例并采用安全默认配置。镜像基于Docker Hub的Alpine镜像构建,扩展了生成讨论头像所需的GD模块,以及用于提供静态JavaScript库、CSS、Logo和动态PHP渲染HTML的Nginx Unit应用服务器。Nginx Unit的所有日志(访问日志和错误日志)均转发至docker logs。
与https://github.com/PrivateBin/docker-nginx-fpm-alpine%E7%9B%B8%E6%AF%94%EF%BC%8C%E6%9C%AC%E9%95%9C%E5%83%8F%E4%BD%93%E7%A7%AF%E6%9B%B4%E5%B0%8F%EF%BC%8C%E4%BD%86%E7%BC%BA%E5%B0%91%E4%BB%A5%E4%B8%8B%E5%8A%9F%E8%83%BD%EF%BC%9A
你可以使用前端Web服务器解决这些限制,或使用其他提供完整Nginx Web服务器的镜像,这些镜像开箱即支持上述功能。
这是一体化镜像(https://hub.docker.com/r/privatebin/unit-alpine / https://github.com/orgs/PrivateBin/packages/container/package/unit-alpine%EF%BC%89%EF%BC%8C%E5%8F%AF%E4%B8%8EPrivateBin%E6%94%AF%E6%8C%81%E7%9A%84%E4%BB%BB%E4%BD%95%E5%AD%98%E5%82%A8%E5%90%8E%E7%AB%AF%E9%85%8D%E5%90%88%E4%BD%BF%E7%94%A8%E2%80%94%E2%80%94%E5%9F%BA%E4%BA%8E%E6%96%87%E4%BB%B6%E7%9A%84%E5%AD%98%E5%82%A8%E3%80%81%E6%95%B0%E6%8D%AE%E5%BA%93%E3%80%81Google Cloud或S3存储。我们还提供针对各后端的专用镜像:
所有镜像均包含PrivateBin的发布版本,并提供以下标签:
latest:最新推送镜像的别名,通常与nightly相同,但不包含edgenightly:基于升级后的Alpine版本,包含最新PrivateBin版本及Docker镜像仓库的最新变更edge:基于升级后的Alpine edge版本,包含最新PrivateBin版本stable:包含最新PrivateBin版本及https://github.com/PrivateBin/docker-unit-alpine%E7%9A%84%E6%9C%80%E6%96%B0%E6%A0%87%E8%AE%B0%E5%8F%91%E5%B8%83%E7%89%88%E2%80%94%E2%80%94%E5%BD%93Alpine%E6%9C%89%E9%87%8D%E8%A6%81%E5%AE%89%E5%85%A8%E4%BF%AE%E5%A4%8D%E6%88%96Alpine%E6%96%B0%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%97%B6%E6%9B%B4%E6%96%B01.5.1:包含PrivateBin 1.5.1版本及https://github.com/PrivateBin/docker-unit-alpine%E7%9A%84%E6%9C%80%E6%96%B0%E6%A0%87%E8%AE%B0%E5%8F%91%E5%B8%83%E7%89%88%E2%80%94%E2%80%94%E5%BD%93Alpine%E6%9C%89%E9%87%8D%E8%A6%81%E5%AE%89%E5%85%A8%E4%BF%AE%E5%A4%8D%E6%88%96Alpine%E6%96%B0%E7%89%88%E6%9C%AC%E5%8F%91%E5%B8%83%E6%97%B6%E6%9B%B4%E6%96%B0%EF%BC%8C%E4%B8%8Estable%E7%9B%B8%E5%90%8C1.5.1-...:提供特定不可变镜像的选择若通过拉取自动更新镜像,建议使用stable、nightly或latest标签。若需控制和可重复性,或使用编排工具,数字标签可能更合适。edge标签提供Alpine未来版本软件的预览,作为检测镜像构建问题的预警系统。
镜像托管在Docker Hub和GitHub容器仓库:
假设已成功安装Docker并具备互联网访问,可从Docker Hub拉取并运行镜像:
console$ docker run -d --restart="always" --read-only -p 8080:8080 -v $PWD/privatebin-data:/srv/data privatebin/unit-alpine
参数详情:
-v $PWD/privatebin-data:/srv/data:将$PWD/privatebin-data替换为系统中用于持久化粘贴数据和其他服务数据的文件夹路径。确保重启或替换镜像后粘贴数据不丢失。若仅测试镜像或使用数据库/Google Cloud Storage后端,可省略。-p 8080:8080:容器内Nginx Unit监听8080端口,此参数将其暴露到系统的8080端口。生产环境中,建议在前端使用反向代理进行HTTPS终止。--read-only:本镜像支持只读模式运行。减少***面,防止镜像服务中的漏洞覆盖容器内任意文件。仅/tmp、/var/tmp、/var/run和/srv/data可写入。-d:后台启动容器。可使用docker ps和docker logs检查容器状态。--restart="always":容器崩溃时自动重启,主要用于生产环境。注意:挂载的卷必须由UID 65534/GID 82拥有。若在启用"userns-remap"的Docker实例中运行容器,需将子UID/子GID范围添加到这些数字中。
如需使用自定义https://github.com/PrivateBin/PrivateBin/blob/master/cfg/conf.sample.php%E6%96%87%E4%BB%B6%EF%BC%88%E4%BE%8B%E5%A6%82%E5%90%AF%E7%94%A8%E6%96%87%E4%BB%B6%E4%B8%8A%E4%BC%A0%E6%88%96%E4%BD%BF%E7%94%A8%E4%B8%8D%E5%90%8C%E6%A8%A1%E6%9D%BF%EF%BC%89%EF%BC%8C%E5%8F%AF%E6%B7%BB%E5%8A%A0%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%8D%B7%EF%BC%9A
console$ docker run -d --restart="always" --read-only -p 8080:8080 -v $PWD/conf.php:/srv/cfg/conf.php:ro -v $PWD/privatebin-data:/srv/data privatebin/unit-alpine
注意:文件系统存储后端开箱即支持。镜像包含MySQL和PostgreSQL的PDO模块,支持数据库后端,但在1.4.0版本前,使用数据库后端时仍需持久化/srv/data以保存服务器salt和流量限制器数据。
环境变量
以下变量传递给PHP应用以支持多种场景,允许通过环境修改设置而非配置文件。大多数与存储后端相关:
S3后端使用的Amazon Web Services变量
AWS_ACCESS_KEY_IDAWS_CONTAINER_AUTHORIZATION_TOKENAWS_CONTAINER_CREDENTIALS_FULL_URIAWS_CONTAINER_CREDENTIALS_RELATIVE_URIAWS_DEFAULT_REGIONAWS_PROFILEAWS_ROLE_ARNAWS_ROLE_SESSION_NAMEAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKENAWS_STS_REGIONAL_ENDPOINTSAWS_WEB_IDENTITY_TOKEN_FILEAWS_SHARED_CREDENTIALS_FILEGCS后端使用的Google Cloud变量
GCLOUD_PROJECTGOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_PROJECTPRIVATEBIN_GCS_BUCKET自定义后端设置
以下变量默认不使用,但可https://github.com/PrivateBin/docker-nginx-fpm-alpine/issues/196#issuecomment-2163331528%EF%BC%8C%E4%BB%A5%E9%81%BF%E5%85%8D%E6%95%8F%E6%84%9F%E4%BF%A1%E6%81%AF%E5%AD%98%E5%82%A8%E5%9C%A8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E4%B8%AD%EF%BC%9A
STORAGE_HOSTSTORAGE_LOGINSTORAGE_PASSWORDSTORAGE_CONTAINER配置文件夹
CONFIG_PATH时区设置
镜像支持以下两个环境变量调整时区,主要确保日志显示正确本地时间:
TZPHP_TZ注意:应用内部基于创建时的时区计算粘贴过期的UNIX时间戳。修改PHP_TZ将影响过期时间,时区增加会导致过期提前,减少则延迟。
可将自定义php.ini挂载到/etc/php/conf.d/文件夹。可通过Unix socket /run/control.unit.sock运行时动态修改Nginx Unit配置——若需持久化Unit配置更改,需将/var/lib/unit挂载为持久卷。例如,如需调整服务接受的文件上传最大大小(默认10 MiB)。
以下是Kubernetes部署示例:
yaml--- apiVersion: apps/v1 kind: Deployment metadata: name: privatebin-deployment labels: app: privatebin spec: replicas: 3 selector: matchLabels: app: privatebin template: metadata: labels: app: privatebin spec: securityContext: runAsUser: 65534 runAsGroup: 82 fsGroup: 82 containers: - name: privatebin image: privatebin/unit-alpine:stable ports: - containerPort: 8080 env: - name: TZ value: Antarctica/South_Pole - name: PHP_TZ value: Antarctica/South_Pole securityContext: readOnlyRootFilesystem: true privileged: false allowPrivilegeEscalation: false livenessProbe: httpGet: path: / port: 8080 readinessProbe: httpGet: path: / port: 8080 volumeMounts: - mountPath: /srv/data name: privatebin-data readOnly: False - mountPath: /run name: run readOnly: False - mountPath: /tmp name: tmp readOnly: False volumes: - name: run emptyDir: medium: "Memory" - name: tmp emptyDir: medium: "Memory"
注意:privatebin-data卷需为跨节点共享的持久卷(如NFS共享)。PrivateBin 1.4.0及以上版本使用数据库或Google Cloud Storage时不再需要。
镜像包含两个管理脚本,用于在存储后端间迁移数据、按ID删除粘贴、删除空目录(仅文件系统存储)、清理过期粘贴及显示统计信息。可在运行中的镜像内执行,或使用与服务镜像相同的卷作为替代入口点运行命令(推荐前者)。
console# 假设使用--name privatebin命名容器 $ docker exec -t privatebin administration --help Usage: administration [--delete <paste id> | --empty-dirs | --help | --purge | --statistics] Options: -d, --delete deletes the requested paste ID -e, --empty-dirs removes empty directories (only if Filesystem storage is configured) -h, --help displays this help message -p, --purge purge all expired pastes -s, --statistics reads all stored pastes and comments and reports statistics docker exec -t privatebin migrate --help migrate - Copy data between PrivateBin backends Usage: migrate [--delete-after] [--delete-during] [-f] [-n] [-v] srcconfdir [<dstconfdir>] migrate [-h|--help] Options: --delete-after delete data from source after all pastes and comments have successfully been copied to the destination --delete-during delete data from source after the current paste and its comments have successfully been copied to the destination -f forcefully overwrite data which already exists at the destination -h, --help displays this help message -n dry run, do not copy data -v be verbose <srcconfdir> use storage backend configration from conf.php found in this directory as source <dstconfdir> optionally, use storage backend configration from conf.php found in this directory as destination; defaults to: /srv/bin/../cfg/conf.php
注意:如需在不同存储后端间迁移数据,需使用一体化镜像privatebin/unit-alpine,因其包含所有支持后端的驱动和库。使用变体镜像时,仅能在相同存储类型的后端间迁移(如两个文件系统路径或两个数据库后端)。
如需重现镜像,运行:
console$ docker build -t privatebin/unit-alpine .
Nginx Unit提供静态文件服务并缓存。对/var/www根目录下index.php的请求通过PHP SAPI模块处理。其他PHP文件和数据存储在/srv下。
Nginx配置仅支持HTTP,建议前端使用反向代理进行HTTPS卸载,减少TLS栈***面。本镜像中的Nginx配置支持文本内容的deflate/gzip压缩。
镜像构建过程中,从Github下载PrivateBin发布包。所有下载的Alpine包和PrivateBin包均通过加密签名验证,确保未被篡改后部署到镜像中。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务