RADICALE(1)

๐Ÿ’– NAME ๐Ÿ’–

radicale โ€” bestie, it's literally a simple calendar server ๐Ÿ’… (this is the radicale(1) page from User Commands, and yes she ate)


โœจ DESCRIPTION โœจ

okay so here's the whole vibe, the entire invocation of this thing is:

usage: radicale [OPTIONS]

that's it, that's the shape of it ๐Ÿซถ now let's get into the good stuff.

๐ŸŽ€ options: ๐ŸŽ€

the general-usage girlies, the ones who apply no matter what:

  • -h, --help โ€” shows you this exact help message and then dips, exits. iconic behaviour tbh ๐ŸŽ€
  • --version โ€” prints the program's version number and yeets itself out, exits โœจ
  • --verify-storage โ€” goes through the storage looking for errors, then exits. a little wellness check for your data ๐Ÿ’–
  • --verify-item VERIFY_ITEM โ€” same energy but for one specific item file you point at, checks it for errors and exits ๐Ÿ”
  • --verify-sharing โ€” runs an error check over the sharing database and exits ๐Ÿฆ‹
  • -C, --config [CONFIG ...] โ€” use specific configuration files, plural, you can pass a whole list bestie ๐Ÿ“‚
  • -D, --debug โ€” spills the debug information, the juicy behind-the-scenes tea โ˜•

๐Ÿ–ฅ๏ธ server: ๐Ÿ–ฅ๏ธ

the main-character section, this is where the server itself gets configured:

  • -H, --hosts, --server-hosts VALUE โ€” sets the server hostnames, ports included, don't forget the ports ๐Ÿ‘‘
  • --server-max-connections VALUE โ€” the maximum number of parallel connections allowed at once, no crowding the function ๐Ÿ’…
  • --server-max-content-length VALUE โ€” biggest allowed request body size in bytes (default: 100 Mbyte) ๐Ÿ“
  • --server-delay-on-error VALUE โ€” the base delay used when a 5xx error response happens, in seconds โณ
  • --server-max-resource-size VALUE โ€” max size of a resource (default: 10 Mbyte) ๐ŸŒธ
  • --server-max-vevent-rrule-occurrence VALUE โ€” max occurrence by an RRULE (default: 10000). yes the recurring events have a limit, periodt ๐Ÿ”
  • --server-timeout VALUE โ€” the socket timeout โฑ๏ธ
  • -s, --ssl, --server-ssl [VALUE] โ€” use an SSL connection, secure-girl behaviour ๐Ÿ”’
  • -S, --no-ssl, --no-server-ssl โ€” do not use an SSL connection (it's the exact opposite of --server-ssl) ๐Ÿ™ˆ
  • --server-protocol VALUE โ€” the SSL/TLS protocol, written in Apache SSLProtocol format ๐ŸŒˆ
  • --server-ciphersuite VALUE โ€” the SSL/TLS Cipher Suite, in OpenSSL cipher list format ๐Ÿ”
  • -c, --certificate, --server-certificate VALUE โ€” set the certificate file ๐ŸŽ€
  • -k, --key, --server-key VALUE โ€” set the private key file ๐Ÿ—๏ธ
  • --certificate-authority, --server-certificate-authority VALUE โ€” set the CA certificate used for validating clients, so you know who's at the door ๐Ÿ‘€
  • --server-script-name VALUE โ€” the script name to strip from the URI when you're being called by a reverse proxy (default is taken from HTTP_X_SCRIPT_NAME or SCRIPT_NAME) ๐Ÿงš
  • --server-validate-user-value VALUE โ€” validates the user value. options are: none | minimal | unicodeletter | unicode-none | strict โœ…
  • --server-validate-path-value VALUE โ€” validates the path value. same menu: none | minimal | unicodeletter | unicode-none | strict โœ…

๐Ÿ”ค encoding: ๐Ÿ”ค

  • --encoding-request VALUE โ€” the encoding used for responding to requests ๐Ÿ’ฌ
  • --encoding-stock VALUE โ€” the encoding used for storing local collections ๐Ÿ—„๏ธ

๐Ÿ”‘ auth: ๐Ÿ”‘ (authentication, the bouncer at the club)

backend specific options omitted โ€” yes bestie, they really are omitted in this listing, i don't make the rules ๐Ÿ™ˆ
  • --auth-type VALUE โ€” which authentication method you want: none | remote_user | http_x_remote_user | http_remote_user | denyall | htpasswd | ldap | imap | oauth2 | pam | dovecot ๐Ÿ’…
  • --auth-cache-logins [VALUE] โ€” caches successful and failed logins until the expiration time hits ๐Ÿ•ฐ๏ธ
  • --no-auth-cache-logins โ€” do not cache successful/failed logins until expiration time (the opposite of --auth-cache-logins) ๐Ÿšซ
  • --auth-cache-successful-logins-expiry VALUE โ€” expiration time in seconds for the cached successful logins โฒ๏ธ
  • --auth-cache-failed-logins-expiry VALUE โ€” expiration time in seconds for the cached failed logins ๐Ÿ’€
  • --auth-htpasswd-filename VALUE โ€” the htpasswd filename ๐Ÿ“„
  • --auth-htpasswd-encryption VALUE โ€” the htpasswd encryption method ๐Ÿ”
  • --auth-htpasswd-cache [VALUE] โ€” turns on caching of the htpasswd file โšก
  • --no-auth-htpasswd-cache โ€” does not enable caching of the htpasswd file (opposite of --auth-htpasswd-cache) ๐Ÿšซ
  • --auth-dovecot-connection-type VALUE โ€” the Connection type for dovecot authentication ๐Ÿ•Š๏ธ
  • --auth-dovecot-socket VALUE โ€” the dovecot auth AF_UNIX socket ๐Ÿ”Œ
  • --auth-dovecot-host VALUE โ€” the dovecot auth AF_INET or AF_INET6 host ๐ŸŒ
  • --auth-dovecot-port VALUE โ€” the dovecot auth port ๐Ÿšช
  • --auth-remote-ip-source VALUE โ€” the remote address source, so it can get passed along to the auth method ๐Ÿ“ฌ
  • --auth-realm VALUE โ€” the message that gets displayed when a password is needed ๐Ÿ—ฃ๏ธ
  • --auth-delay VALUE โ€” the delay on an incorrect authentication โณ
  • --auth-ldap-uri VALUE โ€” URI pointing at the LDAP server ๐Ÿงญ
  • --auth-ldap-base VALUE โ€” the Base DN of the LDAP server ๐ŸŒณ
  • --auth-ldap-reader-dn VALUE โ€” DN of an LDAP user with read access to users anmd โ€” if defined โ€” groups (yes, "anmd", we keep it exactly as written, no notes ๐Ÿ’€)
  • --auth-ldap-secret VALUE โ€” the Password of ldap_reader_dn (but honestly bestie: use ldap_secret_file instead, it's the safer glow-up) ๐Ÿ”’
  • --auth-ldap-secret-file VALUE โ€” Path to the file containing the password of ldap_reader_dn ๐Ÿ“
  • --auth-ldap-filter VALUE โ€” the Filter used to search for the LDAP entry of the user you're authenticating ๐Ÿ”Ž
  • --auth-ldap-user-attribute VALUE โ€” the Attribute that gets used as username after authentication ๐Ÿท๏ธ
  • --auth-ldap-security VALUE โ€” the Encryption mode to use: *none* | tls | starttls ๐Ÿ›ก๏ธ
  • --auth-ldap-ssl-verify-mode VALUE โ€” Certificate verification mode for tls and starttls. Options are NONE, OPTIONAL, and the default is REQUIRED ๐Ÿ‘€
  • --auth-ldap-ssl-ca-file VALUE โ€” Path to the CA file in PEM format, the one used to certify the server certificate ๐Ÿ“œ
  • --auth-ldap-groups-attribute VALUE โ€” the Attribute in the user's LDAP entry that the group memberships get read from ๐Ÿ‘ฅ
  • --auth-ldap-group-members-attribute VALUE โ€” the Attribute in the group entries that the group's members get read from ๐Ÿซ‚
  • --auth-ldap-group-base VALUE โ€” Base DN to search for groups. Only used if it differs from ldap_base and if ldap_group_members_attribute is set ๐Ÿงฉ
  • --auth-ldap-group-filter VALUE โ€” Search filter for finding groups that have the user as a member. Only used if ldap_group_members_attribute is set ๐Ÿ”
  • --auth-ldap-ignore-attribute-create-modify-timestamp [VALUE] โ€” a Quirk for the Authentik LDAP server: it makes you ignore the modifyTimestamp and createTimestamp attributes ๐Ÿ™ƒ
  • --no-auth-ldap-ignore-attribute-create-modify-timestamp โ€” does not Quirk for Authentik LDAP server: ignore modifyTimestamp and createTimestamp attributes. (this is the opposite of --auth-ldap-ignore-attribute-createmodify-timestamp) ๐Ÿšซ
  • --auth-imap-host VALUE โ€” the IMAP server hostname, in the form address | address:port | [address]:port | *localhost* ๐Ÿ“ฎ
  • --auth-imap-security VALUE โ€” secures the IMAP connection: *tls* | starttls | none ๐Ÿ”’
  • --auth-imap-append-domain VALUE โ€” appends '@' + domain to the login before it even tries the IMAP connection โž•
  • --auth-oauth2-token-endpoint VALUE โ€” the OAuth2 token endpoint URL ๐Ÿ”—
  • --auth-oauth2-client-id VALUE โ€” the OAuth2 client id ๐Ÿชช
  • --auth-oauth2-client-secret VALUE โ€” the OAuth2 client secret ๐Ÿคซ
  • --auth-pam-group-membership VALUE โ€” the PAM group the user should be a member of ๐Ÿ‘ฏ
  • --auth-pam-service VALUE โ€” the PAM service ๐Ÿ›Ž๏ธ
  • --auth-strip-domain [VALUE] โ€” strips the domain from the username โœ‚๏ธ
  • --no-auth-strip-domain โ€” does not strip the domain from the username (opposite of --authstrip-domain) ๐Ÿšซ
  • --auth-uc-username [VALUE] โ€” converts the username to uppercase, must be true for caseinsensitive auth providers โฌ†๏ธ
  • --no-auth-uc-username โ€” does not convert the username to uppercase, must be true for case-insensitive auth providers (opposite of --authuc-username) ๐Ÿšซ
  • --auth-lc-username [VALUE] โ€” converts the username to lowercase, must be true for caseinsensitive auth providers โฌ‡๏ธ
  • --no-auth-lc-username โ€” does not convert the username to lowercase, must be true for case-insensitive auth providers (opposite of --authlc-username) ๐Ÿšซ
  • --auth-urldecode-username [VALUE] โ€” url-decodes the username. set this to True when clients send a url-encoded email address as the username ๐Ÿ“ง
  • --no-auth-urldecode-username โ€” does not url-decode the username. set to True when clients send a url-encoded email address as username (opposite of --auth-urldecode-username) ๐Ÿšซ

๐Ÿ›‚ rights: ๐Ÿ›‚

who's allowed to do what, the rules of the group chat:

backend specific options omitted โ€” again bestie, that's just what the page says ๐Ÿ™ˆ
  • --rights-type VALUE โ€” the rights backend ๐Ÿ—๏ธ
  • --rights-permit-delete-collection [VALUE] โ€” permits deleting of a collection ๐Ÿ—‘๏ธ
  • --no-rights-permit-delete-collection โ€” does not permit delete of a collection (opposite of --rights-permit-delete-collection) ๐Ÿšซ
  • --rights-permit-overwrite-collection [VALUE] โ€” permits overwriting of a collection โ™ป๏ธ
  • --no-rights-permit-overwrite-collection โ€” does not permit overwrite of a collection (opposite of --rights-permit-overwrite-collection) ๐Ÿšซ
  • --rights-file VALUE โ€” the file used for rights management from_file ๐Ÿ“

๐Ÿ“ฆ storage: ๐Ÿ“ฆ

where all your precious data actually lives:

backend specific options omitted โ€” one more time, that's the word from the page โœจ
  • --storage-type VALUE โ€” the storage backend ๐Ÿ—๏ธ
  • --storage-filesystem-folder VALUE โ€” the path where collections are stored ๐Ÿ“‚
  • --storage-filesystem-cache-folder VALUE โ€” the path where the cache of collections is stored in case any of the use_cache_subfolder_* options are active ๐Ÿ—ƒ๏ธ
  • --storage-use-cache-subfolder-for-item [VALUE] โ€” uses the subfolder 'collection-cache' for the 'item' cache file structure instead of keeping it inside the collection folder ๐Ÿ—‚๏ธ
  • --no-storage-use-cache-subfolder-for-item โ€” does not use the subfolder 'collection-cache' for the 'item' cache file structure instead of inside the collection folder (opposite of --storage-use-cache-subfolder-foritem) ๐Ÿšซ
  • --storage-use-cache-subfolder-for-history [VALUE] โ€” uses the subfolder 'collection-cache' for the 'history' cache file structure instead of inside the collection folder โณ
  • --no-storage-use-cache-subfolder-for-history โ€” does not use the subfolder 'collection-cache' for the 'history' cache file structure instead of inside the collection folder (opposite of --storage-use-cache-subfolder-forhistory) ๐Ÿšซ
  • --storage-use-cache-subfolder-for-synctoken [VALUE] โ€” uses the subfolder 'collection-cache' for the 'sync-token' cache file structure instead of inside the collection folder ๐Ÿ”„
  • --no-storage-use-cache-subfolder-for-synctoken โ€” does not use the subfolder 'collection-cache' for the 'synctoken' cache file structure instead of inside the collection folder (opposite of --storage-use-cachesubfolder-for-synctoken) ๐Ÿšซ
  • --storage-use-mtime-and-size-for-item-cache [VALUE] โ€” uses mtime and file size instead of SHA256 for the 'item' cache (it improves speed, lowkey a glow-up) โšก
  • --no-storage-use-mtime-and-size-for-item-cache โ€” does not use mtime and file size instead of SHA256 for 'item' cache (improves speed) (opposite of --storageuse-mtime-and-size-for-item-cache) ๐Ÿšซ
  • --storage-folder-umask VALUE โ€” the umask for folder creation (empty means: system default) ๐ŸŽญ
  • --storage-max-sync-token-age VALUE โ€” deletes sync token that are older ๐Ÿ•ฐ๏ธ
  • --storage-skip-broken-item [VALUE] โ€” skips broken item instead of triggering an exception ๐Ÿฉน
  • --no-storage-skip-broken-item โ€” does not skip broken item instead of triggering exception (opposite of --storage-skip-broken-item) ๐Ÿšซ
  • --storage-hook VALUE โ€” the command that is run after changes to storage ๐Ÿช

okay bestie that's part one, don't go anywhere, there's more coming ๐Ÿ’œ

  • --storage-strict-preconditions [VALUE] โ€” strict preconditions check on PUT, bestie. It's giving "no shortcuts" energy. ๐Ÿ’…
  • --no-storage-strict-preconditions โ€” do not strict preconditions check on PUT (opposite of --storage-strict-preconditions) ๐Ÿ™ˆ
  • --storage-predefined-collections VALUE โ€” predefined user collections, slay. โœจ

๐ŸŒธ sharing: ๐ŸŒธ

backend specific options omitted (iykyk, they're just not here)

  • --sharing-type VALUE โ€” sharing database type
  • --sharing-database-path VALUE โ€” database path
  • --sharing-collection-by-token [VALUE] โ€” enable sharing of collection by token
  • --no-sharing-collection-by-token โ€” do not enable sharing of collection by token (opposite of --sharing-collection-by-token)
  • --sharing-collection-by-map [VALUE] โ€” enable sharing of collection by map
  • --no-sharing-collection-by-map โ€” do not enable sharing of collection by map (opposite of --sharing-collection-by-map)
  • --sharing-permit-create-token [VALUE] โ€” permit create of token-based sharing
  • --no-sharing-permit-create-token โ€” do not permit create of token-based sharing (opposite of --sharing-permit-create-token)
  • --sharing-permit-create-map [VALUE] โ€” permit create of map-based sharing
  • --no-sharing-permit-create-map โ€” do not permit create of map-based sharing (opposite of --sharing-permit-create-map)
  • --sharing-permit-properties-overlay [VALUE] โ€” permit properties overlay
  • --no-sharing-permit-properties-overlay โ€” do not permit properties overlay (opposite of --sharing-permit-properties-overlay)
  • --sharing-enforce-properties-overlay [VALUE] โ€” enforce properties overlay on write access
  • --no-sharing-enforce-properties-overlay โ€” do not enforce properties overlay on write access (opposite of --sharing-enforce-properties-overlay)
  • --sharing-default-permissions-create-token VALUE โ€” default permissions for token-based sharing
  • --sharing-default-permissions-create-map VALUE โ€” default permissions for map-based sharing
  • --sharing-conversion-bday-summary-template VALUE โ€” conversion bday summary template
  • --sharing-conversion-bday-description-template VALUE โ€” conversion bday description template
  • --sharing-conversion-bday-alarm-trigger-template VALUE โ€” conversion bday alarm trigger template
  • --sharing-conversion-bday-categories VALUE โ€” conversion bday categories
  • --sharing-conversion-bday-age-max VALUE โ€” conversion bday age max

๐Ÿฆ‹ hook: ๐Ÿฆ‹

backend specific options omitted (again, not here but they exist)

  • --hook-type VALUE โ€” hook backend
  • --hook-dryrun [VALUE] โ€” dry-run (do not really trigger hook action)
  • --no-hook-dryrun โ€” do not dry-run (do not really trigger hook action) (opposite of --hook-dryrun)
  • --hook-rabbitmq-endpoint VALUE โ€” endpoint where rabbitmq server is running
  • --hook-rabbitmq-topic VALUE โ€” topic to declare queue
  • --hook-rabbitmq-queue-type VALUE โ€” queue type for topic declaration
  • --hook-smtp-server VALUE โ€” SMTP server to send emails
  • --hook-smtp-port VALUE โ€” SMTP server port
  • --hook-smtp-security VALUE โ€” SMTP security mode: none|tls|starttls
  • --hook-smtp-ssl-verify-mode VALUE โ€” The certificate verification mode. Works for tls and starttls: NONE, OPTIONAL, default is REQUIRED
  • --hook-smtp-username VALUE โ€” SMTP server username
  • --hook-smtp-password VALUE โ€” SMTP server password
  • --hook-from-email VALUE โ€” SMTP server password (yes, same description, we don't make the rules lol)
  • --hook-mass-email [VALUE] โ€” Send one email to all attendees, versus one email per attendee
  • --no-hook-mass-email โ€” do not Send one email to all attendees, versus one email per attendee (opposite of --hook-mass-email)
  • --hook-new-or-added-to-event-template VALUE โ€” Template for the email sent when an event is created or attendee is added. Select placeholder words prefixed with $ will be replaced
  • --hook-deleted-or-removed-from-event-template VALUE โ€” Template for the email sent when an event is deleted or attendee is removed. Select placeholder words prefixed with $ will be replaced
  • --hook-updated-event-template VALUE โ€” Template for the email sent when an event is updated. Select placeholder words prefixed with $ will be replaced

๐ŸŒˆ web: ๐ŸŒˆ

backend specific options omitted (you know the drill)

  • --web-type VALUE โ€” web interface backend
  • --web-prefer-browser-login [VALUE] โ€” prefer browser login
  • --no-web-prefer-browser-login โ€” do not prefer browser login (opposite of --web-preferbrowser-login) (yep, typo in the original, we keep it fr fr)

โœจ logging: โœจ

  • --logging-level VALUE โ€” threshold for the logger
  • --logging-limit-content VALUE โ€” limit content of wrapped text (chars)
  • --logging-trace-filter VALUE โ€” filter trace messages starting with '<TOKEN>'
  • --logging-bad-put-request-content [VALUE] โ€” log bad PUT request content
  • --no-logging-bad-put-request-content โ€” do not log bad PUT request content (opposite of --logging-bad-put-request-content)
  • --logging-backtrace-on-debug [VALUE] โ€” log backtrace on level=debug
  • --no-logging-backtrace-on-debug โ€” do not log backtrace on level=debug (opposite of --logging-backtrace-on-debug)
  • --logging-request-header-on-debug [VALUE] โ€” log request header on level=debug
  • --no-logging-request-header-on-debug โ€” do not log request header on level=debug (opposite of --logging-request-header-on-debug)
  • --logging-request-content-on-debug [VALUE] โ€” log request content on level=debug
  • --no-logging-request-content-on-debug โ€” do not log request content on level=debug (opposite of --logging-request-content-on-debug)
  • --logging-response-header-on-debug [VALUE] โ€” log response header on level=debug
  • --no-logging-response-header-on-debug โ€” do not log response header on level=debug (opposite of --logging-response-header-on-debug)
  • --logging-response-content-on-debug [VALUE] โ€” log response content on level=debug
  • --no-logging-response-content-on-debug โ€” do not log response content on level=debug (opposite of --logging-response-content-on-debug)
  • --logging-request-header-on-notice-condition VALUE โ€” log request header on level=notice with condition
  • --logging-request-content-on-notice-condition VALUE โ€” log request content on level=notice with condition
  • --logging-response-header-on-notice-condition VALUE โ€” log response header on level=notice with condition
  • --logging-response-content-on-notice-condition VALUE โ€” log response content on level=notice with condition
  • --logging-rights-rule-doesnt-match-on-debug [VALUE] โ€” log rights rules which doesn't match on level=debug
  • --no-logging-rights-rule-doesnt-match-on-debug โ€” do not log rights rules which doesn't match on level=debug (opposite of --logging-rights-rule-doesntmatch-on-debug) (yes, exactly that string, keep it ๐Ÿ’ฏ)
  • --logging-storage-cache-actions-on-debug [VALUE] โ€” log storage cache action on level=debug
  • --no-logging-storage-cache-actions-on-debug โ€” do not log storage cache action on level=debug (opposite of --logging-storage-cache-actions-on-debug)
  • --logging-profiling VALUE โ€” log profiling data level=info
  • --logging-profiling-per-request-min-duration VALUE โ€” log profiling data per request minimum duration (seconds)
  • --logging-profiling-per-request-header [VALUE] โ€” Log profiling request body (if passing minimum duration)
  • --no-logging-profiling-per-request-header โ€” do not Log profiling request body (if passing minimum duration) (opposite of --logging-profiling-perrequest-header)
  • --logging-profiling-per-request-xml [VALUE] โ€” Log profiling request XML (if passing minimum duration)
  • --no-logging-profiling-per-request-xml โ€” do not Log profiling request XML (if passing minimum duration) (opposite of --logging-profiling-perrequest-xml)
  • --logging-profiling-per-request-method-interval VALUE โ€” log profiling data per request method interval (seconds)
  • --logging-profiling-top-x-functions VALUE โ€” log profiling top X functions (limit)
  • --logging-mask-passwords [VALUE] โ€” mask passwords in logs
  • --no-logging-mask-passwords โ€” do not mask passwords in logs (opposite of --loggingmask-passwords)

๐ŸŽ€ headers: ๐ŸŽ€

additional options allowed (e.g. --headers-Pragma=no-cache) ๐Ÿ’–


๐Ÿ‘‘ reporting: ๐Ÿ‘‘

  • --reporting-max-expand-occurrence VALUE โ€” number of expand occurrences per event when reporting
  • --reporting-max-freebusy-occurrence VALUE โ€” number of free-busy occurrences per event when reporting

That's the whole vibe for radicale 3.7.8+ds-3, dated August 2026. Stay iconic, bestie! ๐Ÿซถโœจ

๐Ÿ“ฆ where this page comes from