Title: Set up your own CalDAV and CardDAV servers on OpenBSD | |
Author: Solène | |
Date: 23 April 2023 | |
Tags: caldav carddav openbsd selfhosting | |
Description: In this tutorial, you will learn how to install radicale | |
on OpenBSD to self host your own calendar and contacts server | |
# Introduction | |
Calendar and contacts syncing, it's something I pushed away for too | |
long, but when I've lost data on my phone and my contacts with it, | |
setting up a local CalDAV/CardDAV server is the first thing I did. | |
Today, I'll like to show you how to set up the server radicale to have | |
your own server. | |
Radicale official project page | |
Basically, CalDAV (for calendars and to-do lists) and CardDAV (for | |
contacts) are exchange protocols to sync contacs and calendars between | |
devices. | |
# Setup | |
On OpenBSD 7.3, the latest version of radicale is radicale 2, available | |
as a package with all the service files required for a quick and | |
efficient setup. | |
You can install radicale with the following command: | |
```shell | |
# pkg_add radicale | |
``` | |
After installation, you will have to edit the file | |
`/etc/radicale/config` in order to make a few changes. The syntax | |
looks like INI files with sections between brakets and then key/values | |
on separate lines. | |
For my setup, I made my radicale server to listen on the IP | |
`10.42.42.42` and port `5232`, and I chose to use htpasswd files | |
encrypted in bcrypt to manage users. This was accomplished with the | |
following piece of configuration: | |
```ini | |
[server] | |
hosts = 10.42.42.42:5232 | |
[auth] | |
type = htpasswd | |
htpasswd_filename = /etc/radicale/users | |
htpasswd_encryption = bcrypt | |
``` | |
After saving the changes, you need to generate the file | |
`/etc/radicale/users` to add credentials and password in it, this is | |
done using the command `htpasswd`. | |
In order to add the user `solene` to the file, use the following | |
command: | |
```shell | |
# cd /etc/radicale | |
# htpaswd users solene | |
# chown _radicale /etc/radicale/users | |
``` | |
Now everything is ready, you can enable radicale to run at boot, and | |
start it now, using `rcctl` to manage the service like in: | |
``` | |
# rcctl enable radicale | |
# rcctl start radicale | |
``` | |
# Managing calendars and contacts | |
Now you should be able to reach radicale on the address it's listening, | |
in my example it's http://10.42.42.42:5232/ and use your credentials to | |
log in. | |
Then, just click on the link "Create new addressbook or calendar", and | |
complete the form. | |
Back on the index, you will see each item managed by radicale and the | |
URL to access it. When you will configure your devices to use CalDAV | |
and CardDAV, you will need the crendentials and the URL. | |
# Conclusion | |
Radicale is very lightweight and super easy to configure, and I finally | |
have a proper calendar synchronization on my computers and smartphone, | |
which turned to be very practical. | |
# Going further | |
If you want to setup HTTPS for radicale, you can either use a | |
certificate file and configure radicale to use it, or use a reverse | |
http proxy such as nginx and handle the certificate there. |