
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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包均通过加密签名验证,确保未被篡改后部署到镜像中。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务