PrivateBin 是一个极简的开源在线粘贴板,服务器对粘贴数据零知识。数据在浏览器端使用256位AES的伽罗瓦计数器模式(GCM)进行加密和解密。
本仓库包含创建Docker镜像所需的Dockerfile和资源,预安装了PrivateBin实例并采用安全默认配置。镜像基于Docker Hub的Alpine镜像构建,扩展了生成讨论头像所需的GD模块,以及用于提供静态JavaScript库、CSS、Logo和动态PHP渲染HTML的Nginx Unit应用服务器。Nginx Unit的所有日志(访问日志和错误日志)均转发至docker logs。
与Nginx Web服务器、php-fpm & Alpine镜像相比,本镜像体积更小,但缺少以下功能:
你可以使用前端Web服务器解决这些限制,或使用其他提供完整Nginx Web服务器的镜像,这些镜像开箱即支持上述功能。
这是一体化镜像(Docker Hub / GitHub),可与PrivateBin支持的任何存储后端配合使用——基于文件的存储、数据库、Google Cloud或S3存储。我们还提供针对各后端的专用镜像:
所有镜像均包含PrivateBin的发布版本,并提供以下标签:
latest:最新推送镜像的别名,通常与nightly相同,但不包含edgenightly:基于升级后的Alpine版本,包含最新PrivateBin版本及Docker镜像仓库的最新变更edge:基于升级后的Alpine edge版本,包含最新PrivateBin版本stable:包含最新PrivateBin版本及Docker镜像Git仓库的最新标记发布版——当Alpine有重要安全修复或Alpine新版本发布时更新1.5.1:包含PrivateBin 1.5.1版本及Docker镜像Git仓库的最新标记发布版——当Alpine有重要安全修复或Alpine新版本发布时更新,与stable相同1.5.1-...:提供特定不可变镜像的选择若通过拉取自动更新镜像,建议使用stable、nightly或latest标签。若需控制和可重复性,或使用编排工具,数字标签可能更合适。edge标签提供Alpine未来版本软件的预览,作为检测镜像构建问题的预警系统。
镜像托管在Docker Hub和GitHub容器仓库:
privatebin或docker.io/privatebinghcr.io/privatebin假设已成功安装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范围添加到这些数字中。
如需使用自定义conf.php文件(例如启用文件上传或使用不同模板),可添加第二个卷:
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应用以支持多种场景,允许通过环境修改设置而非配置文件。大多数与存储后端相关:
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_FILEGCLOUD_PROJECTGOOGLE_APPLICATION_CREDENTIALSGOOGLE_CLOUD_PROJECTPRIVATEBIN_GCS_BUCKET以下变量默认不使用,但可在自定义配置文件中启用,以避免敏感信息存储在配置文件中:
STORAGE_HOSTSTORAGE_LOGINSTORAGE_PASSWORDSTORAGE_CONTAINERCONFIG_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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429