Deploying Radicale
Introduction
Radicale is a small but powerful CalDAV (calendar) and CardDAV (contacts) server. With its minimalist design and zero external dependencies, Radicale provides a lightweight alternative to complex groupware solutions while remaining fully compatible with standard calendar and contact applications.
Key features of Radicale include:
- CalDAV Support: Full calendar synchronization protocol
- CardDAV Support: Contact synchronization protocol
- Lightweight: Written in Python with minimal dependencies
- File-Based Storage: Simple file storage, easy to backup
- Multi-User: Support for multiple users and shared calendars
- Authentication Options: LDAP, htpasswd, PAM, and more
- HTTPS Ready: Built-in SSL/TLS support
- Standards Compliant: Works with any CalDAV/CardDAV client
- Web Interface: Basic web interface for management
This guide walks through deploying Radicale on Klutch.sh using Docker and configuring calendar/contact synchronization.
Prerequisites
Before deploying Radicale on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Radicale configuration
- CalDAV/CardDAV compatible clients (Thunderbird, macOS Calendar, iOS, etc.)
- Basic familiarity with Docker
Deploying Radicale on Klutch.sh
- Select HTTP as the traffic type
- Set the internal port to 5232
Create Your Dockerfile
Create a Dockerfile in your repository:
FROM tomsquest/docker-radicale:latest
# Copy custom configuration if presentCOPY config /config
# Expose the web interfaceEXPOSE 5232
# Volume for data persistenceVOLUME /dataCreate Configuration Directory
Create a config directory with the configuration file:
[server]hosts = 0.0.0.0:5232
[auth]type = htpasswdhtpasswd_filename = /data/usershtpasswd_encryption = bcrypt
[storage]filesystem_folder = /data/collections
[logging]level = info
[rights]type = from_filefile = /config/rightsCreate Rights Configuration
Create config/rights for access control:
# Rights configuration[root]user: .+collection:permissions: R
[principal]user: .+collection: {user}permissions: RW
[calendars]user: .+collection: {user}/[^/]+permissions: rwPush Your Repository to GitHub
Commit and push your files to your GitHub repository.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “radicale”.
Create a New App
Create a new app within your project and connect your GitHub repository.
Configure HTTP Traffic
In the deployment settings:
Set Environment Variables
Configure the following environment variables:
| Variable | Value |
|---|---|
RADICALE_CONFIG | /config/config |
Attach Persistent Volumes
Add persistent storage:
| Mount Path | Recommended Size | Purpose |
|---|---|---|
/data | 5 GB | Calendars, contacts, and user data |
Deploy Your Application
Click Deploy to build and start your Radicale instance.
Create Users
After deployment, create user credentials:
htpasswd -B -c /data/users usernameAccess Radicale
Access the web interface at https://your-app-name.klutch.sh.
Client Configuration
macOS/iOS Calendar
- Open Settings > Calendar > Accounts
- Add CalDAV Account
- Server:
your-app-name.klutch.sh - Username and password as configured
- Use SSL: Enabled
Thunderbird
- Install TbSync and Provider for CalDAV & CardDAV
- Add CalDAV account
- Server URL:
https://your-app-name.klutch.sh - Enter credentials
Additional Resources
- Official Radicale Website
- Radicale Documentation
- Radicale GitHub Repository
- Klutch.sh Persistent Volumes
Conclusion
Deploying Radicale on Klutch.sh provides a lightweight, self-hosted calendar and contacts server with automatic builds, persistent storage, and secure HTTPS access. Sync your calendars and contacts across all devices while maintaining complete control over your personal data.