
如果你使用 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的伽罗瓦计数器模式进行加密和解密。
本仓库包含创建Docker镜像所需的Dockerfile和资源,预安装了PrivateBin实例,并采用安全的默认配置。镜像基于Docker Hub的Alpine镜像构建,扩展了生成讨论头像所需的GD模块,以及用于提供静态JavaScript库、CSS和图标的Nginx Web服务器。php-fpm和Nginx的所有日志(访问日志和错误日志)均转发到docker logs。
这是一个全能镜像(https://hub.docker.com/r/privatebin/nginx-fpm-alpine/ / https://github.com/orgs/PrivateBin/packages/container/package/nginx-fpm-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%E4%B8%80%E8%B5%B7%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:最新发布的PrivateBin版本,基于升级后的Alpine发行版镜像,包含docker镜像仓库的最新变更edge:最新发布的PrivateBin版本,基于升级后的Alpine edge镜像stable:包含最新PrivateBin版本,基于https://github.com/PrivateBin/docker-nginx-fpm-alpine%E7%9A%84%E6%9C%80%E6%96%B0%E6%A0%87%E8%AE%B0%E5%8F%91%E8%A1%8C%E7%89%88%E2%80%94%E2%80%94%E5%BD%93Alpine%E5%8F%91%E5%B8%83%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%E4%BC%9A%E6%9B%B4%E6%96%B01.5.1:包含PrivateBin 1.5.1版本,基于https://github.com/PrivateBin/docker-nginx-fpm-alpine%E7%9A%84%E6%9C%80%E6%96%B0%E6%A0%87%E8%AE%B0%E5%8F%91%E8%A1%8C%E7%89%88%E2%80%94%E2%80%94%E5%BD%93Alpine%E5%8F%91%E5%B8%83%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%E4%BC%9A%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容器 registry:
假设已成功安装docker并具有互联网访问权限,可以从docker hub拉取并运行镜像,如下所示:
console$ docker run -d --restart="always" --read-only -p 8080:8080 -v $PWD/privatebin-data:/srv/data privatebin/nginx-fpm-alpine
参数详细说明:
-v $PWD/privatebin-data:/srv/data - 将$PWD/privatebin-data替换为系统上用于持久化粘贴和其他服务数据的文件夹路径。这确保在停止、重启或替换镜像后不会丢失粘贴数据。如果只是测试镜像或使用数据库、Google Cloud Storage后端,可跳过此参数。-p 8080:8080 - 容器内的Nginx Web服务器监听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/subgid范围添加到这些数字中。
如果需要使用自定义的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/nginx-fpm-alpine
注意:默认支持Filesystem数据存储。镜像包含MySQL和PostgreSQL的PDO模块,是Database存储所需的,但在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%E5%B0%86%E6%95%8F%E6%84%9F%E4%BF%A1%E6%81%AF%E6%8E%92%E9%99%A4%E5%9C%A8%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%A4%96%EF%BC%9A
STORAGE_HOSTSTORAGE_LOGINSTORAGE_PASSWORDSTORAGE_CONTAINER配置文件夹
CONFIG_PATH时区设置
镜像支持使用以下两个环境变量调整时区。这对于确保日志显示正确的本地时间最有用。
TZPHP_TZ注意:应用内部基于创建时设置的时区计算UNIX时间戳来处理粘贴的过期。更改PHP_TZ会影响此计算,导致粘贴过期时间早于(时区增加时)或晚于(时区减少时)预期。
可将自己的php.ini或nginx配置文件挂载到/etc/php/conf.d/和/etc/nginx/http.d/文件夹。例如,如需调整这两个服务接受的文件上传最大大小(默认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/nginx-fpm-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 - mountPath: /var/lib/nginx/tmp name: nginx-cache readOnly: False volumes: - name: run emptyDir: medium: "Memory" - name: tmp emptyDir: medium: "Memory" - name: nginx-cache emptyDir: {}
注意,privatebin-data卷必须是跨所有节点的共享持久卷,例如NFS共享。从PrivateBin 1.4.0开始,使用数据库或Google Cloud Storage时不再需要此卷。
镜像包含两个管理脚本,可用于在存储后端之间迁移数据、按ID删除粘贴、使用Filesystem后端时删除空目录、清除所有过期粘贴以及显示统计信息。这些脚本可在运行中的镜像内执行,或作为替代入口点运行,需附加与运行服务镜像相同的卷,推荐前一种方式。
console# 假设使用选项--name privatebin将容器命名为"privatebin" $ docker exec -t privatebin administration --help Usage: administration [--delete <paste id> | --empty-dirs | --help | --purge | --statistics] Options: -d, --delete 删除请求的粘贴ID -e, --empty-dirs 删除空目录(仅当配置Filesystem存储时) -h, --help 显示此帮助信息 -p, --purge 清除所有过期粘贴 -s, --statistics 读取所有存储的粘贴和评论并报告统计信息 docker exec -t privatebin migrate --help migrate - 在PrivateBin后端之间复制数据 Usage: migrate [--delete-after] [--delete-during] [-f] [-n] [-v] srcconfdir [<dstconfdir>] migrate [-h|--help] Options: --delete-after 所有粘贴和评论成功复制到目标后,从源删除数据 --delete-during 当前粘贴及其评论成功复制到目标后,从源删除数据 -f 强制覆盖目标中已存在的数据 -h, --help 显示此帮助信息 -n dry run,不复制数据 -v 详细模式 <srcconfdir> 使用此目录中conf.php的存储后端配置作为源 <dstconfdir> 可选,使用此目录中conf.php的存储后端配置作为目标;默认为: /srv/bin/../cfg/conf.php
注意,要在不同存储后端之间迁移,需要使用名为privatebin/nginx-fpm-alpine的全能镜像,因为它包含不同支持后端所需的所有驱动程序和库。使用变体镜像时,只能在相同存储类型的两个后端之间迁移,例如两个文件系统路径或两个数据库后端。
要重现镜像,运行:
console$ docker build -t privatebin/nginx-fpm-alpine .
Nginx和php-fpm两个进程由s6启动。
Nginx用于提供静态文件并缓存它们。对index.php(文档根目录/var/www中唯一暴露的PHP文件)的请求通过/run/php-fpm.sock套接字传递给php-fpm。所有其他PHP文件和数据存储在/srv下。
Nginx仅支持HTTP,因此务必在其前方运行反向代理进行HTTPS卸载,以减少TLS栈的***面。此镜像中的Nginx配置为对文本内容进行deflate/gzip压缩。
镜像构建期间,从Github下载PrivateBin发行版归档。所有下载的Alpine包和PrivateBin归档均通过加密签名验证,确保在部署到镜像前未被篡改。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务