
本Docker旨在为您的备份提供即用型且可维护的BackupPC实例。
!https://backuppc.github.io/backuppc/images/logos/logo320.png BackupPC是一款免费的自托管备份软件,能够通过rsync、smb或tar等多种方式备份远程主机。它支持全量和增量备份,并能从任何备份版本自动重建可用的完整数据。从版本4开始,BackupPC采用新的反向增量存储方式,不再使用硬链接。
有关更多详细信息和使用方法,请参见BackupPC文档。
出于测试目的,您可以使用以下命令创建新的BackupPC实例。请注意,基本用法不适合生产环境。
bashdocker run \ --name backuppc \ --publish 80:8080 \ adferrand/backuppc
如果需要,将下载并启动最新的BackupPC 4.x Docker镜像。启动后,浏览[***] Web管理界面。
默认凭据为:
然后您可以测试BackupPC实例。
BackupPC配置和备份池以***数据容器的形式持久化(参见数据持久化),控制较弱。此外,BackupPC管理Web UI通过不安全的HTTP协议访问,可能暴露您的用户密码和可从UI检索的数据(参见UI SSL加密)。
由于涉及备份,您肯定希望控制Docker实例的数据持久化。
容器声明了三个卷:
/etc/backuppc:存储BackupPC配置,特别是config.pl和主机配置。/home/backuppc:backuppc用户的主目录,运行BackupPC实例,尤其包含.ssh目录(存储通过SSH协议备份使用的SSH密钥)。/data/backuppc:包含BackupPC备份池(即备份数据本身)和日志。建议将这些卷挂载到主机以持久化备份。假设主机目录/var/docker-data/backuppc{etc,home,data}挂载在大容量文件系统上,例如:
bashdocker run \ --name backuppc \ --publish 80:8080 \ --volume /var/docker-data/backuppc/etc:/etc/backuppc \ --volume /var/docker-data/backuppc/home:/home/backuppc \ --volume /var/docker-data/backuppc/data:/data/backuppc \ adferrand/backuppc
您的所有BackupPC配置、备份和密钥将在容器销毁/重建后保留。
用于数据持久化的挂载主机目录需要可被容器内backuppc用户对应的主机用户访问。默认情况下,backuppc用户的UUID为1000,GUID为1000,通常对应主机上创建的第一个非root用户。
如果要使用不同UUID/GUID的主机用户,可在创建容器时通过环境变量指定自定义值:BACKUPPC_UUID(默认:1000)和BACKUPPC_GUID(默认:1000)。
例如:
bash# 使用用户myUser(UUID 1200)和组myGroup(GUID 1300) chown -R myUser:myGroup /var/docker-data/backuppc docker run \ --name backuppc \ --publish 80:8080 \ --volume /var/docker-data/backuppc/etc:/etc/backuppc \ --volume /var/docker-data/backuppc/home:/home/backuppc \ --volume /var/docker-data/backuppc/data:/data/backuppc \ --env 'BACKUPPC_UUID=1200' \ --env 'BACKUPPC_GUID=1300' \ adferrand/backuppc
默认情况下,容器首次启动时会创建一个具有管理员权限的用户,用户名为backuppc,密码为password。凭据存储在文件/etc/backuppc/htpasswd中,供嵌入式lighttpd服务器处理基本认证,同时BackupPC配置变量$Conf{CgiAdminUsers}设置为此用户名,以授予管理员权限。
您可以在创建容器时通过设置环境变量BACKUPPC_WEB_USER(默认backuppc)和BACKUPPC_WEB_PASSWD(默认password)修改管理员用户凭据。
现有容器的管理员凭据可通过修改相关环境变量后重建容器来更改。但请注意,如果修改用户名,重建容器后需要手动从容器内的/etc/backuppc/htpasswd文件中删除旧用户名。
可能需要对BackupPC Web UI进行更高级的认证/授权,例如多个允许操作备份的普通用户和一个用于配置BackupPC的管理员用户。
这种情况下,必须手动配置认证和管理员权限:
/etc/backuppc/htpasswd文件中提供凭据配置认证,应使用Apache htpasswd工具填充该文件。/etc/backuppc/config.pl文件的$Conf{CgiAdminUsers}变量中添加用户名,可授予该用户管理员权限。BACKUPPC_WEB_USER和BACKUPPC_WEB_PASSWD以避免在htpasswd文件中添加额外用户,并在config.pl中重新配置管理员权限。例如,要创建两个普通用户user1、user2和一个管理员用户admin,可在主机上执行以下步骤(假设/etc/backuppc挂载在主机的/var/docker-data/backuppc/etc,且主机已安装Apache htpasswd工具):
bashhtpasswd -b -c /var/docker-data/backuppc/etc/htpasswd admin admin_password htpasswd -b /var/docker-data/backuppc/etc/htpasswd user1 user1_password htpasswd -b /var/docker-data/backuppc/etc/htpasswd user2 user2_password sed -ie "s/^\$Conf{CgiAdminUsers}\s*=\s*'\w*'/\$Conf{CgiAdminUsers} = 'admin'/g" \ /var/docker-data/backuppc/etc/config.pl docker run \ --name backuppc \ --publish 80:8080 \ --volume /var/docker-data/backuppc/etc:/etc/backuppc \ --volume /var/docker-data/backuppc/home:/home/backuppc \ --volume /var/docker-data/backuppc/data:/data/backuppc \ adferrand/backuppc
请注意,基本认证在HTTP端口上仍未加密。参见UI SSL加密以保护认证安全。
默认情况下,BackupPC管理Web UI通过非安全的HTTP协议暴露。建议采用以下两种方式之一进行安全加固。
将环境变量USE_SSL(默认:false)设置为true,嵌入式lighttpd服务器将通过HTTPS协议暴露UI,使用容器实例首次运行时生成的自签名证书。
bashdocker run \ --name backuppc \ --publish 443:8080 \ --env 'USE_SSL=true' \ adferrand/backuppc
然后您可以通过安全URL [***]
注意: 您也可以使用自己的SSL证书:将私钥和证书合并为server.pem文件(例如cat server.key server.crt > server.pem),并将certificate.pem挂载到容器路径/etc/lighttpd/server.pem(例如--volume /you/path/to/certificate.pem:/etc/lighttpd/server.pem)。
无需在此Docker中提供复杂的SSL配置,建议运行不带SSL且不暴露8080端口的BackupPC实例,并启动第二个容器作为安全的SSL反向代理指向BackupPC实例。
您可以基于DNS进行路由、使用Let's Encrypt签名的证书等。更多信息参见https://github.com/jwilder/nginx-proxy + https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion%E6%88%96https://hub.docker.com/_/traefik/%E3%80%82
BackupPC可以通过邮件发送通知,告知用户备份状态。本Docker包含MSMTP工具,可将所有邮件中继到预先存在的SMTP服务器。
提供两种配置方式。
如果使用BackupPC备份IT架构,您的主机或本地网络上可能已配置SMTP服务器,或可在与BackupPC容器相同的网络上实例化一个容器化的全功能SMTP服务器(如https://github.com/namshi/docker-smtp%EF%BC%89%E3%80%82
无论哪种情况,SMTP服务器应可通过YOUR_SMTP_FQDN的25端口被BackupPC容器访问。创建BackupPC容器前,将环境变量SMTP_HOST(默认:mail.example.org)设置为YOUR_SMTP_FQDN,BackupPC发送的所有邮件将中继到此SMTP服务器。
还应设置可选环境变量SMTP_MAIL_DOMAIN(默认空)为您管理的域,以便在BackupPC未指定发件人右部时自动解析为该域。实际上,默认情况下BackupPC通知的发件人仅为'backuppc',无右部,这类邮件可能被大多数SMTP服务器拒绝。
bashdocker run \ --name backuppc \ --publish 80:8080 \ --env SMTP_HOST=smtp.my-domain.org \ --env SMTP_MAIL_DOMAIN=my-domain.org \ adferrand/backuppc
在更复杂的场景中(如通过带认证的TLS安全SMTP服务器发送通知,例如Google SMTP),可使用MSMTP支持的任何高级配置。为此,将用户级SMTP配置文件.msmtprc挂载或复制到卷/home/backuppc中,BackupPC发送的所有邮件将使用此配置。
参见MSMTP文档,特别是配置示例,以构建适合您需求的配置。
要更新此容器的BackupPC版本:
首次启动时,将调用BackupPC的configure.pl脚本。它会检测现有配置(位于/etc/backuppc)和备份池(位于/data/backuppc),并进行任何必要的更改以满足新BackupPC版本的要求。
本小节位于升级部分,因为该过程与容器升级非常相似。
由于容器实例首次运行时会调用configure.pl脚本,您可以将现有的BackupPC v3.x安装容器化并升级到v4.x。
假设主机上安装的BackupPC v3.x:
/etc/backuppc/var/lib/backuppc/home/backuppc/var/log/backuppc检查主机上backuppc用户的UUID/GUID。如果不是1000/1000,需要通过环境变量自定义容器实例中的这些值(参见POSIX权限)。
然后启动容器实例,将现有BackupPC安装资源挂载到相关卷:
bashdocker run \ --name backuppc \ --publish 80:8080 \ --volume /etc/backuppc:/etc/backuppc \ --volume /home/backuppc:/home/backuppc \ --volume /var/lib/backuppc:/data/backuppc \ --volume /var/log/backuppc:/data/backuppc/log \ adferrand/backuppc
configure.pl脚本将检测到/etc/backuppc下的v3.x版本,并执行适当的升级操作(特别是启用旧版v3.x池,以便从BackupPC v4.x访问)。
默认情况下,此Docker的时区设置为UTC。要修改时区,可在环境变量TZ中指定tzdata兼容的时区。
bash# 巴黎时间(含夏令时) docker run \ --name backuppc \ --publish 80:8080 \ --env TZ=Europe/Paris \ adferrand/backuppc
或者,根据主机OS,可通过将主机文件/etc/localtime挂载到容器路径/etc/localtime来同步容器与主机的时区:
bashdocker run \ --name backuppc \ --publish 80:8080 \ --mount /etc/localtime:/etc/localtime:ro \ adferrand/backuppc
出于调试和维护目的,您可能需要在运行的容器中启动shell。对于Docker 1.3.0或更高版本,可执行:
bashdocker exec -it backuppc /bin/sh
您将获得一个包含Alpine发行版标准工具的shell。
BackupPC旧版本(v3.x)可通过旧标签3或明确的版本标签(如3.3.2)获取:
bashdocker run \ --name backuppc \ --publish 80:8080 \ adferrand/backuppc:3
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务