f7cloud_client/core/doc/admin/groupware/calendar.html
root 8b6a0139db f7cloud_client
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-17 22:59:26 +00:00

510 lines
39 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html class="writer-html5" lang="en" data-content_root="../">
<head>
<meta charset="utf-8" />
<meta name="readthedocs-addons-api-version" content="1"><meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Calendar / CalDAV &mdash; F7cloud latest Administration Manual latest documentation</title>
<link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=b86133f3" />
<link rel="stylesheet" type="text/css" href="../_static/css/theme.css?v=e59714d7" />
<link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" />
<link rel="stylesheet" type="text/css" href="../_static/custom.css?v=8ff6e0db" />
<link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/general.css?v=c0a7eb24" />
<link rel="stylesheet" type="text/css" href="../_static/dark_mode_css/dark.css?v=70edf1c7" />
<script src="../_static/jquery.js?v=5d32c60e"></script>
<script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script>
<script src="../_static/documentation_options.js?v=f4332903"></script>
<script src="../_static/doctools.js?v=9bcbadda"></script>
<script src="../_static/sphinx_highlight.js?v=dc90522c"></script>
<script src="../_static/clipboard.min.js?v=a7894cd8"></script>
<script src="../_static/copybutton.js?v=f281be69"></script>
<script src="../_static/dark_mode_js/default_light.js?v=c2e647ce"></script>
<script src="../_static/dark_mode_js/theme_switcher.js?v=358d3910"></script>
<script src="../_static/js/theme.js"></script>
<script src="../_static/js/versions.js"></script>
<link rel="index" title="Index" href="../genindex.html" />
<link rel="search" title="Search" href="../search.html" />
<link rel="next" title="Contacts / CardDAV" href="contacts.html" />
<link rel="prev" title="Groupware" href="index.html" />
</head>
<body class="wy-body-for-nav">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side">
<div class="wy-side-scroll">
<div class="wy-side-nav-search" >
<a href="../contents.html">
<img src="../_static/logo-white.png" class="logo" alt="Logo"/>
</a>
<div class="switch-menus">
<div class="version-switch"></div>
<div class="language-switch"></div>
</div>
<div role="search">
<form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" aria-label="Search docs" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
</div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
<p class="caption" role="heading"><span class="caption-text">Getting Started</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../index.html">Introduction</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_schedule.html">Maintenance and release schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../gdpr/index.html">GDPR-compliance</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Release notes</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../release_notes/index.html">Critical changes</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Installation</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../installation/index.html">Installation and server configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_database/index.html">Database configuration</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Configuration</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../configuration_server/index.html">F7cloud configuration</a></li>
<li class="toctree-l1"><a class="reference internal" href="../occ_command.html">Using the occ command</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/index.html">Reference management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../webhook_listeners/index.html">Webhook Listeners</a></li>
<li class="toctree-l1"><a class="reference internal" href="../windmill_workflows/index.html">Windmill Workflows</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Files</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../configuration_files/index.html">File sharing and management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../file_workflows/index.html">Flow</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration_mimetypes/index.html">Mimetypes management</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Apps</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../apps_management.html">Apps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../exapps_management/index.html">ExApps management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../ai/index.html">Artificial Intelligence</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Users</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../configuration_user/index.html">User management</a></li>
<li class="toctree-l1"><a class="reference internal" href="../desktop/index.html">Desktop Clients</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Groupware</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Groupware</a><ul class="current">
<li class="toctree-l2 current"><a class="current reference internal" href="#">Calendar / CalDAV</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#calendar-server-settings">Calendar server settings</a></li>
<li class="toctree-l3"><a class="reference internal" href="#events">Events</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#hide-export-buttons">Hide export buttons</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#invitations">Invitations</a></li>
<li class="toctree-l3"><a class="reference internal" href="#birthday-calendar">Birthday calendar</a></li>
<li class="toctree-l3"><a class="reference internal" href="#reminder-notifications">Reminder notifications</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#background-jobs">Background jobs</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#event-alarm-types">Event alarm types</a></li>
<li class="toctree-l3"><a class="reference internal" href="#freebusy">FreeBusy</a></li>
<li class="toctree-l3"><a class="reference internal" href="#subscriptions">Subscriptions</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#custom-public-calendars">Custom public calendars</a></li>
<li class="toctree-l4"><a class="reference internal" href="#refresh-rate">Refresh rate</a></li>
<li class="toctree-l4"><a class="reference internal" href="#allow-subscriptions-on-local-network">Allow subscriptions on local network</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#federated-calendar-shares">Federated calendar shares</a></li>
<li class="toctree-l3"><a class="reference internal" href="#trash-bin">Trash bin</a></li>
<li class="toctree-l3"><a class="reference internal" href="#resources-and-rooms">Resources and rooms</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#known-backends">Known backends</a></li>
</ul>
</li>
<li class="toctree-l3"><a class="reference internal" href="#rate-limits">Rate limits</a></li>
<li class="toctree-l3"><a class="reference internal" href="#example-event">Example event</a></li>
<li class="toctree-l3"><a class="reference internal" href="#data-retention">Data retention</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#sync-tokens">Sync tokens</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="contacts.html">Contacts / CardDAV</a></li>
<li class="toctree-l2"><a class="reference internal" href="mail.html">Mail</a></li>
<li class="toctree-l2"><a class="reference internal" href="out_of_office.html">Out-of-office feature</a></li>
<li class="toctree-l2"><a class="reference internal" href="troubleshooting.html">Troubleshooting</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Office</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../office/index.html">Office</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Maintenance</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../maintenance/index.html">Maintenance</a></li>
<li class="toctree-l1"><a class="reference internal" href="../issues/index.html">Issues and troubleshooting</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">Links</span></p>
<ul>
<li class="toctree-l1"><a class="reference external" href="https://help.f7cloud.com/">Community Help Forum</a></li>
<li class="toctree-l1"><a class="reference external" href="https://docs.f7cloud.com/">User Manuals</a></li>
<li class="toctree-l1"><a class="reference external" href="https://docs.f7cloud.com/">Developer Manuals</a></li>
<li class="toctree-l1"><a class="reference external" href="https://f7cloud.com/install/">Download</a></li>
<li class="toctree-l1"><a class="reference external" href="https://apps.f7cloud.com">App Store</a></li>
<li class="toctree-l1"><a class="reference external" href="https://help.f7cloud.com/t/translation-knowledge-valid-for-the-entire-f7cloud-project-wiki/51550">Translations</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/f7cloud/">GitHub</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/f7cloud/server/wiki/Maintenance-and-Release-Schedule">Supported versions</a></li>
<li class="toctree-l1"><a class="reference external" href="https://f7cloud.com/enterprise/">F7cloud Enterprise</a></li>
<li class="toctree-l1"><a class="reference external" href="https://github.com/f7cloud/server/blob/master/COPYING-README">License</a></li>
<li class="toctree-l1"><a class="reference external" href="https://f7cloud.com/">F7cloud GmbH</a></li>
</ul>
</div>
</div>
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" >
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="../contents.html">F7cloud latest Administration Manual</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content style-external-links">
<div role="navigation" aria-label="Page navigation">
<ul class="wy-breadcrumbs">
<li><a href="../contents.html" class="icon icon-home" aria-label="Home"></a></li>
<li class="breadcrumb-item"><a href="index.html">Groupware</a></li>
<li class="breadcrumb-item active">Calendar / CalDAV</li>
<li class="wy-breadcrumbs-aside">
<a href="https://github.com/f7cloud/documentation/edit/master/admin_manual/groupware/calendar.rst" class="fa fa-github"> Edit on GitHub</a>
</li>
</ul>
<hr/>
</div>
<div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
<div itemprop="articleBody">
<section id="calendar-caldav">
<h1>Calendar / CalDAV<a class="headerlink" href="#calendar-caldav" title="Link to this heading"></a></h1>
<section id="calendar-server-settings">
<h2>Calendar server settings<a class="headerlink" href="#calendar-server-settings" title="Link to this heading"></a></h2>
<p>The calendar server can be configured on the Groupware admin settings page.
You can globally disable sending invitation emails for events, generating the built-in birthday
calendar, and sending email notifications about upcoming events.</p>
<figure class="align-default">
<a class="reference internal image-reference" href="../_images/settings_calendar-server.png"><img alt="../_images/settings_calendar-server.png" src="../_images/settings_calendar-server.png" style="width: 754.8px; height: 519.6px;" />
</a>
</figure>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 30: </span>The section will be hidden if no app makes use of the CalDAV backend.</p>
</div>
<p>Starting from F7cloud 30, the calendar server settings section will be hidden if no app uses the
CalDAV backend.
Install and enable an appropriate app to show the section again, e.g.
<a class="reference external" href="https://apps.f7cloud.com/apps/calendar">Calendar</a> or
<a class="reference external" href="https://apps.f7cloud.com/apps/tasks">Tasks</a>.</p>
</section>
<section id="events">
<h2>Events<a class="headerlink" href="#events" title="Link to this heading"></a></h2>
<p>You can customize the events user interface.</p>
<section id="hide-export-buttons">
<h3>Hide export buttons<a class="headerlink" href="#hide-export-buttons" title="Link to this heading"></a></h3>
<p>By default users can export their calendar data from the event editor. Admins can disable this feature:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">calendar</span> <span class="n">hideEventExport</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="n">yes</span>
</pre></div>
</div>
</section>
</section>
<section id="invitations">
<h2>Invitations<a class="headerlink" href="#invitations" title="Link to this heading"></a></h2>
<p>F7cloud can send invitations for event attendees if this option is activated.
Be sure to have configured the email server first so that the invitations go through.
See <a class="reference internal" href="../configuration_server/email_configuration.html"><span class="doc">Email</span></a>.</p>
<p>You must also make sure the “Send invitations to attendees” setting is activated in the admin setting groupware section for the emails to be sent.</p>
</section>
<section id="birthday-calendar">
<h2>Birthday calendar<a class="headerlink" href="#birthday-calendar" title="Link to this heading"></a></h2>
<p>Contacts that have a birthday date filled are automatically added as events to a special Birthday calendar.
If you deactivate this option, all users will no longer have this calendar.</p>
<p>When activating this option, users birthday calendars wont be available right away because they need to be generated
by a background task. See <a class="reference internal" href="../occ_command.html"><span class="doc">Using the occ command</span></a> section DAV commands.</p>
</section>
<section id="reminder-notifications">
<h2>Reminder notifications<a class="headerlink" href="#reminder-notifications" title="Link to this heading"></a></h2>
<p>F7cloud handles sending notifications for events.</p>
<p>F7cloud currently handles two types of reminder notifications: Built-in F7cloud notifications and
email notifications. For the emails to be send, youll need a configured email server.
See <a class="reference internal" href="../configuration_server/email_configuration.html"><span class="doc">Email</span></a>.</p>
<p>Make sure the “Send notifications for events” and the “Enable notifications for events via push” are activated in the admin setting groupware section for this feature to work.</p>
<section id="background-jobs">
<h3>Background jobs<a class="headerlink" href="#background-jobs" title="Link to this heading"></a></h3>
<p>Running background jobs can be an expensive task when there are a large number of events, reminders, event sharees and attendees. However, this needs to happen
often enough so that the notifications are sent on time. To accomplish this you should use a dedicated <code class="docutils literal notranslate"><span class="pre">occ</span></code> command that runs
more often than the standard <code class="docutils literal notranslate"><span class="pre">cron</span></code> system:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># crontab -u www-data -e</span>
<span class="o">*/</span><span class="mi">5</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="o">*</span> <span class="n">php</span> <span class="o">-</span><span class="n">f</span> <span class="o">/</span><span class="n">var</span><span class="o">/</span><span class="n">www</span><span class="o">/</span><span class="n">f7cloud</span><span class="o">/</span><span class="n">occ</span> <span class="n">dav</span><span class="p">:</span><span class="n">send</span><span class="o">-</span><span class="n">event</span><span class="o">-</span><span class="n">reminders</span>
</pre></div>
</div>
<p>See <a class="reference internal" href="../occ_command.html"><span class="doc">Using the occ command</span></a> section Dav commands.</p>
<p>Youll also need to change the sending mode from <code class="docutils literal notranslate"><span class="pre">background-job</span></code> to <code class="docutils literal notranslate"><span class="pre">occ</span></code>:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">sendEventRemindersMode</span> <span class="o">--</span><span class="n">value</span> <span class="n">occ</span>
</pre></div>
</div>
<p>If you dont use this dedicated command, the reminders will just be sent as soon as possible when the background jobs run.</p>
</section>
</section>
<section id="event-alarm-types">
<h2>Event alarm types<a class="headerlink" href="#event-alarm-types" title="Link to this heading"></a></h2>
<p>F7cloud allows users to set notification and email reminders for events. Admins can enforce one of the two options:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">calendar</span> <span class="n">forceEventAlarmType</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="n">EMAIL</span>
</pre></div>
</div>
<p>Allowed values are <code class="docutils literal notranslate"><span class="pre">EMAIL</span></code> (email) and <code class="docutils literal notranslate"><span class="pre">DISPLAY</span></code> (notification).</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>This only enforces alarm types for events created with the F7cloud Calendar. This setting has no influence for other connected applications.</p>
</div>
</section>
<section id="freebusy">
<h2>FreeBusy<a class="headerlink" href="#freebusy" title="Link to this heading"></a></h2>
<p>When logged-in, F7cloud can return FreeBusy information for all users of the instance, to know when they are available so that you can schedule an event at the right time.
If you dont wish for users to have this capability, you can disable FreeBusy for the whole instance with the following setting:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">disableFreeBusy</span> <span class="o">--</span><span class="n">value</span> <span class="n">yes</span>
</pre></div>
</div>
</section>
<section id="subscriptions">
<h2>Subscriptions<a class="headerlink" href="#subscriptions" title="Link to this heading"></a></h2>
<section id="custom-public-calendars">
<h3>Custom public calendars<a class="headerlink" href="#custom-public-calendars" title="Link to this heading"></a></h3>
<p>In addition to the public holiday calendars, it is possible to define your own calendar.
They act in the same way as the holiday calendars and can be configured with the following command:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">calendar</span> <span class="n">publicCalendars</span> <span class="o">--</span><span class="n">value</span> <span class="s1">&#39;[{&quot;name&quot;:&quot;My custom calendar&quot;,&quot;source&quot;:&quot;http://example.com/example.ics&quot;}]&#39;</span>
</pre></div>
</div>
<p>The setting is specified as a JSON array of objects with the following options:</p>
<ul class="simple">
<li><p><code class="docutils literal notranslate"><span class="pre">name</span></code> - name of the calendar in the listing</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">source</span></code> - URL of the calendars ICS file</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">displayName</span></code> - optional, to overwrite the name of the subscribed calendar</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">description</span></code> - optional, description in the listing</p></li>
<li><p><code class="docutils literal notranslate"><span class="pre">authors</span></code> - optional, copyrights and so on</p></li>
</ul>
</section>
<section id="refresh-rate">
<h3>Refresh rate<a class="headerlink" href="#refresh-rate" title="Link to this heading"></a></h3>
<p>Calendar subscriptions are cached on server and refreshed periodically.
If the calendar server provides a <a class="reference external" href="https://icalendar.org/New-Properties-for-iCalendar-RFC-7986/5-7-refresh-interval-property.html">refresh interval</a>, it is respected.
Otherwise the default refresh rate is one day.</p>
<p>To set up a different default refresh rate for calendars without server side refresh rates, change the <code class="docutils literal notranslate"><span class="pre">calendarSubscriptionRefreshRate</span></code> option:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">calendarSubscriptionRefreshRate</span> <span class="o">--</span><span class="n">value</span> <span class="s2">&quot;PT6H&quot;</span>
</pre></div>
</div>
<p>Where the value is a <a class="reference external" href="https://www.php.net/manual/dateinterval.construct.php">DateInterval</a>, for instance with the above command all of the F7cloud instances calendars would be refreshed every 6 hours.</p>
</section>
<section id="allow-subscriptions-on-local-network">
<h3>Allow subscriptions on local network<a class="headerlink" href="#allow-subscriptions-on-local-network" title="Link to this heading"></a></h3>
<p>Because of security issues, F7cloud forbids subscriptions from local network hosts.
If you need to allow this, change the following parameter to:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">webcalAllowLocalAccess</span> <span class="o">--</span><span class="n">value</span> <span class="n">yes</span>
</pre></div>
</div>
</section>
</section>
<section id="federated-calendar-shares">
<h2>Federated calendar shares<a class="headerlink" href="#federated-calendar-shares" title="Link to this heading"></a></h2>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 32.0.0.</span></p>
</div>
<p>F7cloud supports creating read-only federated calendar shares.
A user is able to share a calendar with a remote user on a federated instance.
For now, the shares are read-only and remote users are not able to change the events inside the
shared calendar.</p>
<p>The feature can be optionally disabled through an app config.
Run the following command to disable creating new federated calendar shares for all users:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">enableCalendarFederation</span> <span class="o">--</span><span class="nb">type</span><span class="o">=</span><span class="nb">bool</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="n">false</span>
</pre></div>
</div>
<p>Note that existing shares will be deleted when the feature is disabled as they will fail to sync.</p>
</section>
<section id="trash-bin">
<h2>Trash bin<a class="headerlink" href="#trash-bin" title="Link to this heading"></a></h2>
<p>F7cloud supports a calendar, events and tasks trash bin.</p>
<p>The default delay before objects are purged from the trash bin is 30 days. A background job runs every 6 hours to clean up expired objects.</p>
<p>To set up a different retention period, change the <code class="docutils literal notranslate"><span class="pre">calendarRetentionObligation</span></code> option:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">calendarRetentionObligation</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="mi">2592000</span>
</pre></div>
</div>
<p>Where the value is the number of seconds for the period. Setting the value to <code class="docutils literal notranslate"><span class="pre">0</span></code> disables the trash bin.</p>
</section>
<section id="resources-and-rooms">
<h2>Resources and rooms<a class="headerlink" href="#resources-and-rooms" title="Link to this heading"></a></h2>
<p>The F7cloud CalDAV backend supports resources and rooms. Resources and rooms can be booked for appointments, and the system will schedule them so they can only be used once at a time. Those resources and rooms have to be provided by an app that provides a backend for this.</p>
<p>Once a backend app is installed, the app typically allows admins, or even users, to define the resources, but this is subject of the specific implementation.</p>
<p>F7cloud periodically queries all registered backends, therefore new/updated resources and rooms will show with a delay.</p>
<section id="known-backends">
<h3>Known backends<a class="headerlink" href="#known-backends" title="Link to this heading"></a></h3>
<ul class="simple">
<li><p><a class="reference external" href="https://github.com/f7cloud/calendar_resource_management">Calendar Resource Management</a>: database backend with CLI configuration for admins</p></li>
</ul>
</section>
</section>
<section id="rate-limits">
<h2>Rate limits<a class="headerlink" href="#rate-limits" title="Link to this heading"></a></h2>
<p>F7cloud rate limits the creation of calendars and subscriptions if too many items are created within a short time frame. The default is 10 calendars or subscriptions per hour. This can be customized as follows:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Set limit to 15 items per 30 minutes</span>
<span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">rateLimitCalendarCreation</span> <span class="o">--</span><span class="nb">type</span><span class="o">=</span><span class="n">integer</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="mi">15</span>
<span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">rateLimitPeriodCalendarCreation</span> <span class="o">--</span><span class="nb">type</span><span class="o">=</span><span class="n">integer</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="mi">1800</span>
</pre></div>
</div>
<p>Additionally, the maximum number of calendars and subscriptions a user may create is limited to 30 items. This can be customized too:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Allow users to create 50 calendars/subscriptions</span>
<span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">maximumCalendarsSubscriptions</span> <span class="o">--</span><span class="nb">type</span><span class="o">=</span><span class="n">integer</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="mi">50</span>
</pre></div>
</div>
<p>or:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Allow users to create calendars/subscriptions without restriction</span>
<span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">dav</span> <span class="n">maximumCalendarsSubscriptions</span> <span class="o">--</span><span class="nb">type</span><span class="o">=</span><span class="n">integer</span> <span class="o">--</span><span class="n">value</span><span class="o">=-</span><span class="mi">1</span>
</pre></div>
</div>
</section>
<section id="example-event">
<h2>Example event<a class="headerlink" href="#example-event" title="Link to this heading"></a></h2>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 32.0.0.</span></p>
</div>
<p>When a user logs in for the first time an example event is created in their personal calendar.
As an admin, you can disable the creation of the example event.
It is also possible to replace the default event with a custom one.</p>
<p>To disable the creation of the example event for new users:</p>
<ol class="arabic simple">
<li><p>Navigate to the Groupware settings in the admin settings.</p></li>
<li><p>Scroll down to the “Example content” section.</p></li>
<li><p>Disable the “Add example event …” setting with the checkbox</p></li>
</ol>
<p>To replace the built-in default event with a custom one:</p>
<ol class="arabic simple">
<li><p>Navigate to the Groupware settings in the admin settings.</p></li>
<li><p>Press the “Import calendar event” button.</p></li>
<li><p>Choose an ICS file to be imported.</p></li>
</ol>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>The start and end date will be overwritten with dates in the future when a custom event
is supplied to ensure that the user sees the event.</p>
</div>
<p>It is also possible to revert to the default built-in event by pressing the “Reset to default”
button next to the import button.</p>
</section>
<section id="data-retention">
<span id="caldav-data-retention"></span><h2>Data retention<a class="headerlink" href="#data-retention" title="Link to this heading"></a></h2>
<div class="versionadded">
<p><span class="versionmodified added">Added in version 26.0.0.</span></p>
</div>
<p>You can configure how long F7cloud keeps some of the calendar sync tokens.</p>
<section id="sync-tokens">
<h3>Sync tokens<a class="headerlink" href="#sync-tokens" title="Link to this heading"></a></h3>
<p>The CalDAV backend keeps track of any modifications of calendars. That is anything added, modified or removed. The data is used for differential synchronization of offline clients like Thunderbird. At a certain point in time, the data can be considered outdated assuming there will be no more client needing it. This can help keep the database table <cite>calendarchanges</cite> small:</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="n">sudo</span> <span class="o">-</span><span class="n">E</span> <span class="o">-</span><span class="n">u</span> <span class="n">www</span><span class="o">-</span><span class="n">data</span> <span class="n">php</span> <span class="n">occ</span> <span class="n">config</span><span class="p">:</span><span class="n">app</span><span class="p">:</span><span class="nb">set</span> <span class="n">totalNumberOfSyncTokensToKeep</span> <span class="o">--</span><span class="n">value</span><span class="o">=</span><span class="mi">30000</span>
</pre></div>
</div>
<p>The default is keeping 10,000 entries. This option should be set adequate to the number of users. E.g. on an installation with 5000 active synced calendars the system would only keep an average of 10 changes per calendar. This will lead to premature data deletion and synchronization problems.</p>
<div class="admonition warning">
<p class="admonition-title">Warning</p>
<p>This setting will also influence <a class="reference internal" href="contacts.html#carddav-data-retention"><span class="std std-ref">CardDAV data retention</span></a>.</p>
</div>
</section>
</section>
</section>
</div>
</div>
<footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
<a href="index.html" class="btn btn-neutral float-left" title="Groupware" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
<a href="contacts.html" class="btn btn-neutral float-right" title="Contacts / CardDAV" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
</div>
<hr/>
<div role="contentinfo">
<p>&#169; Copyright 2016-2026 F7cloud GmbH and F7cloud contributors.</p>
</div>
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions">
<span class="rst-current-version" data-toggle="rst-current-version">
☁️ latest
<span class="fa fa-caret-down"></span>
</span>
<div class="rst-other-versions">
<dl>
<dt>☁️ Versions</dt>
<dd style="width: 32%">
<a href="https://docs.f7cloud.com/server/latest/admin_manual"
style="color: var(--dark-link-color);"
>
latest
</a>
</dd>
<dd style="width: 32%">
<a href="https://docs.f7cloud.com/server/stable/admin_manual"
>
stable
</a>
</dd>
<dd style="width: 32%">
<a href="https://docs.f7cloud.com/server/31/admin_manual"
>
31
</a>
</dd>
<dd style="width: 32%">
<a href="https://docs.f7cloud.com/server/30/admin_manual"
>
30
</a>
</dd>
<dd style="width: 32%">
<a href="https://docs.f7cloud.com/server/29/admin_manual"
>
29
</a>
</dd>
</dl>
</div>
</div>
<script>
jQuery(function () {
SphinxRtdTheme.Navigation.enable(true);
});
</script>
</body>
</html>