zkbro

💡 Self-host something new day 5 - Radicale

2025-06-28 00:19

I said I was giving up on this one but after a small break, I had a second puff of energy and got stuck in again. I missed the cutoff by 19 minutes, but I promise I saw the login page at 11:59 PM, so it's just the post that's a bit late ;)

For this one, I installed the CalDAV server Radicale. I've always wanted to host my own calendar. I have access to a multitude via the emails I have - Outlook, Proton, Gmail, Tuta - but I don't feel comfortable putting stuff there. I probably have nothing to worry about, but it makes me feel icky. So here I am, started up my own server to host and manage the ics files, and now I can do all the geeky customisation I like, including setting up accounts, permissions, sharing, not sharing, syncing with clients on different devices yada yada. I guess I can do a lot of that with those other accounts, but at least now I know exactly where my data is, and I can take full responsibility of it.

Radicale was actually the second CalDAV tool I tried. My first attempt was Baikal, but for the life of me I couldn't get the GUI to load. It relied on some PHP tools which I think may have struggled on the Pi. Anyway, after spending way too long trying to get that one working, I just jumped onto another one that looked quite simple to install. It requires Python and Pip, but in my case I use Pipx so the install was simply:

pipx install https://github.com/Kozea/Radicale/archive/master.tar.gz

Allow port 5232 for network access:

sudo ufw allow 5232
sudo ufw reload

Then to run it:

sudo pipx run radicale --server-hosts 0.0.0.0:5232,[::]:5232 --storage-filesystem-folder=/var/lib/radicale/collections --auth-type none

The --server-hosts option means I can load it via http://192.168.x.x:5232/ from another device on the network. -storage-filesystem-folder is where all the files are stored, and --auth-type means I don't need to pre-define any login credentials. I'll tidy it all up later, including remote access, but for now it looks like I'll have a quick way to create, share and manage calendars (and associated vjournals, tasks and things). Here is a couple of test calendars I pulled into Thunderbird mail client: