前言
折腾了飞书日历,发现飞书待办任务不能同步到苹果提醒事项,后来想了想,飞书是通过CalDav服务的,那我是不是直接部署一个就可以了,然后就找到了Radicale轻量化服务,再编写一个auth插件,不就能接入agent了吗。
Radicale CalDAV Server
基于 Radicale 的 CalDAV/CardDAV 服务,配合自定义 API Key 认证插件,支持 iPhone/Mac 原生同步。
功能
- CalDAV/CardDAV:标准日历和联系人数据存储
- API Key 认证:自定义插件,通过 HTTP Basic Auth 的 password 字段传 key
- iOS/macOS 同步:原生支持,日历事件同步到"日历",待办同步到"提醒事项"。安卓、鸿蒙也支持。
- Agent 集成:包含 OpenClaw/Hermes skill,支持通过自然语言管理日程和待办
部署方式
Clone项目:Radicale-CalDavAgentSkill
方式一:Docker 一键部署(推荐)
有 Docker 环境的直接用这个,最省事。
前提
- Docker 和 Docker Compose 已安装
步骤
配置 API Keys
# apikeys sk-your-api-key = your-username启动
docker-compose up -d访问
- CalDAV 地址:
http://127.0.0.1:5232
- CalDAV 地址:
停止
docker-compose down方式二:宝塔面板部署(无 Docker 环境)
服务器无法使用 Docker 时,用 宝塔面板 + Supervisor + Nginx 反向代理 + HTTPS。
前提
- CentOS/Ubuntu 服务器
- Python 3.7+(推荐 3.7~3.11,Radicale 3.1.x 兼容性好)
- 域名和 SSL 证书
步骤
创建站点和目录
mkdir -p /www/wwwroot/your-domain.com cd /www/wwwroot/your-domain.com创建虚拟环境并安装
python3 -m venv venv source venv/bin/activate pip install radicale==3.1.9复制文件到服务器
config→/www/wwwroot/your-domain.com/configradicale_auth_apikey.py→venv/lib/python3.x/site-packages/radicale_auth_apikey.pyapikeys→/www/wwwroot/your-domain.com/apikeys
编辑
config[server] hosts = 127.0.0.1:5232 [auth] type = radicale_auth_apikey apikey_filename = /www/wwwroot/your-domain.com/apikeys [rights] type = owner_only [storage] type = multifilesystem filesystem_folder = /www/wwwroot/your-domain.com/data/collections [web] type = none [logging] level = info编辑
apikeys# format: apikey = username sk-your-api-key = your-username宝塔 Supervisor 管理器添加守护进程
- 启动命令:
/www/wwwroot/your-domain.com/venv/bin/python -m radicale --config /www/wwwroot/your-domain.com/config - 运行目录:
/www/wwwroot/your-domain.com
- 启动命令:
Nginx 反向代理
server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/cert.pem; ssl_certificate_key /path/to/key.pem; location / { proxy_pass http://127.0.0.1:5232; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # CalDAV 方法透传(关键!) proxy_method $request_method; } }⚠️ Nginx 默认会拦截 PROPFIND/REPORT/MKCALENDAR 等方法,确保没有
limit_except GET POST之类的限制。
API Key 认证
HTTP Basic Auth:
- Username:
apikeys文件里配置的 username - Password:API Key
示例(curl):
curl -u "your-username:sk-your-api-key" \
-X PROPFIND \
https://your-domain.com/iPhone/macOS 同步
- 设置 → 日历/提醒事项 → 账户 → 添加账户 → 其他 → 添加 CalDAV 账户
- 服务器:
your-domain.com - 用户名:
your-username - 密码:你的 API Key
- 描述:Radicale
日历事件进"日历",待办(TODO)进"提醒事项"。
安卓、鸿蒙同理配置。
Agent 集成(Skill)
skill/ 目录包含 OpenClaw/Hermes skill:
scripts/caldav_client.py:完整的 CalDAV 客户端(增删改查)SKILL.md:使用文档
直接说:
- "添加日程:周五下午3点开周会"
- "添加待办:买牛奶,明天截止"
文件说明
| 文件 | 说明 |
|---|---|
config | Radicale 配置文件 |
radicale_auth_apikey.py | 自定义 API Key 认证插件 |
apikeys | API Key 映射文件 |
Dockerfile | Docker 镜像构建 |
docker-compose.yml | Docker Compose 配置 |
skill/ | Agent 集成 skill |
数据备份
Radicale 使用纯文件存储,备份直接复制 data/ 目录即可:
cp -r ./data /backup/radicale-data

Comments | NOTHING
该文章已经关闭评论