OpenClaw CalDAV (Radicale) Installer Wizard
| install.sh | ||
| README.md | ||
🦞 OpenClaw CalDAV Installer
One-command deployment of Radicale CalDAV/CardDAV on Ubuntu/Debian, pre-configured for OpenClaw integration.
What It Does
- Installs Docker, Nginx, Certbot, and apache2-utils (if not present)
- Deploys Radicale via Docker Compose with bcrypt authentication
- Configures Nginx reverse proxy with SSL termination
- Obtains a free Let's Encrypt SSL certificate
- Binds to
127.0.0.1for secure OpenClaw localhost access
Prerequisites
| Requirement | Details |
|---|---|
| OS | Ubuntu 20.04+ / Debian 11+ |
| Access | Root (sudo) |
| Ports | 80 and 443 open to the internet |
| DNS | A record pointing your domain to this server's IP |
| RAM | 512 MB minimum |
Quick Start
# Download the installer
git clone https://github.com/openclaw/caldav-installer.git
cd caldav-installer
# Run the wizard
sudo bash install.sh
The wizard will ask you for:
- Domain name (e.g.
cal.example.com) - Email (for Let's Encrypt SSL)
- CalDAV username & password
- Port (default: 5232)
- Install directory (default:
~/caldav-docker)
Client Setup
Apple Calendar (macOS / iOS)
- Settings → Accounts → Add Account → Other → CalDAV
- Server:
https://YOUR_DOMAIN - Username & password as configured
Thunderbird / GNOME Calendar
- URL:
https://YOUR_DOMAIN/USERNAME/calendar.ics/
OpenClaw Integration
openclaw config set tools.calendar.provider "caldav"
openclaw config set tools.calendar.caldav.url "https://YOUR_DOMAIN"
openclaw config set tools.calendar.caldav.username "YOUR_USER"
openclaw config set tools.calendar.caldav.password "YOUR_PASSWORD"
OpenClaw connects internally via http://localhost:5232.
Architecture
Internet → Nginx (443/SSL) → 127.0.0.1:5232 → Radicale Container
↕
OpenClaw Gateway → localhost:5232 ──────────> /data/collections
Management
cd ~/caldav-docker
# Start / Stop / Restart
docker compose up -d
docker compose down
docker compose restart
# Add a new user
sudo htpasswd -B ./config/users newuser
docker compose restart
# View logs
docker compose logs -f
# Check status
docker compose ps
Troubleshooting
| Issue | Fix |
|---|---|
| SSL cert failed | Verify DNS A record; check ports 80/443 are open |
| 401 Unauthorized | Check config/users file has the correct user entry |
| Container won't start | Check logs: docker compose logs radicale |
| Can't sync calendar | Ensure client URL ends with /username/calendar.ics/ |
License
MIT — use freely, contribute back. 🦞