Radicale - CalDav for Shared / Syncing Calendars
Radicale is an awesome open source, self hosted project that is absolutely great for creating shared calendars for the family, or a group of people / team.
What You'll Need
- Docker and Docker-Compose
- (optional) NGinX-Proxy-Manager (or a reverse proxy of your choice)
- (optional) A domain name for your Radicale install
- About 10 minutes of time
Installing Docker-CE and Docker-Compose
If you already have Docker and Docker-Compose installed, feel free to skip down to the next section.
You may want to install some pre-requisite softwre as well:
Debian / Ubuntu
sudo apt install git curl wget
Fedora / Redhat
dnf install git curl wget
sudo pacman -Sy git curl wget
You can easily install Docker-CE, Docker-Compose, Portainer-CE, and NGinX Proxy manager by using this quick install script I created and maintain on Github. Just use the command:
To download the script to your desired host.
Change the permissios to make the script executable:
chmod +x ./install_docker_nproxyman.sh
and then run the script with the command:
When run, the script will prompt you to select your host operating system, then will ask you which bits of software you want to install.
Simply enter 'y' for each thing you want to install.
For instance, you may want to answer 'y' to NGinX Proxy Manager, and Portainer-CE if you don't already use these in your system.
At some point, you'll be asked for your super user (sudo) password as well.
Allow the script to complete installation.
At this point, you might want to log out and back in, as this will allow you to use the
docker-compose commands without the need of
sudo in front of them.
Installation of Radicale
You need to generate the hashed password for each user you want to have access to your Radicale install, so use the site below, or one that you know or trust, or the linux command line to generate a bcrypt password has with round 10.
Next, we need to create the folder structure for the radicale install. I use docker/< application name >. so in this case it would be
mkdir -p docker/radicale
Next, we need a "data" folder inside the "radicale" folder we just created, and we'll need a file named "users" inside the "data" folder.
mkdir -p docker/radicale/data
Inside the users file, you'll add a line for each user you want to have a separate calendar and login. The line should be setup like the following:
You would, put multiple lines for multiple users, like the following:
user1:bcrypt-hash-for-user1 user2:bcrypt-hash-for-user2 user3:bcrypt-hash-for-user3 user4:bcrypt-hash-for-user4
Save the file with CTRL + O, press Enter to confirm, and then exit the nano text editor with CTRL + X, then move back one directory level to the docker/radicale folder:
Now create a new text file called "docker-compose.yml"
Paste the following code block into the docker-compose.yml file.
# docker-compose.yml version: '3.7' services: app: image: cupcakearmy/radicale:1 container_name: rad2 restart: unless-stopped volumes: - ./data:/data ports: - 5232:5232
In the above file, change the left side of the port mapping
5232:5232 if needed. If you already have port 5232 in use on your host machine, change the left side port only, to an unused port, otherwise leave it as is.
Now, save the file with CTRL + O, then press Enter to confirm, and exit the text editor with CTRL + X.
Now we can run our docker-compose command, to bring up our Radicale application.
docker-compose up -d && docker-compose logs -f
The first part of the above command,
docker-compose up -d, pulls the latest image for Radicale from this repository, and starts it running in the background.
The second part of the command,
docker-compose logs -f, will then show us the output in the terminal as the application runs. I like to do this in order to see if any errors come up, and in this case it's useful when initially trying to login using your usernames and passwords to see if we have setup the values and file properly.
If you login with the username and password with no issues...well done. You may want to log out, and enter an invalid username and password combo, to ensure you are not passed into Radicale anyway.
Next, you can setup a Reverse proxy for your Radicale instance as well. Check out the video for how to do that.
Support my Channel and Content
Support my Channel and ongoing efforts through Patreon: