openclaw-caldav/README.md

103 lines
2.7 KiB
Markdown

# 🦞 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. 🦞