config 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. # -*- mode: conf -*-
  2. # vim:ft=cfg
  3. # Config file for Radicale - A simple calendar server
  4. #
  5. # Place it into /etc/radicale/config (global)
  6. # or ~/.config/radicale/config (user)
  7. #
  8. # The current values are the default ones
  9. [server]
  10. # CalDAV server hostnames separated by a comma
  11. # IPv4 syntax: address:port
  12. # IPv6 syntax: [address]:port
  13. # Hostname syntax (using "getaddrinfo" to resolve to IPv4/IPv6 adress(es)): hostname:port
  14. # For example: 0.0.0.0:9999, [::]:9999, localhost:9999
  15. #hosts = localhost:5232
  16. # Max parallel connections
  17. #max_connections = 8
  18. # Max size of request body (bytes)
  19. # In case of using a reverse proxy in front of check also there related option
  20. #max_content_length = 100000000
  21. # Socket timeout (seconds)
  22. #timeout = 30
  23. # SSL flag, enable HTTPS protocol
  24. #ssl = False
  25. # SSL certificate path
  26. #certificate = /etc/ssl/radicale.cert.pem
  27. # SSL private key
  28. #key = /etc/ssl/radicale.key.pem
  29. # CA certificate for validating clients. This can be used to secure
  30. # TCP traffic between Radicale and a reverse proxy
  31. #certificate_authority =
  32. # SSL protocol, secure configuration: ALL -SSLv3 -TLSv1 -TLSv1.1
  33. #protocol = (default)
  34. # SSL ciphersuite, secure configuration: DHE:ECDHE:-NULL:-SHA (see also "man openssl-ciphers")
  35. #ciphersuite = (default)
  36. # script name to strip from URI if called by reverse proxy
  37. #script_name = (default taken from HTTP_X_SCRIPT_NAME or SCRIPT_NAME)
  38. [encoding]
  39. # Encoding for responding requests
  40. #request = utf-8
  41. # Encoding for storing local collections
  42. #stock = utf-8
  43. [auth]
  44. # Authentication method
  45. # Value: none | htpasswd | remote_user | http_x_remote_user | dovecot | ldap | oauth2 | pam | denyall
  46. #type = denyall
  47. # Cache logins for until expiration time
  48. #cache_logins = false
  49. # Expiration time for caching successful logins in seconds
  50. #cache_successful_logins_expiry = 15
  51. ## Expiration time of caching failed logins in seconds
  52. #cache_failed_logins_expiry = 90
  53. # URI to the LDAP server
  54. #ldap_uri = ldap://localhost
  55. # Base DN of the LDAP server to search for user accounts
  56. #ldap_base = ##BASE_DN##
  57. # Reader DN of the LDAP server; (needs read access to users and - if defined - groups)
  58. #ldap_reader_dn = CN=ldapreader,CN=Users,##BASE_DN##
  59. # Password of the reader DN (better: use 'ldap_secret_file'!)
  60. #ldap_secret = ldapreader-secret
  61. # Path to the file containing the password of the reader DN
  62. #ldap_secret_file = /run/secrets/ldap_password
  63. # Filter to search for the LDAP entry of the user to authenticate. It must contain '{0}' as placeholder for the login name.
  64. #ldap_filter = (&(objectClass=person)(uid={0}))
  65. # Attribute holding the value to be used as username after authentication
  66. #ldap_user_attribute = cn
  67. # Use ssl on the LDAP connection (DEPRECATED - use 'ldap_security'!)
  68. #ldap_use_ssl = False
  69. # Encryption mode to be used. Default: none; one of: none, tls, starttls
  70. #ldap_security = none
  71. # Certificate verification mode for tls & starttls. Default: REQUIRED; one of NONE, OPTIONAL, REQUIRED
  72. #ldap_ssl_verify_mode = REQUIRED
  73. # Path to the CA file in PEM format to certify the server certificate
  74. #ldap_ssl_ca_file =
  75. # Attribute in the user's LDAP entry to read the group memberships from; default: not set
  76. #ldap_groups_attribute = memberOf
  77. # Attribute in the group entries to read the group's members from, e.g. member; default: not set
  78. #ldap_group_members_attribute = member
  79. # Base DN to search for groups; only if it differs from 'ldap_base' and if 'ldap_group_members_attribute' is set
  80. #ldap_group_base = ##GROUP_BASE_DN##
  81. # Search filter to search for groups having the user DN found as member; only if 'ldap_group_members_attribute' is set
  82. #ldap_group_filter = (objectclass=groupOfNames)
  83. # Quirks for Authentik LDAP server: ignore modifyTimestamp and createTimestamp attributes
  84. #ldap_ignore_attribute_create_modify_timestamp = false
  85. # Connection type for dovecot authentication (AF_UNIX|AF_INET|AF_INET6)
  86. # Note: credentials are transmitted in cleartext
  87. #dovecot_connection_type = AF_UNIX
  88. # The path to the Dovecot client authentication socket (eg. /run/dovecot/auth-client on Fedora). Radicale must have read / write access to the socket.
  89. #dovecot_socket = /var/run/dovecot/auth-client
  90. # Host of via network exposed dovecot socket
  91. #dovecot_host = localhost
  92. # Port of via network exposed dovecot socket
  93. #dovecot_port = 12345
  94. # Remote address source for authentication mechanisms (such as dovecot)
  95. # that are passed this information.
  96. #remote_ip_source = REMOTE_ADDR
  97. # IMAP server hostname
  98. # Syntax: address | address:port | [address]:port | imap.server.tld
  99. #imap_host = localhost
  100. # Secure the IMAP connection
  101. # Value: tls | starttls | none
  102. #imap_security = tls
  103. # OAuth2 token endpoint URL
  104. #oauth2_token_endpoint = <URL>
  105. # PAM service
  106. #pam_serivce = radicale
  107. # PAM group user should be member of
  108. #pam_group_membership =
  109. # Htpasswd filename
  110. #htpasswd_filename = /etc/radicale/users
  111. # Htpasswd encryption method
  112. # Value: plain | bcrypt | md5 | sha256 | sha512 | argon2 | autodetect
  113. # bcrypt requires the installation of 'bcrypt' module.
  114. # argon2 requires the installation of 'argon2-cffi' module.
  115. #htpasswd_encryption = autodetect
  116. # Enable caching of htpasswd file based on size and mtime_ns
  117. #htpasswd_cache = False
  118. # Incorrect authentication delay (seconds)
  119. #delay = 1
  120. # Message displayed in the client when a password is needed
  121. #realm = Radicale - Password Required
  122. # Convert username to lowercase, must be true for case-insensitive auth providers
  123. #lc_username = False
  124. # Strip domain name from username
  125. #strip_domain = False
  126. [rights]
  127. # Rights backend
  128. # Value: authenticated | owner_only | owner_write | from_file
  129. #type = owner_only
  130. # File for rights management from_file
  131. #file = /etc/radicale/rights
  132. # Permit delete of a collection (global)
  133. #permit_delete_collection = True
  134. # Permit overwrite of a collection (global)
  135. #permit_overwrite_collection = True
  136. # URL Decode the given username (when URL-encoded by the client - useful for iOS devices when using email address)
  137. # urldecode_username = False
  138. [storage]
  139. # Storage backend
  140. # Value: multifilesystem | multifilesystem_nolock
  141. #type = multifilesystem
  142. # Folder for storing local collections, created if not present
  143. #filesystem_folder = /var/lib/radicale/collections
  144. # Folder for storing cache of local collections, created if not present
  145. # Note: only used in case of use_cache_subfolder_* options are active
  146. # Note: can be used on multi-instance setup to cache files on local node (see below)
  147. #filesystem_cache_folder = (filesystem_folder)
  148. # Use subfolder 'collection-cache' for 'item' cache file structure instead of inside collection folder
  149. # Note: can be used on multi-instance setup to cache 'item' on local node
  150. #use_cache_subfolder_for_item = False
  151. # Use subfolder 'collection-cache' for 'history' cache file structure instead of inside collection folder
  152. # Note: use only on single-instance setup, will break consistency with client in multi-instance setup
  153. #use_cache_subfolder_for_history = False
  154. # Use subfolder 'collection-cache' for 'sync-token' cache file structure instead of inside collection folder
  155. # Note: use only on single-instance setup, will break consistency with client in multi-instance setup
  156. #use_cache_subfolder_for_synctoken = False
  157. # Use last modifiction time (nanoseconds) and size (bytes) for 'item' cache instead of SHA256 (improves speed)
  158. # Note: check used filesystem mtime precision before enabling
  159. # Note: conversion is done on access, bulk conversion can be done offline using storage verification option: radicale --verify-storage
  160. #use_mtime_and_size_for_item_cache = False
  161. # Use configured umask for folder creation (not applicable for OS Windows)
  162. # Useful value: 0077 | 0027 | 0007 | 0022
  163. #folder_umask = (system default, usual 0022)
  164. # Delete sync token that are older (seconds)
  165. #max_sync_token_age = 2592000
  166. # Skip broken item instead of triggering an exception
  167. #skip_broken_item = True
  168. # Command that is run after changes to storage, default is emtpy
  169. # Supported placeholders:
  170. # %(user)s: logged-in user
  171. # %(cwd)s : current working directory
  172. # %(path)s: full path of item
  173. # %(to_path)s: full path of destination item (only set on MOVE request)
  174. # %(request)s: request method
  175. # Command will be executed with base directory defined in filesystem_folder
  176. # For "git" check DOCUMENTATION.md for bootstrap instructions
  177. # Example(test): echo \"user=%(user)s path=%(path)s cwd=%(cwd)s\"
  178. # Example(test/json): echo \"hook-json {'user':'%(user)s', 'cwd':'%(cwd)s', 'path':'%(path)s', 'request':'%(request)s', 'to_path':'%(to_path)s'}\"
  179. # Example(git): git add -A && (git diff --cached --quiet || git commit -m "Changes by \"%(user)s\"")
  180. #hook =
  181. # Create predefined user collections
  182. #
  183. # json format:
  184. #
  185. # {
  186. # "def-addressbook": {
  187. # "D:displayname": "Personal Address Book",
  188. # "tag": "VADDRESSBOOK"
  189. # },
  190. # "def-calendar": {
  191. # "C:supported-calendar-component-set": "VEVENT,VJOURNAL,VTODO",
  192. # "D:displayname": "Personal Calendar",
  193. # "tag": "VCALENDAR"
  194. # }
  195. # }
  196. #
  197. #predefined_collections =
  198. [web]
  199. # Web interface backend
  200. # Value: none | internal
  201. #type = internal
  202. [logging]
  203. # Threshold for the logger
  204. # Value: debug | info | warning | error | critical
  205. #level = info
  206. # do not filter debug messages starting with 'TRACE'
  207. #trace_on_debug = False
  208. # filter debug messages starting with 'TRACE/<TOKEN>'
  209. #trace_filter = ""
  210. # Don't include passwords in logs
  211. #mask_passwords = True
  212. # Log bad PUT request content
  213. #bad_put_request_content = False
  214. # Log backtrace on level=debug
  215. #backtrace_on_debug = False
  216. # Log request header on level=debug
  217. #request_header_on_debug = False
  218. # Log request content on level=debug
  219. #request_content_on_debug = False
  220. # Log response content on level=debug
  221. #response_content_on_debug = False
  222. # Log rights rule which doesn't match on level=debug
  223. #rights_rule_doesnt_match_on_debug = False
  224. # Log storage cache actions on level=debug
  225. #storage_cache_actions_on_debug = False
  226. [headers]
  227. # Additional HTTP headers
  228. #Access-Control-Allow-Origin = *
  229. [hook]
  230. # Hook types
  231. # Value: none | rabbitmq | email
  232. #type = none
  233. # dry-run (do not really trigger hook action)
  234. #dryrun = False
  235. # hook: rabbitmq
  236. #rabbitmq_endpoint =
  237. #rabbitmq_topic =
  238. #rabbitmq_queue_type = classic
  239. # hook: email
  240. #smtp_server = localhost
  241. #smtp_port = 25
  242. #smtp_security = starttls
  243. #smtp_ssl_verify_mode = REQUIRED
  244. #smtp_username =
  245. #smtp_password =
  246. #from_email =
  247. #mass_email = False
  248. #new_or_added_to_event_template =
  249. #deleted_or_removed_from_event_template =
  250. #updated_event_template =
  251. [reporting]
  252. # When returning a free-busy report, limit the number of returned
  253. # occurences per event to prevent DoS attacks.
  254. #max_freebusy_occurrence = 10000