本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
PrivateBin 是一个极简的开源在线粘贴板,服务器对粘贴数据零知识。数据在浏览器端使用256位AES的伽罗瓦计数器模式进行加密和解密。
本仓库包含创建Docker镜像所需的Dockerfile和资源,预安装了PrivateBin实例,并采用安全的默认配置。镜像基于Docker Hub的Alpine镜像构建,扩展了生成讨论头像所需的GD模块,以及用于提供静态JavaScript库、CSS和图标的Nginx Web服务器。php-fpm和Nginx的所有日志(访问日志和错误日志)均转发到docker logs。
这是一个全能镜像(Docker Hub / GitHub),可与PrivateBin支持的任何存储后端一起使用——基于文件的存储、数据库、Google Cloud或S3存储。我们还为每个后端提供专用镜像:
所有镜像均包含PrivateBin的发行版本,并提供以下标签:
latest:最新推送镜像的别名,通常与nightly相同,但不包含edgenightly:最新发布的PrivateBin版本,基于升级后的Alpine发行版镜像,包含docker镜像仓库的最新变更edge:最新发布的PrivateBin版本,基于升级后的Alpine edge镜像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容器 registry:
privatebin或docker.io/privatebinghcr.io/privatebin假设已成功安装docker并具有互联网访问权限,可以从docker hub拉取并运行镜像,如下所示:
$ 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范围添加到这些数字中。
如果需要使用自定义的conf.php文件(例如启用文件上传或使用不同模板),可添加第二个卷:
$ 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应用以支持各种场景。这允许通过环境而非配置文件更改某些设置。大多数与存储后端相关:
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或nginx配置文件挂载到/etc/php/conf.d/和/etc/nginx/http.d/文件夹。例如,如需调整这两个服务接受的文件上传最大大小(默认10 MiB),可通过此方式实现。
以下是Kubernetes的部署示例:
--- 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后端时删除空目录、清除所有过期粘贴以及显示统计信息。这些脚本可在运行中的镜像内执行,或作为替代入口点运行,需附加与运行服务镜像相同的卷,推荐前一种方式。
# 假设使用选项--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的全能镜像,因为它包含不同支持后端所需的所有驱动程序和库。使用变体镜像时,只能在相同存储类型的两个后端之间迁移,例如两个文件系统路径或两个数据库后端。
要重现镜像,运行:
$ 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归档均通过加密签名验证,确保在部署到镜像前未被篡改。
免费版仅支持 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 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429