{"id":1480,"date":"2021-01-25T01:35:02","date_gmt":"2021-01-25T00:35:02","guid":{"rendered":"https:\/\/codedoneright.eu\/?page_id=1480"},"modified":"2021-02-03T11:34:32","modified_gmt":"2021-02-03T10:34:32","slug":"radicale-address-book-and-calendar-repository","status":"publish","type":"page","link":"https:\/\/codedoneright.eu\/?page_id=1480","title":{"rendered":"Radicale \u2013 address book and calendar repository"},"content":{"rendered":"\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/radicale.org\/assets\/logo.svg\" alt=\"radicale logo\" width=\"100\" height=\"150\"\/><figcaption><a href=\"http:\/\/radicale.org\" target=\"_blank\" rel=\"noreferrer noopener\">radicale.org<\/a><\/figcaption><\/figure><\/div>\n\n\n\n<p>Radicale is a daemon, which allows for storing and sharing contacts, calendars, tasks and events over the network between multiple devices. It uses CalDAV and CardDAV protocols, although it is not 100% compliant with them. It is, however, compatible enough so that any application using those protocols can make use of Radicale&#8217;s capabilities. Additionally it does not require a web server.<\/p>\n\n\n\n<p>If you would like to deploy calendar and address book service on your server then Radicale is a solid choice.  Please note that Radicale only provides a server service with no client software. There is no other functionality to it, although this is just the right amount.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Required<\/h4>\n\n\n\n<ul><li>python3-bcrypt<\/li><li>python3-passlib<\/li><li>CalDAV and CardDAV compatible client<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Recommended<\/h4>\n\n\n\n<ul><li>apache2-utils<\/li><li><a href=\"https:\/\/codedoneright.eu\/?page_id=583\" target=\"_blank\" rel=\"noreferrer noopener\">SSL Certificate<\/a><\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Installation<\/h4>\n\n\n\n<p>Radicale daemon package can be found in repository. Just issue the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install radicale python3-bcrypt python3-passlib<\/code><\/pre>\n\n\n\n<p><strong>Caution!<\/strong> Without <em>python3-bcrypt<\/em> and <em>python3-passlib<\/em> modules your passwords can only be stored in plain text. Additionally, misconfigured server will not be accessible.<\/p>\n\n\n\n<p><strong>Note!<\/strong> Current Debian repositories contain version 2.1. If you are looking for additional configuration, then make sure you search for the right version.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Opening ports for external access<\/h4>\n\n\n\n<p>After the installation remember to open port for Radicale on your server if you are using a firewall. Radicale uses port 5232<\/p>\n\n\n\n<p>If you are using UFW then just issue the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo ufw allow 5232<\/code><\/pre>\n\n\n\n<p><strong>Caution!<\/strong> If you want to access your database from the internet then remember about port forwarding as well.<\/p>\n\n\n\n<p><strong>Caution!<\/strong> Before opening access from the internet remember about making sure that your database is protected by encryption and authentication method is set for bcrypt. More on that later. <\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Initial configuration<\/h4>\n\n\n\n<p>By default Radicale binds only to the server it runs on and does not allow for external access. Additionally, it is configured to accept any username\/password pair. To change that, you have to edit the config<\/p>\n\n\n\n<p>Run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/radicale\/config<\/code><\/pre>\n\n\n\n<p>Now take a look at the example config below, this is the minimum required for proper operation as a server<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;server]\nhosts = 0.0.0.0:5232\n\n&#91;encoding]\n\n&#91;auth]\ntype = htpasswd\n\nhtpasswd_filename = \/etc\/radicale\/users\nhtpasswd_encryption = bcrypt\n\n&#91;rights]\ntype = owner_only\nfile = \/etc\/radicale\/rights\n\n&#91;storage]\n\n&#91;web]\n\n&#91;logging]\n\n&#91;headers]<\/code><\/pre>\n\n\n\n<p>Now for some explanation of options<\/p>\n\n\n\n<ul><li><strong>hosts<\/strong> \u2013 default value of <em>127.0.0.0:5232<\/em> means <em>localhost<\/em>, to access your database from outside change it to <em>0.0.0.0:5232<\/em><\/li><li><strong>type<\/strong> \u2013 in <em>[auth]<\/em> section defines the type of authentication mechanism, <em>htpasswd<\/em> is the preferred method, unless you know you need a different one, <em>none<\/em> means no authentication and anyone can access the database<\/li><li><strong>htpasswd_filename<\/strong> \u2013 defines the filepath for the file with hashed username \/ password pairs, the file can be stored anywhere<\/li><li><strong>htpasswd_encryption<\/strong> \u2013 defines the encryption type for passwords in the <em>users<\/em> file, <em>bcrypt<\/em> is the most secure<\/li><li><strong>type<\/strong> \u2013 in <em>[rights]<\/em> section defines read rights, <em>owner_only<\/em> means that only the owner of a given database will be able to read it, this is the recommended setting<\/li><li><strong>file<\/strong> \u2013 in <em>[rights]<\/em>,use default file<\/li><\/ul>\n\n\n\n<p>Other settings can be safely omitted and ignored. <\/p>\n\n\n\n<p>You can replace the default config with the one above, however, back up the original config before doing so with the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo cp \/etc\/radicale\/config \/etc\/radicale\/config_old<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>update-rc.d radicale enable<\/code><\/pre>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Enabling encryption<\/h4>\n\n\n\n<p>If you are deploying Radicale on a production server that has a valid certificate, then you can use it to establish a secure and encrypted connection.<\/p>\n\n\n\n<p>Open Radicale&#8217;s config file again with<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/radicale\/config<\/code><\/pre>\n\n\n\n<p>and add the following entries to <em>[server]<\/em> section<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ssl = True\ncertificate = \/etc\/ssl\/certs\/ssl-cert-snakeoil.pem\nkey = \/etc\/ssl\/private\/ssl-cert-snakeoil.key\n<\/code><\/pre>\n\n\n\n<p>Remember to change paths for certificate and the public key.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Writing log to file<\/h4>\n\n\n\n<p>By default Radicale outputs logs to <em>stderr<\/em>. In order to have actual log files you need to amend <em>logging<\/em> file and make sure that <em>config <\/em>file points to it.<\/p>\n\n\n\n<p> Add the following to <em>[logging]<\/em> section of <em>config<\/em> file<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>config = \/etc\/radicale\/logging\nmask_passwords = True<\/code><\/pre>\n\n\n\n<p>This simply points Radicale to file describing logging convention and masks passwords in log files. <\/p>\n\n\n\n<p>Afterwards amend <em>logging<\/em> file using<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo nano \/etc\/radicale\/logging<\/code><\/pre>\n\n\n\n<p>and replace contents with the following<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;loggers]\nkeys = root\n\n&#91;handlers]\nkeys = file\n\n&#91;formatters]\nkeys = full\n\n&#91;logger_root]\n# Change this to DEBUG for higher verbosity.\n# Change this to WARNING to see only warnings\nlevel = INFO\nhandlers = file\n\n&#91;handler_file]\nclass = handlers.TimedRotatingFileHandler\nargs = ('\/var\/log\/radicale\/radicale.log', 'midnight', 1, 7)\nformatter = full\n\n&#91;formatter_full]\nformat = %(asctime)s - &#91;%(thread)x] %(levelname)s: %(message)s<\/code><\/pre>\n\n\n\n<p>Now Radicale will write its log to a file in a standard location. Additionally this configuration rotates the log at the end of the week.<\/p>\n\n\n\n<p>Additionally, verbosity of logging level can be adjusted by replacing <em>level<\/em> argument with<\/p>\n\n\n\n<ul><li><strong>WARNING<\/strong> \u2013 log will show only warnings<\/li><li><strong>INFO<\/strong> \u2013 log will show usual amount of information<\/li><li><strong>DEBUG<\/strong> \u2013 useful only if you are experiencing problems<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Creating users<\/h4>\n\n\n\n<p>Radicale is a multi-user server, so you can setup as many users as you like. Each can have any number of address books and calendars at their disposal.<\/p>\n\n\n\n<p>As noted above, Radicale uses a file with hashed user-password pairs. The file can be stored anywhere, but for security reasons it should not be accessible to ordinary users.<\/p>\n\n\n\n<p><em>htpasswd<\/em> is a part of <em>apache2-utils<\/em> package. If you do not have it install it now.<\/p>\n\n\n\n<p>Configuration above assumes the use of <em>htpasswd<\/em> for authentication, usage is quite easy and intuitive, take a look at the syntax<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>htpasswd &#91;-options] &#91;path] &#91;user] &#91;password]<\/code><\/pre>\n\n\n\n<ul><li><strong>[-options] <\/strong>\u2013 the only two options that you need now are<ul><li><strong>-B<\/strong> \u2013 Force bcrypt encryption of the password (very secure)<\/li><li><strong>-c<\/strong> \u2013 Create a new file<\/li><\/ul><\/li><li><strong>[path] <\/strong>\u2013 absolute path for the file with user\/password pairs<\/li><li><strong>[user]<\/strong> \u2013 username<\/li><li><strong>[password]<\/strong> \u2013 <em>htpasswd<\/em> allows for providing the password as attribute if you add <strong>-b<\/strong> option, however, for security reasons this should not be done<\/li><\/ul>\n\n\n\n<p><strong>Caution!<\/strong> On the first run use <strong>-c<\/strong> option to create the file. It is a normal plain text file, so it can be created with <em>touch<\/em> command as well, <em><strong>-c<\/strong><\/em> just streamlines the process.<\/p>\n\n\n\n<p><strong>Caution!<\/strong> <strong>-c<\/strong> option will substitute any data in the specified file. Use only to create the initial file.<\/p>\n\n\n\n<p>In order to create the first user run the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo htpasswd -cB \/etc\/radicale\/users $USER<\/code><\/pre>\n\n\n\n<p>Remember to substitute <em>$USER<\/em> variable with actual user name.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Starting the service<\/h4>\n\n\n\n<p>Radicale should automatically start as a service, however, if it happens that it did not start issue the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service radicale enable<\/code><\/pre>\n\n\n\n<p>Additionally, after any changes to config you should restart the service with the following command<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service radicale restart<\/code><\/pre>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Connecting to Radicale WebUI<\/h4>\n\n\n\n<p>In order to access Radicale&#8217;s web interface navigate to the following address<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>your.server.ip.address:5232<\/code><\/pre>\n\n\n\n<p>You will be greeted with the following screen<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"265\" height=\"269\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-11-08-43.png\" alt=\"Radicale login screen\" class=\"wp-image-1510\"\/><figcaption>Radicale login screen<\/figcaption><\/figure><\/div>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Creating calendar or address book<\/h4>\n\n\n\n<p>The process of creating a calendar or an address book is not complicated at all, however, you have to do it via web interface. Developers discourage manual creation of files.<\/p>\n\n\n\n<p>Provide credentials of a user created in the previous step and click <em>Next<\/em>, you will be taken to the <em>Collections<\/em> screen<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"361\" height=\"284\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-13-11.png\" alt=\"Radicale collections screen\" class=\"wp-image-1511\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-13-11.png 361w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-13-11-300x236.png 300w\" sizes=\"(max-width: 361px) 100vw, 361px\" \/><figcaption>Radicale collections screen<\/figcaption><\/figure><\/div>\n\n\n\n<p>The process is very straightforward. Simply click on <em>Create new addressbook or calendar<\/em> and you will be taken to the following screen<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-02.png\" alt=\"Create new collection screen\" class=\"wp-image-1512\" width=\"431\" height=\"390\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-02.png 575w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-02-300x271.png 300w\" sizes=\"(max-width: 431px) 100vw, 431px\" \/><figcaption>Create new collection screen<\/figcaption><\/figure><\/div>\n\n\n\n<p>Now fill out the form for your new collection<\/p>\n\n\n\n<ul><li><strong>Title<\/strong> \u2013 required, provide a title for your new collection<\/li><li><strong>Description<\/strong> \u2013 optional field<\/li><li><strong>Type<\/strong> \u2013 required, select what type of collection you want to create, there are two main options that you should focus on right now<ul><li><strong>addressbook<\/strong> \u2013 CardDAV compatible address book<\/li><li><strong>calendar, journal and tasks<\/strong> \u2013 CalDAV compatible calendar<\/li><\/ul><\/li><li><strong>Color<\/strong> \u2013 optional field<\/li><\/ul>\n\n\n\n<p>After filling out the form simply click <em>Create<\/em> and you will be taken back to the <em>Collections<\/em> screen.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Data for content manager<\/h4>\n\n\n\n<p>Your new collection is ready and you can connect to the server via your favorite content manager. However, remember that your content manager has to support CalDAV or CardDAV standards.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-31.png\" alt=\"New collection\" class=\"wp-image-1517\" width=\"424\" height=\"260\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-31.png 847w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-31-300x184.png 300w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-14-14-31-768x471.png 768w\" sizes=\"(max-width: 424px) 100vw, 424px\" \/><figcaption>New collection<\/figcaption><\/figure><\/div>\n\n\n\n<ul><li><strong>test_cal [calendar, journal and tasks]<\/strong> \u2013 name and type of your collection<\/li><li><strong>URL<\/strong> \u2013 address to your collection on the server, when asked for location provide this address<\/li><li><strong>Edit<\/strong> \u2013 allows you to change the name, description, type and color of the collection. This action does not modify any collection data<\/li><li><strong>Delete<\/strong> \u2013 deletes the collection, this action cannot be undone<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Adding a calendar to Thunderbird (native)<\/h4>\n\n\n\n<p>Now that Radicale is running and your new collection is ready, you can add the calendar to Thunderbird mail client.<\/p>\n\n\n\n<p><strong>Note!<\/strong> If your Thunderbird version (68 and below) does not have calendar tab, install add-on called <em>Lightning<\/em>.<\/p>\n\n\n\n<ul><li>Open calendar tab<\/li><li>Right click below the default <em>Home<\/em> calendar on the left hand side and select <em>New Calendar&#8230;<\/em><\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-15-48-34-1024x551-1.png\" alt=\"Thunderbird callendar\" class=\"wp-image-1608\" width=\"512\" height=\"258\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-15-48-34-1024x551-1.png 1024w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-15-48-34-1024x551-1-300x151.png 300w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-15-48-34-1024x551-1-768x387.png 768w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><figcaption>Thunderbird callendar<\/figcaption><\/figure>\n\n\n\n<ul><li>Select <em>On the Network<\/em> and click <em>Next<\/em><\/li><li>Now provide<ul><li><strong>Format<\/strong> \u2013 CalDAV<\/li><li><strong>Username<\/strong> \u2013 username for Radicale<\/li><li><strong>Location<\/strong> \u2013 full URL for that user&#8217;s collection <\/li><li><strong>Offline Support<\/strong> \u2013 leave checked<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-25-16.png\" alt=\"Location of callendar\" class=\"wp-image-1523\" width=\"439\" height=\"356\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-25-16.png 585w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-25-16-300x244.png 300w\" sizes=\"(max-width: 439px) 100vw, 439px\" \/><\/figure><\/div>\n\n\n\n<ul><li>Click <em>Next<\/em><\/li><li>Now provide<ul><li><strong>Name<\/strong> \u2013 a name for your calendar, will be visible only on this PC<\/li><li><strong>Email<\/strong> \u2013 chose local email to associate the calendar with<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-30-15.png\" alt=\"Further callendar details\" class=\"wp-image-1524\" width=\"438\" height=\"357\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-30-15.png 584w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-30-15-300x245.png 300w\" sizes=\"(max-width: 438px) 100vw, 438px\" \/><\/figure><\/div>\n\n\n\n<ul><li>Click <em>Next<\/em><\/li><li>If your authentication method requires a password, Thunderbird will ask for it now<ul><li>You can ask Password Manager to remember this password<\/li><li>Click <em>OK<\/em><\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-39-15.png\" alt=\"Authentication\" class=\"wp-image-1525\" width=\"382\" height=\"115\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-39-15.png 764w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-39-15-300x90.png 300w\" sizes=\"(max-width: 382px) 100vw, 382px\" \/><\/figure><\/div>\n\n\n\n<ul><li>Finalize the setup by clicking <em>Finish<\/em><\/li><\/ul>\n\n\n\n<p>You have successfully subscribed to Radicale calendar on your server. However, for now it is empty. You can test if all went well by adding an event or a reminder.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"957\" height=\"647\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-56-14.png\" alt=\"Event creation\" class=\"wp-image-1528\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-56-14.png 957w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-56-14-300x203.png 300w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-23-16-56-14-768x519.png 768w\" sizes=\"(max-width: 957px) 100vw, 957px\" \/><figcaption>Event creation<\/figcaption><\/figure><\/div>\n\n\n\n<ul><li>Navigate to <em>Events and Tasks<\/em> in Menu Bar<\/li><li>Select <em>New Event (Ctrl+I)<\/em><\/li><li>Fill out the form as desired<\/li><li>Make sure to select your Radicale calendar<\/li><li>You can invite other people by clicking on <em>Invite Attendees<\/em><ul><li>In a separate window provide email addresses<\/li><li>Each attendee will receive an email with event details<\/li><\/ul><\/li><li>When you are done simply click on <em>Save and Close<\/em><\/li><li>Your newly created event will show in your calendar<\/li><\/ul>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Adding address book and calendar to Thunderbird (add-on)<\/h4>\n\n\n\n<p>Thunderbird does not utilize CardDEV protocol by default. In other words, you need to install two add-ons called <em>Provider for CalDAV &amp; CardDAV<\/em> and <em>TbSync<\/em>. Former provides a CardDAV and CalDAV synchronization support, and the latter adds a synchronization mechanism.<\/p>\n\n\n\n<h6 class=\"wp-block-heading\">Installing add-ons<\/h6>\n\n\n\n<ul><li>First, navigate to <em>Tools<\/em> in <em>Menu Bar<\/em><\/li><li>Then <em>Add-ons<\/em><\/li><li>Inside <em>Find more extensions<\/em> searchbox put &#8220;CardDAV&#8221; like so and press Enter<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"674\" height=\"108\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-56-46.png\" alt=\"Add-ons searchbox\" class=\"wp-image-1591\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-56-46.png 674w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-56-46-300x48.png 300w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-56-46-670x108.png 670w\" sizes=\"(max-width: 674px) 100vw, 674px\" \/><\/figure><\/div>\n\n\n\n<ul><li>Now, find the following two extensions, click on <em>Add to Thunderbird<\/em> and confirm by clicking <em>Add<\/em> button<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"125\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-59-45.png\" alt=\"TbSync add-on\" class=\"wp-image-1592\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-59-45.png 720w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-59-45-300x52.png 300w\" sizes=\"(max-width: 720px) 100vw, 720px\" \/><figcaption>TbSync add-on<\/figcaption><\/figure><\/div>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"724\" height=\"137\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-57-19.png\" alt=\"Provider for CalDAV &amp; CardDAV\" class=\"wp-image-1593\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-57-19.png 724w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-14-57-19-300x57.png 300w\" sizes=\"(max-width: 724px) 100vw, 724px\" \/><figcaption>Provider for CalDAV &amp; CardDAV<\/figcaption><\/figure><\/div>\n\n\n\n<ul><li>After the installation restart Thunderbird<\/li><\/ul>\n\n\n\n<h6 class=\"wp-block-heading\">Synchronising with the server<\/h6>\n\n\n\n<ul><li>Now, navigate to <em>Edit<\/em> in <em>Menu Bar<\/em>, and select <em>Synchronisation Settings (TbSync)<\/em>, <em>TbSync account manager<\/em> window will open<\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-03-21-2.png\" alt=\"TbSync account manager\" class=\"wp-image-1594\" width=\"568\" height=\"493\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-03-21-2.png 757w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-03-21-2-300x260.png 300w\" sizes=\"(max-width: 568px) 100vw, 568px\" \/><figcaption>TbSync account manager<\/figcaption><\/figure><\/div>\n\n\n\n<ul><li>Select <em>Account actions<\/em>, next <em>Add new account<\/em>, and then <em>CalDAV &amp; CardDAV<\/em><\/li><li>Additional window will open, select <em>Manual configuration<\/em> from the list and click <em>Next<\/em><ul><li>The supported list includes Google, Yahoo! and iCloud should you wish to add those as well, you can do that at a later time<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"499\" height=\"635\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-04-23.png\" alt=\"TbSync profile selection\" class=\"wp-image-1595\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-04-23.png 499w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-24-15-04-23-236x300.png 236w\" sizes=\"(max-width: 499px) 100vw, 499px\" \/><figcaption>TbSync profile selection<\/figcaption><\/figure><\/div>\n\n\n\n<ul><li>Now, provide all information needed for access to your Radicale account and addresses of calendars and address books<ul><li>TbSync assumes you have only one CalDAV &amp; CardDAV collection, you can add more collections later using the same credentials, but different links to a collection<\/li><\/ul><\/li><li><strong>Account name<\/strong> \u2013 name that will be used for address book and callendar <\/li><li><strong>User name<\/strong> \u2013 Radicale user name<\/li><li><strong>Password<\/strong> \u2013 Radicale user password<\/li><li><strong>CalDAV server address<\/strong> \u2013 address to your callendar (URL field from Radicale&#8217;s WebUI)<\/li><li><strong>CardDAV server address<\/strong> \u2013 address to your address book (URL field from Radicale&#8217;s WebUI)<\/li><li>After you are done, click <em>Next<\/em><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"499\" height=\"637\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-38-48.png\" alt=\"Adding account to TbSync\" class=\"wp-image-1598\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-38-48.png 499w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-38-48-235x300.png 235w\" sizes=\"(max-width: 499px) 100vw, 499px\" \/><\/figure><\/div>\n\n\n\n<ul><li>The following window is just a confirmation that credentials and links provided have been verified successfully, simply click on <em>Finish<\/em><\/li><li>Your account has been added, however, by default it is not synchronized<\/li><li>Select the account on the left hand side of the window and<ul><li>In <em>Synchronization status<\/em> tab check <em>Enable and synchronize this account<\/em><\/li><li>Below that a new list should appear with your callendar and address book that you set up on the server via WebUI, check fields next to them <\/li><li>TbSync will alert you that your account is out of sync<\/li><li>Set the <em>Periodic synchronization<\/em> for whatever is desired, 10 minutes or an hour should suffice<\/li><li>Click on <em>Synchronize now<\/em><\/li><li>A green check mark should appear next to your account name, you can close the window now<\/li><\/ul><\/li><\/ul>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-54-43.png\" alt=\"Fully set up account\" class=\"wp-image-1601\" width=\"569\" height=\"489\" srcset=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-54-43.png 758w, https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-54-43-300x258.png 300w\" sizes=\"(max-width: 569px) 100vw, 569px\" \/><figcaption>Fully set up account<\/figcaption><\/figure><\/div>\n\n\n\n<h6 class=\"wp-block-heading\">Accessing your callendar and address book<\/h6>\n\n\n\n<p>Now that your callendar and address book have been properly set up you can start using them to your heart&#8217;s content. In order to access them simply go to <em>Lightning<\/em> callendar or click on <em>Address Book<\/em> in Thunderbird&#8217;s main window. You should see your new items there<\/p>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-layout-1 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"230\" height=\"104\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-52-36.png\" alt=\"New address book\" class=\"wp-image-1602\"\/><figcaption>New address book<\/figcaption><\/figure><\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"231\" height=\"75\" src=\"https:\/\/codedoneright.eu\/wp-content\/uploads\/Screenshot-from-2021-01-25-00-53-03.png\" alt=\"New callendar\" class=\"wp-image-1603\"\/><figcaption>New callendar<\/figcaption><\/figure><\/div>\n<\/div>\n<\/div>\n\n\n\n<p>You can test if all works well by adding some dummy entries and syncing with another device. <\/p>\n\n\n\n<p>Removing a callendar or an address book in client software, for example Thunderbird, will have no effect on their content. You will only remove access, database will remain on the server.<\/p>\n\n\n\n<p>In order to remove the database you have to navigate to<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/var\/lib\/radicale\/collections\/collection-root<\/code><\/pre>\n\n\n\n<p>There you can delete whole user folders or navigate further to remove collections one by one, or even single addressbook entries. This is for educational purposes only as it is fairly easier to amend a contact list via client software or delete whole collections from WebUI.<\/p>\n<\/div><\/div>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Troubleshooting<\/h4>\n\n\n\n<p><strong>Radicale is not accessible from local<em>IP:5232<\/em><\/strong><\/p>\n\n\n\n<p>Check if the service is running, and if so, does it report any errors with<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo service radicale status<\/code><\/pre>\n\n\n\n<p>Most likely culprit is the authentication method. Make sure that your config is correct and that you are using <em>htpasswd<\/em>.<\/p>\n\n\n\n<div style=\"height:56px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h4 class=\"wp-block-heading\">Conclusion<\/h4>\n\n\n\n<p>If you want a BigTech separated contact database or you are setting up a small business, non-government entity or a large guild server then this just might be the thing for you. Remember that it is free. Moreover, it is always better to have an independent service, and any invitations sent via CalDEV protocol are compatible with Google calendar. As always, the question is whether you actually need it or not. Having a fall-back option is always a good idea, even if never used, it provides a peace of mind.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Radicale is a daemon, which allows for storing and sharing contacts, calendars, tasks and events over the network between multiple devices. It uses CalDAV and CardDAV protocols, although it is not 100% compliant with them. It is, however, compatible enough&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"parent":483,"menu_order":65,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Radicale \u2013 address book and calendar repository &#8212; Code Done Right!<\/title>\n<meta name=\"description\" content=\"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codedoneright.eu\/?page_id=1480\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Radicale \u2013 address book and calendar repository &#8212; Code Done Right!\" \/>\n<meta name=\"twitter:description\" content=\"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/radicale.org\/assets\/logo.svg\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480\",\"url\":\"https:\/\/codedoneright.eu\/?page_id=1480\",\"name\":\"Radicale \u2013 address book and calendar repository &#8212; Code Done Right!\",\"isPartOf\":{\"@id\":\"https:\/\/codedoneright.eu\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage\"},\"image\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage\"},\"thumbnailUrl\":\"https:\/\/radicale.org\/assets\/logo.svg\",\"datePublished\":\"2021-01-25T00:35:02+00:00\",\"dateModified\":\"2021-02-03T10:34:32+00:00\",\"description\":\"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started\",\"breadcrumb\":{\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/codedoneright.eu\/?page_id=1480\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage\",\"url\":\"https:\/\/radicale.org\/assets\/logo.svg\",\"contentUrl\":\"https:\/\/radicale.org\/assets\/logo.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/codedoneright.eu\/?page_id=1480#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/codedoneright.eu\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Server features\",\"item\":\"https:\/\/codedoneright.eu\/?page_id=483\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Radicale \u2013 address book and calendar repository\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/codedoneright.eu\/#website\",\"url\":\"https:\/\/codedoneright.eu\/\",\"name\":\"Code Done Right!\",\"description\":\"Raspberry Pi server guides\",\"publisher\":{\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/codedoneright.eu\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568\",\"name\":\"CodeDoneRight\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png\",\"contentUrl\":\"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png\",\"width\":120,\"height\":120,\"caption\":\"CodeDoneRight\"},\"logo\":{\"@id\":\"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/codedoneright.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Radicale \u2013 address book and calendar repository &#8212; Code Done Right!","description":"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codedoneright.eu\/?page_id=1480","twitter_card":"summary_large_image","twitter_title":"Radicale \u2013 address book and calendar repository &#8212; Code Done Right!","twitter_description":"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started","twitter_image":"https:\/\/radicale.org\/assets\/logo.svg","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/codedoneright.eu\/?page_id=1480","url":"https:\/\/codedoneright.eu\/?page_id=1480","name":"Radicale \u2013 address book and calendar repository &#8212; Code Done Right!","isPartOf":{"@id":"https:\/\/codedoneright.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage"},"image":{"@id":"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage"},"thumbnailUrl":"https:\/\/radicale.org\/assets\/logo.svg","datePublished":"2021-01-25T00:35:02+00:00","dateModified":"2021-02-03T10:34:32+00:00","description":"Radicale \u2013 setup your very own calendar and address book services that are accessible from any place in the world! This tutorial will help you get started","breadcrumb":{"@id":"https:\/\/codedoneright.eu\/?page_id=1480#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codedoneright.eu\/?page_id=1480"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codedoneright.eu\/?page_id=1480#primaryimage","url":"https:\/\/radicale.org\/assets\/logo.svg","contentUrl":"https:\/\/radicale.org\/assets\/logo.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/codedoneright.eu\/?page_id=1480#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codedoneright.eu\/"},{"@type":"ListItem","position":2,"name":"Server features","item":"https:\/\/codedoneright.eu\/?page_id=483"},{"@type":"ListItem","position":3,"name":"Radicale \u2013 address book and calendar repository"}]},{"@type":"WebSite","@id":"https:\/\/codedoneright.eu\/#website","url":"https:\/\/codedoneright.eu\/","name":"Code Done Right!","description":"Raspberry Pi server guides","publisher":{"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codedoneright.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/50378701e349dbd5d40888bc5b532568","name":"CodeDoneRight","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/","url":"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png","contentUrl":"https:\/\/codedoneright.eu\/wp-content\/uploads\/www_icon.png","width":120,"height":120,"caption":"CodeDoneRight"},"logo":{"@id":"https:\/\/codedoneright.eu\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/codedoneright.eu"]}]}},"_links":{"self":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/1480"}],"collection":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1480"}],"version-history":[{"count":55,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/1480\/revisions"}],"predecessor-version":[{"id":1643,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/1480\/revisions\/1643"}],"up":[{"embeddable":true,"href":"https:\/\/codedoneright.eu\/index.php?rest_route=\/wp\/v2\/pages\/483"}],"wp:attachment":[{"href":"https:\/\/codedoneright.eu\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}