# 🦞 OpenClaw CalDAV Installer One-command deployment of **Radicale CalDAV/CardDAV** on Ubuntu/Debian, pre-configured for [OpenClaw](https://openclaw.dev) 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.1` for 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 ```bash # 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: 1. **Domain name** (e.g. `cal.example.com`) 2. **Email** (for Let's Encrypt SSL) 3. **CalDAV username & password** 4. **Port** (default: 5232) 5. **Install directory** (default: `~/caldav-docker`) ## Client Setup ### Apple Calendar (macOS / iOS) 1. Settings → Accounts → Add Account → Other → CalDAV 2. Server: `https://YOUR_DOMAIN` 3. Username & password as configured ### Thunderbird / GNOME Calendar - URL: `https://YOUR_DOMAIN/USERNAME/calendar.ics/` ## OpenClaw Integration ```bash 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 ```bash 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. 🦞