本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com


Vdirsyncer是一款命令行工具,用于在多种服务器与本地文件系统之间同步日历和通讯录。最常见的使用场景是将服务器与本地文件夹同步,通过其他程序修改本地事件和联系人后,再由Vdirsyncer将更改同步回服务器。
此外,Vdirsyncer不仅限于客户端与服务器之间的同步,还可直接在两台服务器之间同步日历和/或通讯录。
其目标是成为日历和联系人领域的OfflineIMAP(后者用于电子邮件同步)。
Vdirsyncer支持多种服务器:
官方GitHub仓库:<[***]>
文档:<[***]>
维护者GitHub仓库:<[***]>
Docker Hub:<[***]>
GitHub容器 registry:<[***]>
Quay.io:<[***]>
本镜像基于Alpine Linux构建,使用python3、pip3和pipx配置。
镜像始终提供两个版本:
| 标签 | 内容 |
|---|---|
| latest | 包含最新稳定版本 |
| 2.x | 包含页面底部注明的Vdirsyncer、Python和Alpine版本 |
支持的架构:
为确保镜像的真实性和完整性,推送到Docker Hub和GitHub Container Registry(未来可能更多)的所有bleala/vdirsyncer镜像均使用Cosign签名。
签名使用静态密钥对,验证所需的公钥cosign.pub位于GitHub仓库根目录:
cosign.pub可通过以下步骤验证镜像签名,确保其未被篡改且来源于维护者。
安装Cosign:
若未安装Cosign,参考官方安装指南:Cosign安装指南。
获取公钥:
从GitHub仓库下载cosign.pub文件,或克隆仓库到本地。
验证镜像:
使用cosign verify命令,建议通过镜像摘要(如sha256:...)而非可变标签(如latest或1.23.0)验证。镜像摘要可在Docker Hub或GitHub Container Registry查看。
# 确保当前目录包含'cosign.pub',或提供完整路径 # 将<registry>/bleala/vdirsyncer@sha256:<image-digest>替换为实际镜像引用及其摘要 # Docker Hub镜像示例: cosign verify --key cosign.pub docker.io/bleala/vdirsyncer@sha256:<实际镜像摘要> # GitHub Container Registry镜像示例: cosign verify --key cosign.pub ghcr.io/bleala/vdirsyncer@sha256:<实际镜像摘要>
例如,验证摘要为sha256:c31bfe88a1922ca891762803011e3bd55ad86fd12192b56100ed52de1050af4b的dev标签:
cosign verify --key cosign.pub docker.io/bleala/vdirsyncer@sha256:c31bfe88a1922ca891762803011e3bd55ad86fd12192b56100ed52de1050af4b
验证成功将输出类似以下信息:
cosign verify --key cosign.pub docker.io/bleala/vdirsyncer@sha256:c31bfe88a1922ca891762803011e3bd55ad86fd12192b56100ed52de1050af4b Verification for index.docker.io/bleala/vdirsyncer@sha256:c31bfe88a1922ca891762803011e3bd55ad86fd12192b56100ed52de1050af4b -- The following checks were performed on each of these signatures: - The cosign claims were validated - Existence of the claims in the transparency log was verified offline - The signatures were verified against the specified public key [{"critical":{"identity":{"docker-reference":"index.docker.io/bleala/vdirsyncer"},"image":{"docker-manifest-digest":"sha256:c31bfe88a1922ca891762803011e3bd55ad86fd12192b56100ed52de1050af4b"},"type":"cosign container image signature"},"optional":{"Bundle":{"SignedEntryTimestamp":"MEYCIQCbmNMsqDS+YNSKcAEk7duy99v2E/FjA5Vrxgv43wAs8wIhANjKTRUkDof9P0w0otdcNwmgHOr1q/MaC52Zk7qk+x81","Payload":{"body":"eyJhcGlWZXJzaW9uIjoiMC4wLjEiLCJraW5kIjoiaGFzaGVkcmVrb3JkIiwic3BlYyI6eyJkYXRhIjp7Imhhc2giOnsiYWxnb3JpdGhtIjoic2hhMjU2IiwidmFsdWUiOiI2ZGRmMDY0ZDE0MzJmNDcwZjYyNTE0NzIzZTM0YWNhMjljNDJmMTY2ZWI2MWRlMTA3ZjFlZDEwODQ0OTJiMzAzIn19LCJzaWduYXR1cmUiOnsiY29udGVudCI6Ik1FUUNJQi9idDZaR0dKYjVkQW9WcGxSVDdYVmZaei96eCtCbllYN25YTElNNE1kb0FpQjNENUlvWlk4YnBQMnhlcDZlSHJZN1dFdjMwcUhxSkk1VldpWFNpWHRRdXc9PSIsInB1YmxpY0tleSI6eyJjb250ZW50IjoiTFMwdExTMUNSVWRKVGlCUVZVSk1TVU1nUzBWWkxTMHRMUzBLVFVacmQwVjNXVWhMYjFwSmVtb3dRMEZSV1VsTGIxcEplbW93UkVGUlkwUlJaMEZGU0VWWFRFYzVjVVI2VFdGdlJ6TlJTSGxXTUhoVFRVZzNRblF3VGdvMVRVWkRNWEV3VFhabE5DOHZVMmwxZVZWbU5VRnBaRVJZY2s5S1kwaEdSalYxZERWUVMyNVViMUZ6YjNWNWRGVTBXVmhoWlM5bU1UQlJQVDBLTFMwdExTMUZUa1FnVUZWQ1RFbERJRXRGV1MwdExTMHRDZz09In19fX0=","integratedTime":1756728100,"logIndex":456084926,"logID":"c0d23d6ad406973f9559f3ba2d1ca01f84147d8ffc5b8445c224f98b9591801d"}}}}]
启动容器可运行docker run -d -e AUTOSYNC=true -v /path/to/local/folder:/vdirsyncer bleala/vdirsyncer:latest,但更推荐使用docker-compose维护,以下是有效的docker-compose示例:
--- networks: vdirsyncer: driver: bridge volumes: vdirsyncer: name: vdirsyncer driver: local services: # Vdirsyncer - 在服务器与本地文件系统之间同步日历和通讯录的Docker化工具 # [***] app: image: bleala/vdirsyncer:latest container_name: vdirsyncer restart: unless-stopped networks: vdirsyncer: {} environment: # 可选:设置时区(用于容器和日志时间),默认Europe/Vienna TZ: Europe/Vienna # 可选:启用自动发现,默认false AUTODISCOVER: true # 可选:启用自动同步,默认false AUTOSYNC: true # 可选:容器启动时自动更新Vdirsyncer及依赖,默认false AUTOUPDATE: true # 可选:调整自动同步/发现时间,默认15分钟 - */15 * * * * # Cron时间需符合Cron格式,可参考[***] # 设置CRON_TIME格式如:*/15 * * * * CRON_TIME: '*/15 * * * *' # 可选:同步前执行的自定义脚本路径,默认无 PRE_SYNC_SCRIPT_FILE: '' # 可选:同步后执行的自定义脚本路径,默认无 POST_SYNC_SCRIPT_FILE: '' # 可选:Supercronic标志,如日志级别 SUPERCRONIC_FLAGS: '' volumes: - vdirsyncer:/vdirsyncer # Docker卷 - /path/to/config:/vdirsyncer/config # Vdirsyncer配置文件 # 可选 - /path/to/custom_before_script.sh:/vdirsyncer/custom_before_script.sh # 同步前自定义脚本 - /path/to/custom_after_script.sh:/vdirsyncer/custom_after_script.sh # 同步后自定义脚本
需挂载包含config文件的本地文件夹。配置方法
挂载文件夹中还将包含config.example(容器内复制的示例配置),供快速参考。
配置文件名为config,采用.ini格式,参考官方文档及config.example。
注意:首次使用Vdirsyncer不建议默认启用AUTODISCOVER=true!启用后将自动接受Vdirsyncer的所有提示,可能导致日历/通讯录结构损坏!仅在了解风险时使用!
首次使用建议运行docker exec -it vdirsyncer vdirsyncer discover,根据提示手动确认(可能需要回答yes/no)。阅读官方文档!
执行docker exec -it vdirsyncer vdirsyncer discover后,可手动运行同步:docker exec -it vdirsyncer /bin/bash -c "vdirsyncer metasync && vdirsyncer sync";若未启用AUTOSYNC=true,可将其设为true并重启容器(docker compose restart)。若已启用,可等待定时任务执行或手动运行上述命令。
首次同步完成后,可调整CRON_TIME设置同步频率,参考Crontab.guru,默认15分钟(CRON_TIME=*/15 * * * *)。
Supercronic执行的任务日志将写入日志文件并输出到Docker日志,可通过docker logs -f vdirsyncer或docker compose logs -f查看。
容器内Vdirsyncer以vdirsyncer用户运行,而非root。
该用户的UID和GID均为1000,使用绑定挂载(bind mount)而非Docker卷时需注意权限。
如需自定义UID和GID,可在docker-compose.yml中添加user键:
示例:
user: "你的_UID:你的_GID"
--- networks: vdirsyncer: driver: bridge volumes: vdirsyncer: name: vdirsyncer driver: local services: # Vdirsyncer - 在服务器与本地文件系统之间同步日历和通讯录的Docker化工具 # [***] app: image: bleala/vdirsyncer:latest container_name: vdirsyncer restart: unless-stopped user: "你的_UID:你的_GID" networks: vdirsyncer: {} environment: # 可选:设置时区(用于容器和日志时间),默认Europe/Vienna TZ: Europe/Vienna # 可选:启用自动发现,默认false AUTODISCOVER: true # 可选:启用自动同步,默认false AUTOSYNC: true # 可选:容器启动时自动更新Vdirsyncer及依赖,默认false AUTOUPDATE: true # 可选:调整自动同步/发现时间,默认15分钟 - */15 * * * * # Cron时间需符合Cron格式,可参考[***] # 设置CRON_TIME格式如:*/15 * * * * CRON_TIME: '*/15 * * * *' # 可选:同步前执行的自定义脚本路径,默认无 PRE_SYNC_SCRIPT_FILE: '' # 可选:同步后执行的自定义脚本路径,默认无 POST_SYNC_SCRIPT_FILE: '' # 可选:Supercronic标志,如日志级别 SUPERCRONIC_FLAGS: '' volumes: - vdirsyncer:/vdirsyncer # Docker卷 - /path/to/config:/vdirsyncer/config # Vdirsyncer配置文件 # 可选 - /path/to/custom_before_script.sh:/vdirsyncer/custom_before_script.sh # 同步前自定义脚本 - /path/to/custom_after_script.sh:/vdirsyncer/custom_after_script.sh # 同步后自定义脚本
Google用户注意:根据文档,需指定token_file = "PATH"路径,必须使用绝对路径!
免费版仅支持 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