config 12 KB

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