103 lines
2.7 KiB
Markdown
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. 🦞
|