config 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357
  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. # Use X-Remote-Addr for remote IP (rip) in dovecot authentication
  95. #dovecot_rip_x_remote_addr = False
  96. # IMAP server hostname
  97. # Syntax: address | address:port | [address]:port | imap.server.tld
  98. #imap_host = localhost
  99. # Secure the IMAP connection
  100. # Value: tls | starttls | none
  101. #imap_security = tls
  102. # OAuth2 token endpoint URL
  103. #oauth2_token_endpoint = <URL>
  104. # PAM service
  105. #pam_serivce = radicale
  106. # PAM group user should be member of
  107. #pam_group_membership =
  108. # Htpasswd filename
  109. #htpasswd_filename = /etc/radicale/users
  110. # Htpasswd encryption method
  111. # Value: plain | bcrypt | md5 | sha256 | sha512 | argon2 | autodetect
  112. # bcrypt requires the installation of 'bcrypt' module.
  113. # argon2 requires the installation of 'argon2-cffi' module.
  114. #htpasswd_encryption = autodetect
  115. # Enable caching of htpasswd file based on size and mtime_ns
  116. #htpasswd_cache = False
  117. # Incorrect authentication delay (seconds)
  118. #delay = 1
  119. # Message displayed in the client when a password is needed
  120. #realm = Radicale - Password Required
  121. # Convert username to lowercase, must be true for case-insensitive auth providers
  122. #lc_username = False
  123. # Strip domain name from username
  124. #strip_domain = False
  125. [rights]
  126. # Rights backend
  127. # Value: authenticated | owner_only | owner_write | from_file
  128. #type = owner_only
  129. # File for rights management from_file
  130. #file = /etc/radicale/rights
  131. # Permit delete of a collection (global)
  132. #permit_delete_collection = True
  133. # Permit overwrite of a collection (global)
  134. #permit_overwrite_collection = True
  135. # URL Decode the given username (when URL-encoded by the client - useful for iOS devices when using email address)
  136. # urldecode_username = False
  137. [storage]
  138. # Storage backend
  139. # Value: multifilesystem | multifilesystem_nolock
  140. #type = multifilesystem
  141. # Folder for storing local collections, created if not present
  142. #filesystem_folder = /var/lib/radicale/collections
  143. # Folder for storing cache of local collections, created if not present
  144. # Note: only used in case of use_cache_subfolder_* options are active
  145. # Note: can be used on multi-instance setup to cache files on local node (see below)
  146. #filesystem_cache_folder = (filesystem_folder)
  147. # Use subfolder 'collection-cache' for 'item' cache file structure instead of inside collection folder
  148. # Note: can be used on multi-instance setup to cache 'item' on local node
  149. #use_cache_subfolder_for_item = False
  150. # Use subfolder 'collection-cache' for 'history' cache file structure instead of inside collection folder
  151. # Note: use only on single-instance setup, will break consistency with client in multi-instance setup
  152. #use_cache_subfolder_for_history = False
  153. # Use subfolder 'collection-cache' for 'sync-token' cache file structure instead of inside collection folder
  154. # Note: use only on single-instance setup, will break consistency with client in multi-instance setup
  155. #use_cache_subfolder_for_synctoken = False
  156. # Use last modifiction time (nanoseconds) and size (bytes) for 'item' cache instead of SHA256 (improves speed)
  157. # Note: check used filesystem mtime precision before enabling
  158. # Note: conversion is done on access, bulk conversion can be done offline using storage verification option: radicale --verify-storage
  159. #use_mtime_and_size_for_item_cache = False
  160. # Use configured umask for folder creation (not applicable for OS Windows)
  161. # Useful value: 0077 | 0027 | 0007 | 0022
  162. #folder_umask = (system default, usual 0022)
  163. # Delete sync token that are older (seconds)
  164. #max_sync_token_age = 2592000
  165. # Skip broken item instead of triggering an exception
  166. #skip_broken_item = True
  167. # Command that is run after changes to storage, default is emtpy
  168. # Supported placeholders:
  169. # %(user)s: logged-in user
  170. # %(cwd)s : current working directory
  171. # %(path)s: full path of item
  172. # %(to_path)s: full path of destination item (only set on MOVE request)
  173. # %(request)s: request method
  174. # Command will be executed with base directory defined in filesystem_folder
  175. # For "git" check DOCUMENTATION.md for bootstrap instructions
  176. # Example(test): echo \"user=%(user)s path=%(path)s cwd=%(cwd)s\"
  177. # Example(test/json): echo \"hook-json {'user':'%(user)s', 'cwd':'%(cwd)s', 'path':'%(path)s', 'request':'%(request)s', 'to_path':'%(to_path)s'}\"
  178. # Example(git): git add -A && (git diff --cached --quiet || git commit -m "Changes by \"%(user)s\"")
  179. #hook =
  180. # Create predefined user collections
  181. #
  182. # json format:
  183. #
  184. # {
  185. # "def-addressbook": {
  186. # "D:displayname": "Personal Address Book",
  187. # "tag": "VADDRESSBOOK"
  188. # },
  189. # "def-calendar": {
  190. # "C:supported-calendar-component-set": "VEVENT,VJOURNAL,VTODO",
  191. # "D:displayname": "Personal Calendar",
  192. # "tag": "VCALENDAR"
  193. # }
  194. # }
  195. #
  196. #predefined_collections =
  197. [web]
  198. # Web interface backend
  199. # Value: none | internal
  200. #type = internal
  201. [logging]
  202. # Threshold for the logger
  203. # Value: debug | info | warning | error | critical
  204. #level = info
  205. # do not filter debug messages starting with 'TRACE'
  206. #trace_on_debug = False
  207. # filter debug messages starting with 'TRACE/<TOKEN>'
  208. #trace_filter = ""
  209. # Don't include passwords in logs
  210. #mask_passwords = True
  211. # Log bad PUT request content
  212. #bad_put_request_content = False
  213. # Log backtrace on level=debug
  214. #backtrace_on_debug = False
  215. # Log request header on level=debug
  216. #request_header_on_debug = False
  217. # Log request content on level=debug
  218. #request_content_on_debug = False
  219. # Log response content on level=debug
  220. #response_content_on_debug = False
  221. # Log rights rule which doesn't match on level=debug
  222. #rights_rule_doesnt_match_on_debug = False
  223. # Log storage cache actions on level=debug
  224. #storage_cache_actions_on_debug = False
  225. [headers]
  226. # Additional HTTP headers
  227. #Access-Control-Allow-Origin = *
  228. [hook]
  229. # Hook types
  230. # Value: none | rabbitmq | email
  231. #type = none
  232. # dry-run (do not really trigger hook action)
  233. #dryrun = False
  234. # hook: rabbitmq
  235. #rabbitmq_endpoint =
  236. #rabbitmq_topic =
  237. #rabbitmq_queue_type = classic
  238. # hook: email
  239. #smtp_server = localhost
  240. #smtp_port = 25
  241. #smtp_security = starttls
  242. #smtp_ssl_verify_mode = REQUIRED
  243. #smtp_username =
  244. #smtp_password =
  245. #from_email =
  246. #mass_email = False
  247. #new_or_added_to_event_template =
  248. #deleted_or_removed_from_event_template =
  249. #updated_event_template =
  250. [reporting]
  251. # When returning a free-busy report, limit the number of returned
  252. # occurences per event to prevent DoS attacks.
  253. #max_freebusy_occurrence = 10000