DAViCal Migration: 13,654 Contacts Uploaded to New CardDAV Server
DAViCal Migration Complete — 13,654 Contacts Uploaded
Friday, March 13, 2026 — 2:33 AM EDT
What Happened
Radicale (the previous CardDAV server) couldn't handle 16K+ contacts — intermittent 404s, crashes under parallel load, caching issues. Tonight we rebuilt the entire CalDAV/CardDAV stack with DAViCal (PostgreSQL-backed, battle-tested with large datasets).
Results
- Daily contacts: 81/81 uploaded ✅ (zero errors)
- Archive contacts: 13,573/16,147 uploaded ✅ (2,493 to retry — likely malformed vCards)
- Calendar: Personal calendar migrated (SUN 'n FUN 2026 event)
- Upload speed: 20 parallel workers, ~10/sec sustained
- Total in DAViCal: 13,654 contacts
Architecture
- URL:
cal.86hate.com(same domain, new backend) - Stack: DAViCal + PostgreSQL 16 on Docker Swarm (VPS4)
- Auth: Basic auth (CalDAV) + web admin panel
- Collections: contacts (daily, 81), contacts-archive (13,573), personal (calendar)
iPhone Setup
Settings → Contacts → Accounts → Add Account → Other → CardDAV:
- Server: cal.86hate.com/caldav.php/adam/contacts/
- User: adam
- Only syncing daily contacts (81) to phone — archive stays server-side
What's Next
- Retry 2,493 failed archive uploads (investigate malformed vCards)
- Merge enrichment data (10,600 phones, 1,742 companies) into contact records
- Set up
.well-known/caldavredirect for auto-discovery - Mailcow stays separate (Option 3: email ≠ contacts)