for anyone still trying to install a calendar plugin, i got the kolab calendar plugin installed on the central webmail server.
cd /tmp
git clone https://git.kolab.org/diffusion/RPK/roundcubemail-plugins-kolab.git
cd /<path-to-roundcube>/plugins
cp -r /tmp/roundcubemail-plugins-kolab/plugins/calendar .
cp -r /tmp/roundcubemail-plugins-kolab/plugins/libcalendaring .
cp -r /tmp/roundcubemail-plugins-kolab/plugins/libkolab .
i did the above as root, so ran chown -R webmail_1:webmail_1 on the 3 new plugin folders..
you can SU to the webmail user instead, then you won't need to chown the folders
you definitely need to 'su webmail_1' for this next part...
su webmail_1
cd /var/www/<ID>/public_html/
bin/initdb.sh --dir=plugins/calendar/drivers/database/SQL
for the next part, if you follow the kolab instructions it says to run
lessc --relative-urls -x plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css
but it doesn't find it like that, so need to provide the full path, and then it complains about the relative-urls and compression, but the following worked instead..
/usr/share/nodejs/less/bin/lessc --rewrite-urls=all plugins/libkolab/skins/elastic/libkolab.less > plugins/libkolab/skins/elastic/libkolab.min.css
edit config/config.inc.php, adding the calendar to the list of plugins:
$config['plugins'] = array(
'enhance_login',
'calendar',
this get the kolab calendar working, as far i can tell so far (only installed it late yesterday), it works fully, apart from sending meeting invites, which continually displays a 'saving data' message and throws the error:
[03-Dec-2025 13:00:57 UTC] PHP Fatal error: Uncaught Error: Class "Sabre\VObject\Property\Text" not found in /var/www/<ID>/public_html/plugins/libcalendaring/lib/libcalendaring_vcalendar.php:1577
this was fixed with
su webmail_1 (if not already)
cd /var/www/<ID>/public_html/
COMPOSER_ALLOW_SUPERUSER=1 composer require sabre/vobject "4.0"
*note that i set the system webmail url as webmail.domain.tld, so the user:group is webmail_1, if you used a different subdomain the user you SU to will have a different name.