Matrix Docker Ansible eploy
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 

2157 líneas
75 KiB

  1. {#
  2. SPDX-FileCopyrightText: 2025 MDAD project contributors
  3. SPDX-FileCopyrightText: 2025 Slavi Pantaleev
  4. SPDX-FileCopyrightText: 2025 Suguru Hirahara
  5. SPDX-FileCopyrightText: 2026 Catalan Lover <catalanlover@protonmail.com>
  6. SPDX-License-Identifier: AGPL-3.0-or-later
  7. #}
  8. ### continuwuity Configuration
  9. ### For more information, see:
  10. ### https://continuwuity.org/configuration.html
  11. [global]
  12. # The server_name is the pretty name of this server. It is used as a
  13. # suffix for user and room IDs/aliases.
  14. #
  15. # See the docs for reverse proxying and delegation:
  16. # https://continuwuity.org/deploying/generic.html#setting-up-the-reverse-proxy
  17. #
  18. # Also see the `[global.well_known]` config section at the very bottom.
  19. #
  20. # Examples of delegation:
  21. # - https://continuwuity.org/.well-known/matrix/server
  22. # - https://continuwuity.org/.well-known/matrix/client
  23. #
  24. # YOU NEED TO EDIT THIS. THIS CANNOT BE CHANGED AFTER WITHOUT A DATABASE
  25. # WIPE.
  26. #
  27. # example: "continuwuity.org"
  28. #
  29. server_name = {{ matrix_continuwuity_config_server_name | to_json }}
  30. # The default address (IPv4 or IPv6) continuwuity will listen on.
  31. #
  32. # If you are using Docker or a container NAT networking setup, this must
  33. # be "0.0.0.0".
  34. #
  35. # To listen on multiple addresses, specify a vector e.g. ["127.0.0.1",
  36. # "::1"]
  37. #
  38. address = "0.0.0.0"
  39. # The port(s) continuwuity will listen on.
  40. #
  41. # For reverse proxying, see:
  42. # https://continuwuity.org/deploying/generic.html#setting-up-the-reverse-proxy
  43. #
  44. # If you are using Docker, don't change this, you'll need to map an
  45. # external port to this.
  46. #
  47. # To listen on multiple ports, specify a vector e.g. [8080, 8448]
  48. #
  49. port = {{ matrix_continuwuity_config_port_number }}
  50. # The UNIX socket continuwuity will listen on.
  51. #
  52. # continuwuity cannot listen on both an IP address and a UNIX socket. If
  53. # listening on a UNIX socket, you MUST remove/comment the `address` key.
  54. #
  55. # Remember to make sure that your reverse proxy has access to this socket
  56. # file, either by adding your reverse proxy to the appropriate user group
  57. # or granting world R/W permissions with `unix_socket_perms` (666
  58. # minimum).
  59. #
  60. # example: "/run/continuwuity/continuwuity.sock"
  61. #
  62. #unix_socket_path =
  63. # The default permissions (in octal) to create the UNIX socket with.
  64. #
  65. #unix_socket_perms = 660
  66. # This is the only directory where continuwuity will save its data,
  67. # including media. Note: this was previously "/var/lib/matrix-conduit".
  68. #
  69. # YOU NEED TO EDIT THIS.
  70. #
  71. # example: "/var/lib/continuwuity"
  72. #
  73. database_path = "/var/lib/continuwuity"
  74. # continuwuity supports online database backups using RocksDB's Backup
  75. # engine API. To use this, set a database backup path that continuwuity
  76. # can write to.
  77. #
  78. # For more information, see:
  79. # https://continuwuity.org/maintenance.html#backups
  80. #
  81. # example: "/opt/continuwuity-db-backups"
  82. #
  83. #database_backup_path =
  84. # The amount of online RocksDB database backups to keep/retain, if using
  85. # "database_backup_path", before deleting the oldest one.
  86. #
  87. #database_backups_to_keep = 1
  88. # Text which will be added to the end of the user's displayname upon
  89. # registration with a space before the text. In Conduit, this was the
  90. # lightning bolt emoji.
  91. #
  92. # To disable, set this to "" (an empty string).
  93. #
  94. # The default is the trans pride flag.
  95. #
  96. # example: "🏳️‍⚧️"
  97. #
  98. new_user_displayname_suffix = {{ matrix_continuwuity_config_new_user_displayname_suffix | to_json }}
  99. # If enabled, continuwuity will send a simple GET request periodically to
  100. # `https://continuwuity.org/.well-known/continuwuity/announcements` for any new
  101. # announcements or major updates. This is not an update check endpoint.
  102. #
  103. allow_announcements_check = {{ matrix_continuwuity_config_allow_announcements_check | to_json }}
  104. # Set this to any float value to multiply continuwuity's in-memory LRU
  105. # caches with such as "auth_chain_cache_capacity".
  106. #
  107. # May be useful if you have significant memory to spare to increase
  108. # performance.
  109. #
  110. # If you have low memory, reducing this may be viable.
  111. #
  112. # By default, the individual caches such as "auth_chain_cache_capacity"
  113. # are scaled by your CPU core count.
  114. #
  115. #cache_capacity_modifier = 1.0
  116. # Set this to any float value in megabytes for continuwuity to tell the
  117. # database engine that this much memory is available for database read
  118. # caches.
  119. #
  120. # May be useful if you have significant memory to spare to increase
  121. # performance.
  122. #
  123. # Similar to the individual LRU caches, this is scaled up with your CPU
  124. # core count.
  125. #
  126. # This defaults to 128.0 + (64.0 * CPU core count).
  127. #
  128. #db_cache_capacity_mb = varies by system
  129. # Set this to any float value in megabytes for continuwuity to tell the
  130. # database engine that this much memory is available for database write
  131. # caches.
  132. #
  133. # May be useful if you have significant memory to spare to increase
  134. # performance.
  135. #
  136. # Similar to the individual LRU caches, this is scaled up with your CPU
  137. # core count.
  138. #
  139. # This defaults to 48.0 + (4.0 * CPU core count).
  140. #
  141. #db_write_buffer_capacity_mb = varies by system
  142. # This item is undocumented. Please contribute documentation for it.
  143. #
  144. #pdu_cache_capacity = varies by system
  145. # This item is undocumented. Please contribute documentation for it.
  146. #
  147. #auth_chain_cache_capacity = varies by system
  148. # This item is undocumented. Please contribute documentation for it.
  149. #
  150. #shorteventid_cache_capacity = varies by system
  151. # This item is undocumented. Please contribute documentation for it.
  152. #
  153. #eventidshort_cache_capacity = varies by system
  154. # This item is undocumented. Please contribute documentation for it.
  155. #
  156. #eventid_pdu_cache_capacity = varies by system
  157. # This item is undocumented. Please contribute documentation for it.
  158. #
  159. #shortstatekey_cache_capacity = varies by system
  160. # This item is undocumented. Please contribute documentation for it.
  161. #
  162. #statekeyshort_cache_capacity = varies by system
  163. # This item is undocumented. Please contribute documentation for it.
  164. #
  165. #servernameevent_data_cache_capacity = varies by system
  166. # This item is undocumented. Please contribute documentation for it.
  167. #
  168. #stateinfo_cache_capacity = varies by system
  169. # This item is undocumented. Please contribute documentation for it.
  170. #
  171. #roomid_spacehierarchy_cache_capacity = varies by system
  172. # Maximum entries stored in DNS memory-cache. The size of an entry may
  173. # vary so please take care if raising this value excessively. Only
  174. # decrease this when using an external DNS cache. Please note that
  175. # systemd-resolved does *not* count as an external cache, even when
  176. # configured to do so.
  177. #
  178. #dns_cache_entries = 32768
  179. # Minimum time-to-live in seconds for entries in the DNS cache. The
  180. # default may appear high to most administrators; this is by design as the
  181. # majority of NXDOMAINs are correct for a long time (e.g. the server is no
  182. # longer running Matrix). Only decrease this if you are using an external
  183. # DNS cache.
  184. #
  185. #dns_min_ttl = 10800
  186. # Minimum time-to-live in seconds for NXDOMAIN entries in the DNS cache.
  187. # This value is critical for the server to federate efficiently.
  188. # NXDOMAIN's are assumed to not be returning to the federation and
  189. # aggressively cached rather than constantly rechecked.
  190. #
  191. # Defaults to 3 days as these are *very rarely* false negatives.
  192. #
  193. #dns_min_ttl_nxdomain = 259200
  194. # Number of DNS nameserver retries after a timeout or error.
  195. #
  196. #dns_attempts = 10
  197. # The number of seconds to wait for a reply to a DNS query. Please note
  198. # that recursive queries can take up to several seconds for some domains,
  199. # so this value should not be too low, especially on slower hardware or
  200. # resolvers.
  201. #
  202. #dns_timeout = 10
  203. # Fallback to TCP on DNS errors. Set this to false if unsupported by
  204. # nameserver.
  205. #
  206. #dns_tcp_fallback = true
  207. # Enable to query all nameservers until the domain is found. Referred to
  208. # as "trust_negative_responses" in hickory_resolver. This can avoid
  209. # useless DNS queries if the first nameserver responds with NXDOMAIN or
  210. # an empty NOERROR response.
  211. #
  212. #query_all_nameservers = true
  213. # Enable using *only* TCP for querying your specified nameservers instead
  214. # of UDP.
  215. #
  216. # If you are running continuwuity in a container environment, this config
  217. # option may need to be enabled. For more details, see:
  218. # https://continuwuity.org/troubleshooting.html#potential-dns-issues-when-using-docker
  219. #
  220. #query_over_tcp_only = false
  221. # DNS A/AAAA record lookup strategy
  222. #
  223. # Takes a number of one of the following options:
  224. # 1 - Ipv4Only (Only query for A records, no AAAA/IPv6)
  225. #
  226. # 2 - Ipv6Only (Only query for AAAA records, no A/IPv4)
  227. #
  228. # 3 - Ipv4AndIpv6 (Query for A and AAAA records in parallel, uses whatever
  229. # returns a successful response first)
  230. #
  231. # 4 - Ipv6thenIpv4 (Query for AAAA record, if that fails then query the A
  232. # record)
  233. #
  234. # 5 - Ipv4thenIpv6 (Query for A record, if that fails then query the AAAA
  235. # record)
  236. #
  237. # If you don't have IPv6 networking, then for better DNS performance it
  238. # may be suitable to set this to Ipv4Only (1) as you will never ever use
  239. # the AAAA record contents even if the AAAA record is successful instead
  240. # of the A record.
  241. #
  242. #ip_lookup_strategy = 5
  243. # The source to use for discovering the real connecting client IP.
  244. #
  245. # Takes any of the following options:
  246. #
  247. # "cf_connecting_ip" - `Cf-Connecting-Ip` header
  248. # "cloudfront_viewer_address" - `CloudFront-Viewer-Address` header
  249. # "fly_client_ip" - `Fly-Client-IP` header
  250. # "x_forwarded_for" - rightmost value of the `X-Forwarded-For` header
  251. # "true_client_ip" - `True-Client-Ip` header
  252. # "x_envoy_external_address" - `X-Envoy-External-Address` header
  253. # "x_real_ip" - `X-Real-Ip` header
  254. #
  255. # Only set this if you are certain only your reverse proxy
  256. # will send the expected header. There is no "is the connecting IP allowed
  257. # to set this header" check; if the header selected is present, it is
  258. # used.
  259. #
  260. # Defaults to the IP address actually making the connection.
  261. #
  262. #request_ip_source = false
  263. # Max request size for file uploads in bytes. Defaults to 20MB.
  264. # Also limits incoming federated media.
  265. #
  266. max_request_size = {{ matrix_continuwuity_config_max_request_size }}
  267. # This item is undocumented. Please contribute documentation for it.
  268. #
  269. #max_fetch_prev_events = 1024
  270. # How many incoming federation transactions the server is willing to be
  271. # processing at any given time before it becomes overloaded and starts
  272. # rejecting further transactions until some slots become available.
  273. #
  274. # Setting this value too low or too high may result in unstable
  275. # federation, and setting it too high may cause runaway resource usage.
  276. #
  277. #max_concurrent_inbound_transactions = 150
  278. # Maximum age (in seconds) for cached federation transaction responses.
  279. # Entries older than this will be removed during cleanup.
  280. #
  281. #transaction_id_cache_max_age_secs = 7200 (2 hours)
  282. # Maximum number of cached federation transaction responses.
  283. # When the cache exceeds this limit, older entries will be removed.
  284. #
  285. #transaction_id_cache_max_entries = 8192
  286. # Default/base connection timeout (seconds). This is used only by URL
  287. # previews and update/news endpoint checks.
  288. #
  289. #request_conn_timeout = 10
  290. # Default/base request timeout (seconds). The time waiting to receive more
  291. # data from another server. This is used only by URL previews,
  292. # update/news, and misc endpoint checks.
  293. #
  294. #request_timeout = 35
  295. # Default/base request total timeout (seconds). The time limit for a whole
  296. # request. This is set very high to not cancel healthy requests while
  297. # serving as a backstop. This is used only by URL previews and update/news
  298. # endpoint checks.
  299. #
  300. #request_total_timeout = 320
  301. # Default/base idle connection pool timeout (seconds). This is used only
  302. # by URL previews and update/news endpoint checks.
  303. #
  304. #request_idle_timeout = 5
  305. # Default/base max idle connections per host. This is used only by URL
  306. # previews and update/news endpoint checks. Defaults to 1 as generally the
  307. # same open connection can be re-used.
  308. #
  309. #request_idle_per_host = 1
  310. # Federation well-known resolution connection timeout (seconds).
  311. #
  312. #well_known_conn_timeout = 6
  313. # Federation HTTP well-known resolution request timeout (seconds).
  314. #
  315. #well_known_timeout = 10
  316. # Federation client connection timeout (seconds). You should not set this
  317. # to high values, as dead homeservers can significantly slow down
  318. # federation, specifically key retrieval, which will take roughly the
  319. # amount of time you configure here given that a homeserver doesn't
  320. # respond. This will cause most clients to time out /keys/query, causing
  321. # E2EE and device verification to fail.
  322. #
  323. #federation_conn_timeout = 10
  324. # Federation client request timeout (seconds). You most definitely want
  325. # this to be high to account for extremely large room joins, slow
  326. # homeservers, your own resources etc.
  327. #
  328. # Joins have 6x the timeout.
  329. #
  330. #federation_timeout = 60
  331. # Policy server request timeout (seconds). Generally policy
  332. # servers should respond near instantly, however may slow down under
  333. # load. If a policy server doesn't respond in a short amount of time, the
  334. # room it is configured in may become unusable if this limit is set too
  335. # high. 30 seconds is a good default, however lower values may be
  336. # acceptable if temporary send failures are an okay trade-off.
  337. #
  338. #
  339. # About policy servers: https://matrix.org/blog/2025/04/introducing-policy-servers/
  340. # (Stabilized in Matrix v1.18)
  341. #
  342. #policy_server_request_timeout = 30
  343. # Federation client idle connection pool timeout (seconds).
  344. #
  345. #federation_idle_timeout = 25
  346. # Federation client max idle connections per host. Defaults to 1 as
  347. # generally the same open connection can be re-used.
  348. #
  349. #federation_idle_per_host = 1
  350. # Federation sender request timeout (seconds). The time it takes for the
  351. # remote server to process sent transactions can take a while.
  352. #
  353. #sender_timeout = 180
  354. # Federation sender idle connection pool timeout (seconds).
  355. #
  356. #sender_idle_timeout = 180
  357. # Federation sender transaction retry backoff limit (seconds).
  358. #
  359. #sender_retry_backoff_limit = 86400
  360. # Appservice URL request connection timeout. Defaults to 35 seconds as
  361. # generally appservices are hosted within the same network.
  362. #
  363. #appservice_timeout = 35
  364. # Appservice URL idle connection pool timeout (seconds).
  365. #
  366. #appservice_idle_timeout = 300
  367. # Notification gateway pusher request connection timeout (seconds).
  368. #
  369. #pusher_conn_timeout = 15
  370. # Notification gateway pusher total request timeout (seconds).
  371. #
  372. #pusher_timeout = 60
  373. # Notification gateway pusher idle connection pool timeout (seconds).
  374. #
  375. #pusher_idle_timeout = 15
  376. # Maximum time to receive a request from a client (seconds).
  377. #
  378. #client_receive_timeout = 75
  379. # Maximum time to process a request received from a client (seconds).
  380. #
  381. #client_request_timeout = 180
  382. # Maximum time to transmit a response to a client (seconds)
  383. #
  384. #client_response_timeout = 120
  385. # Grace period for clean shutdown of client requests (seconds).
  386. #
  387. #client_shutdown_timeout = 10
  388. # Grace period for clean shutdown of federation requests (seconds).
  389. #
  390. #sender_shutdown_timeout = 5
  391. # Enables registration. If set to false, no users can register on this
  392. # server.
  393. #
  394. # If set to true without a token configured, users can register with no
  395. # form of 2nd-step only if you set the following option to true:
  396. # `yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse`
  397. #
  398. # If you would like registration only via token reg, please configure
  399. # `registration_token`.
  400. #
  401. allow_registration = {{ matrix_continuwuity_config_allow_registration | to_json }}
  402. # If registration is enabled, and this setting is true, new users
  403. # registered after the first admin user will be automatically suspended
  404. # and will require an admin to run `!admin users unsuspend <user_id>`.
  405. #
  406. # Suspended users are still able to read messages, make profile updates,
  407. # leave rooms, and deactivate their account, however cannot send messages,
  408. # invites, or create/join or otherwise modify rooms.
  409. # They are effectively read-only.
  410. #
  411. # If you want to use this to screen people who register on your server,
  412. # you should add a room to `auto_join_rooms` that is public, and contains
  413. # information that new users can read (since they won't be able to DM
  414. # anyone, or send a message, and may be confused).
  415. #
  416. suspend_on_register = {{ matrix_continuwuity_config_suspend_on_register | to_json }}
  417. # Enabling this setting opens registration to anyone without restrictions.
  418. # This makes your server vulnerable to abuse
  419. #
  420. yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = {{ matrix_continuwuity_config_yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse | to_json }}
  421. # A static registration token that new users will have to provide when
  422. # creating an account. This token does not supersede tokens from other
  423. # sources, such as the `!admin token` command or the
  424. # `registration_token_file` configuration option.
  425. #
  426. # example: "o&^uCtes4HPf0Vu@F20jQeeWE7"
  427. #
  428. {% if matrix_continuwuity_config_registration_token != '' %}
  429. registration_token = {{ matrix_continuwuity_config_registration_token | to_json }}
  430. {% endif %}
  431. # A path to a file containing static registration tokens, one per line.
  432. # Tokens in this file do not supersede tokens from other sources, such as
  433. # the `!admin token` command or the `registration_token` configuration
  434. # option.
  435. #
  436. # The file will be read once, when Continuwuity starts. It is not
  437. # currently reread when the server configuration is reloaded. If the file
  438. # cannot be read, Continuwuity will fail to start.
  439. #
  440. #registration_token_file =
  441. {% if matrix_continuwuity_recaptcha_enabled %}
  442. # The public site key for reCaptcha. If this is provided, reCaptcha
  443. # becomes required during registration. If both captcha *and*
  444. # registration token are enabled, both will be required during
  445. # registration.
  446. #
  447. # IMPORTANT: "Verify the origin of reCAPTCHA solutions" **MUST** BE
  448. # DISABLED IF YOU WANT THE CAPTCHA TO WORK IN 3RD PARTY CLIENTS, OR
  449. # CLIENTS HOSTED ON DOMAINS OTHER THAN YOUR OWN!
  450. #
  451. # Registration must be enabled (`allow_registration` must be true) for
  452. # this to have any effect.
  453. #
  454. recaptcha_site_key = {{ matrix_continuwuity_config_recaptcha_site_key | to_json }}
  455. # The private site key for reCaptcha.
  456. # If this is omitted, captcha registration will not work,
  457. # even if `recaptcha_site_key` is set.
  458. #
  459. recaptcha_private_site_key = {{ matrix_continuwuity_config_recaptcha_private_site_key | to_json }}
  460. {% endif %}
  461. # Controls whether users are allowed to deactivate their own accounts
  462. # through the account management panel or their Matrix clients. Server
  463. # admins can always deactivate users using the relevant admin commands.
  464. #
  465. # Note that, in some jurisdictions, you may be legally required to honor
  466. # users who request to deactivate their accounts if you set this option
  467. # to `false`.
  468. #
  469. #allow_deactivation = true
  470. # Controls whether encrypted rooms and events are allowed.
  471. #
  472. allow_encryption = {{ matrix_continuwuity_config_allow_encryption | to_json }}
  473. # Controls whether federation is allowed or not. It is not recommended to
  474. # disable this after the fact due to potential federation breakage.
  475. #
  476. allow_federation = {{ matrix_continuwuity_config_allow_federation | to_json }}
  477. # Allows federation requests to be made to itself
  478. #
  479. # This isn't intended and is very likely a bug if federation requests are
  480. # being sent to yourself. This currently mainly exists for development
  481. # purposes.
  482. #
  483. #federation_loopback = false
  484. # Always calls /forget on behalf of the user if leaving a room. This is a
  485. # part of MSC4267 "Automatically forgetting rooms on leave"
  486. #
  487. forget_forced_upon_leave = {{ matrix_continuwuity_config_forget_forced_upon_leave | to_json }}
  488. # Set this to true to require authentication on the normally
  489. # unauthenticated profile retrieval endpoints (GET)
  490. # "/_matrix/client/v3/profile/{userId}".
  491. #
  492. # This can prevent profile scraping.
  493. #
  494. #require_auth_for_profile_requests = false
  495. # Set this to true to allow your server's public room directory to be
  496. # federated. Set this to false to protect against /publicRooms spiders,
  497. # but will forbid external users from viewing your server's public room
  498. # directory. If federation is disabled entirely (`allow_federation`), this
  499. # is inherently false.
  500. #
  501. #allow_public_room_directory_over_federation = false
  502. # Set this to true to lock down your server's public room directory and
  503. # only allow admins to publish rooms to the room directory. Unpublishing
  504. # is still allowed by all users with this enabled.
  505. #
  506. #lockdown_public_room_directory = false
  507. # Set this to true to allow federating device display names / allow
  508. # external users to see your device display name. If federation is
  509. # disabled entirely (`allow_federation`), this is inherently false. For
  510. # privacy reasons, this is best left disabled.
  511. #
  512. #allow_device_name_federation = false
  513. # Config option to allow or disallow incoming federation requests that
  514. # obtain the profiles of our local users from
  515. # `/_matrix/federation/v1/query/profile`
  516. #
  517. # Increases privacy of your local user's such as display names, but some
  518. # remote users may get a false "this user does not exist" error when they
  519. # try to invite you to a DM or room. Also can protect against profile
  520. # spiders.
  521. #
  522. # This is inherently false if `allow_federation` is disabled
  523. #
  524. #allow_inbound_profile_lookup_federation_requests = true
  525. # Allow standard users to create rooms. Appservices and admins are always
  526. # allowed to create rooms
  527. #
  528. allow_room_creation = {{ matrix_continuwuity_config_allow_room_creation | to_json }}
  529. # Set to false to disable users from joining or creating room versions
  530. # that aren't officially supported by continuwuity.
  531. #
  532. # continuwuity officially supports room versions 6 - 12.
  533. #
  534. # continuwuity has slightly experimental (though works fine in practice)
  535. # support for versions 3 - 5.
  536. #
  537. #allow_unstable_room_versions = true
  538. # Default room version continuwuity will create rooms with.
  539. # Note that this has to be a string since the room version is a string
  540. # rather than an integer. Forgetting the quotes will make the server fail
  541. # to start!
  542. #
  543. # Per spec, room version "12" is the default.
  544. #
  545. default_room_version = {{ matrix_continuwuity_config_default_room_version | to_json }}
  546. # A default allow value for the Access Control List when creating a room.
  547. #
  548. # If a list is provided, new rooms will be created with
  549. # a m.room.server_acl event. Only servers which match one of the patterns
  550. # in the list will be permitted to participate in the room.
  551. #
  552. # ACLs in existing rooms will not be updated automatically. This is not
  553. # a substitute for moderation bots.
  554. #
  555. #default_room_acl_allow =
  556. # A default deny value for the Access Control List when creating a room.
  557. #
  558. # If a list is provided, new rooms will be created with
  559. # a m.room.server_acl event. Servers which match one of the patterns
  560. # in the list will be NOT permitted to participate in the room.
  561. #
  562. # This config cannot be used if the default_room_acl_allow config is used.
  563. #
  564. # ACLs in existing rooms will not be updated automatically. This is not
  565. # a substitute for moderation bots.
  566. #
  567. #default_room_acl_deny =
  568. # The number of forward extremities to tolerate in a room before
  569. # attempting to manually squash them with a "dummy event". Setting this
  570. # above 20 will hinder its efficacy, and setting it below 5 will cause
  571. # more dummy events to be sent than necessary (which increases federation
  572. # traffic).
  573. #
  574. #dummy_event_threshold = 10
  575. # Enable OpenTelemetry OTLP tracing export. This replaces the deprecated
  576. # Jaeger exporter. Traces will be sent via OTLP to a collector (such as
  577. # Jaeger) that supports the OpenTelemetry Protocol.
  578. #
  579. # Configure your OTLP endpoint using the OTEL_EXPORTER_OTLP_ENDPOINT
  580. # environment variable (defaults to http://localhost:4318).
  581. #
  582. #allow_otlp = false
  583. # Filter for OTLP tracing spans. This controls which spans are exported
  584. # to the OTLP collector.
  585. #
  586. #otlp_filter = "info"
  587. # Protocol to use for OTLP tracing export. Options are "http" or "grpc".
  588. # The HTTP protocol uses port 4318 by default, while gRPC uses port 4317.
  589. #
  590. #otlp_protocol = "http"
  591. # If the 'perf_measurements' compile-time feature is enabled, enables
  592. # collecting folded stack trace profile of tracing spans using
  593. # tracing_flame. The resulting profile can be visualized with inferno[1],
  594. # speedscope[2], or a number of other tools.
  595. #
  596. # [1]: https://github.com/jonhoo/inferno
  597. # [2]: www.speedscope.app
  598. #
  599. #tracing_flame = false
  600. # This item is undocumented. Please contribute documentation for it.
  601. #
  602. #tracing_flame_filter = "info"
  603. # This item is undocumented. Please contribute documentation for it.
  604. #
  605. #tracing_flame_output_path = "./tracing.folded"
  606. # Examples:
  607. #
  608. # - No proxy (default):
  609. #
  610. # proxy = "none"
  611. #
  612. # - For global proxy, create the section at the bottom of this file:
  613. #
  614. # [global.proxy]
  615. # global = { url = "socks5h://localhost:9050" }
  616. #
  617. # - To proxy some domains:
  618. #
  619. # [global.proxy]
  620. # [[global.proxy.by_domain]]
  621. # url = "socks5h://localhost:9050"
  622. # include = ["*.onion", "matrix.myspecial.onion"]
  623. # exclude = ["*.myspecial.onion"]
  624. #
  625. # Include vs. Exclude:
  626. #
  627. # - If include is an empty list, it is assumed to be `["*"]`.
  628. #
  629. # - If a domain matches both the exclude and include list, the proxy will
  630. # only be used if it was included because of a more specific rule than
  631. # it was excluded. In the above example, the proxy would be used for
  632. # `ordinary.onion`, `matrix.myspecial.onion`, but not
  633. # `hello.myspecial.onion`.
  634. #
  635. #proxy = "none"
  636. # Servers listed here will be used to gather public keys of other servers
  637. # (notary trusted key servers).
  638. #
  639. # Currently, continuwuity doesn't support inbound batched key requests, so
  640. # this list should only contain other Synapse servers.
  641. #
  642. # example: ["matrix.org", "tchncs.de"]
  643. #
  644. trusted_servers = {{ matrix_continuwuity_config_trusted_servers | to_json }}
  645. # Whether to query the servers listed in trusted_servers first or query
  646. # the origin server first. For best security, querying the origin server
  647. # first is advised to minimize the exposure to a compromised trusted
  648. # server. For maximum federation/join performance this can be set to true,
  649. # however other options exist to query trusted servers first under
  650. # specific high-load circumstances and should be evaluated before setting
  651. # this to true.
  652. #
  653. #query_trusted_key_servers_first = false
  654. # Whether to query the servers listed in trusted_servers first
  655. # specifically on room joins. This option limits the exposure to a
  656. # compromised trusted server to room joins only. The join operation
  657. # requires gathering keys from many origin servers which can cause
  658. # significant delays. Therefore this defaults to true to mitigate
  659. # unexpected delays out-of-the-box. The security-paranoid or those willing
  660. # to tolerate delays are advised to set this to false. Note that setting
  661. # query_trusted_key_servers_first to true causes this option to be
  662. # ignored.
  663. #
  664. #query_trusted_key_servers_first_on_join = true
  665. # Only query trusted servers for keys and never the origin server. This is
  666. # intended for clusters or custom deployments using their trusted_servers
  667. # as forwarding-agents to cache and deduplicate requests. Notary servers
  668. # do not act as forwarding-agents by default, therefore do not enable this
  669. # unless you know exactly what you are doing.
  670. #
  671. #only_query_trusted_key_servers = false
  672. # Maximum number of keys to request in each trusted server batch query.
  673. #
  674. #trusted_server_batch_size = 1024
  675. # Max log level for continuwuity. Allows debug, info, warn, or error.
  676. #
  677. # See also:
  678. # https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
  679. #
  680. # **Caveat**:
  681. # For release builds, the tracing crate is configured to only implement
  682. # levels higher than error to avoid unnecessary overhead in the compiled
  683. # binary from trace macros. For debug builds, this restriction is not
  684. # applied.
  685. #
  686. log = {{ matrix_continuwuity_config_log | to_json }}
  687. # Output logs with ANSI colours.
  688. #
  689. #log_colors = true
  690. # Configures the span events which will be outputted with the log.
  691. #
  692. #log_span_events = "none"
  693. # Configures whether CONTINUWUITY_LOG EnvFilter matches values using
  694. # regular expressions. See the tracing_subscriber documentation on
  695. # Directives.
  696. #
  697. #log_filter_regex = true
  698. # Toggles the display of ThreadId in tracing log output.
  699. #
  700. #log_thread_ids = false
  701. # Enable journald logging on Unix platforms
  702. #
  703. # When enabled, log output will be sent to the systemd journal
  704. # This is only supported on Unix platforms
  705. #
  706. #log_to_journald = false
  707. # The syslog identifier to use with journald logging
  708. #
  709. # Only used when journald logging is enabled
  710. #
  711. # Defaults to the binary name
  712. #
  713. #journald_identifier =
  714. # OpenID token expiration/TTL in seconds.
  715. #
  716. # These are the OpenID tokens that are primarily used for Matrix account
  717. # integrations (e.g. Vector Integrations in Element), *not* OIDC/OpenID
  718. # Connect/etc.
  719. #
  720. #openid_token_ttl = 3600
  721. # Allow an existing session to mint a login token for another client.
  722. # This requires interactive authentication, but has security ramifications
  723. # as a malicious client could use the mechanism to spawn more than one
  724. # session.
  725. # Enabled by default.
  726. #
  727. #login_via_existing_session = true
  728. # Login token expiration/TTL in milliseconds.
  729. #
  730. # These are short-lived tokens for the m.login.token endpoint.
  731. # This is used to allow existing sessions to create new sessions.
  732. # see login_via_existing_session.
  733. #
  734. #login_token_ttl = 120000
  735. # Static TURN username to provide the client if not using a shared secret
  736. # ("turn_secret"), It is recommended to use a shared secret over static
  737. # credentials.
  738. #
  739. {% if matrix_continuwuity_config_turn_username != '' %}
  740. turn_username = {{ matrix_continuwuity_config_turn_username | to_json }}
  741. {% endif %}
  742. # Static TURN password to provide the client if not using a shared secret
  743. # ("turn_secret"). It is recommended to use a shared secret over static
  744. # credentials.
  745. #
  746. {% if matrix_continuwuity_config_turn_password != '' %}
  747. turn_password = {{ matrix_continuwuity_config_turn_password | to_json }}
  748. {% endif %}
  749. # Vector list of TURN URIs/servers to use.
  750. #
  751. # Replace "example.turn.uri" with your TURN domain, such as the coturn
  752. # "realm" config option. If using TURN over TLS, replace the URI prefix
  753. # "turn:" with "turns:".
  754. #
  755. # example: ["turn:example.turn.uri?transport=udp",
  756. # "turn:example.turn.uri?transport=tcp"]
  757. #
  758. turn_uris = {{ matrix_continuwuity_config_turn_uris | to_json }}
  759. # TURN secret to use for generating the HMAC-SHA1 hash apart of username
  760. # and password generation.
  761. #
  762. # This is more secure, but if needed you can use traditional static
  763. # username/password credentials.
  764. #
  765. {% if matrix_continuwuity_config_turn_secret != '' %}
  766. turn_secret = {{ matrix_continuwuity_config_turn_secret | to_json }}
  767. {% endif %}
  768. # TURN secret to use that's read from the file path specified.
  769. #
  770. # This takes priority over "turn_secret" first, and falls back to
  771. # "turn_secret" if invalid or failed to open.
  772. #
  773. # example: "/etc/continuwuity/.turn_secret"
  774. #
  775. #turn_secret_file =
  776. # TURN TTL, in seconds.
  777. #
  778. #turn_ttl = 86400
  779. # List/vector of room IDs or room aliases that continuwuity will make
  780. # newly registered users join. The rooms specified must be rooms that you
  781. # have joined at least once on the server, and must be public.
  782. #
  783. # example: ["#continuwuity:continuwuity.org",
  784. # "!main-1:continuwuity.org"]
  785. #
  786. auto_join_rooms = {{ matrix_continuwuity_config_auto_join_rooms | to_json }}
  787. # Config option to automatically deactivate the account of any user who
  788. # attempts to join a:
  789. # - banned room
  790. # - forbidden room alias
  791. # - room alias or ID with a forbidden server name
  792. #
  793. # This may be useful if all your banned lists consist of toxic rooms or
  794. # servers that no good faith user would ever attempt to join, and
  795. # to automatically remediate the problem without any admin user
  796. # intervention.
  797. #
  798. # This will also make the user leave all rooms. Federation (e.g. remote
  799. # room invites) are ignored here.
  800. #
  801. # Defaults to false as rooms can be banned for non-moderation-related
  802. # reasons and this performs a full user deactivation.
  803. #
  804. #auto_deactivate_banned_room_attempts = false
  805. # RocksDB log level. This is not the same as continuwuity's log level.
  806. # This is the log level for the RocksDB engine/library which show up in
  807. # your database folder/path as `LOG` files. continuwuity will log RocksDB
  808. # errors as normal through tracing or panics if severe for safety.
  809. #
  810. #rocksdb_log_level = "error"
  811. # This item is undocumented. Please contribute documentation for it.
  812. #
  813. #rocksdb_log_stderr = false
  814. # Max RocksDB `LOG` file size before rotating in bytes. Defaults to 4MB in
  815. # bytes.
  816. #
  817. #rocksdb_max_log_file_size = 4194304
  818. # Time in seconds before RocksDB will forcibly rotate logs.
  819. #
  820. #rocksdb_log_time_to_roll = 0
  821. # Set this to true to use RocksDB config options that are tailored to HDDs
  822. # (slower device storage).
  823. #
  824. # It is worth noting that by default, continuwuity will use RocksDB with
  825. # Direct IO enabled. *Generally* speaking this improves performance as it
  826. # bypasses buffered I/O (system page cache). However there is a potential
  827. # chance that Direct IO may cause issues with database operations if your
  828. # setup is uncommon. This has been observed with FUSE filesystems, and
  829. # possibly ZFS filesystem. RocksDB generally deals/corrects these issues
  830. # but it cannot account for all setups. If you experience any weird
  831. # RocksDB issues, try enabling this option as it turns off Direct IO and
  832. # feel free to report in the continuwuity Matrix room if this option fixes
  833. # your DB issues.
  834. #
  835. # For more information, see:
  836. # https://github.com/facebook/rocksdb/wiki/Direct-IO
  837. #
  838. #rocksdb_optimize_for_spinning_disks = false
  839. # Enables direct-io to increase database performance via unbuffered I/O.
  840. #
  841. # For more details about direct I/O and RockDB, see:
  842. # https://github.com/facebook/rocksdb/wiki/Direct-IO
  843. #
  844. # Set this option to false if the database resides on a filesystem which
  845. # does not support direct-io like FUSE, or any form of complex filesystem
  846. # setup such as possibly ZFS.
  847. #
  848. #rocksdb_direct_io = true
  849. # Amount of threads that RocksDB will use for parallelism on database
  850. # operations such as cleanup, sync, flush, compaction, etc. Set to 0 to
  851. # use all your logical threads. Defaults to your CPU logical thread count.
  852. #
  853. #rocksdb_parallelism_threads = varies by system
  854. # Maximum number of LOG files RocksDB will keep. This must *not* be set to
  855. # 0. It must be at least 1. Defaults to 3 as these are not very useful
  856. # unless troubleshooting/debugging a RocksDB bug.
  857. #
  858. #rocksdb_max_log_files = 3
  859. # Type of RocksDB database compression to use.
  860. #
  861. # Available options are "zstd", "bz2", "lz4", or "none".
  862. #
  863. # It is best to use ZSTD as an overall good balance between
  864. # speed/performance, storage, IO amplification, and CPU usage. For more
  865. # performance but less compression (more storage used) and less CPU usage,
  866. # use LZ4.
  867. #
  868. # For more details, see:
  869. # https://github.com/facebook/rocksdb/wiki/Compression
  870. #
  871. # "none" will disable compression.
  872. #
  873. #rocksdb_compression_algo = "zstd"
  874. # Level of compression the specified compression algorithm for RocksDB to
  875. # use.
  876. #
  877. # Default is 32767, which is internally read by RocksDB as the default
  878. # magic number and translated to the library's default compression level
  879. # as they all differ. See their `kDefaultCompressionLevel`.
  880. #
  881. # Note when using the default value we may override it with a setting
  882. # tailored specifically for continuwuity.
  883. #
  884. #rocksdb_compression_level = 32767
  885. # Level of compression the specified compression algorithm for the
  886. # bottommost level/data for RocksDB to use. Default is 32767, which is
  887. # internally read by RocksDB as the default magic number and translated to
  888. # the library's default compression level as they all differ. See their
  889. # `kDefaultCompressionLevel`.
  890. #
  891. # Since this is the bottommost level (generally old and least used data),
  892. # it may be desirable to have a very high compression level here as it's
  893. # less likely for this data to be used. Research your chosen compression
  894. # algorithm.
  895. #
  896. # Note when using the default value we may override it with a setting
  897. # tailored specifically for continuwuity.
  898. #
  899. #rocksdb_bottommost_compression_level = 32767
  900. # Whether to enable RocksDB's "bottommost_compression".
  901. #
  902. # At the expense of more CPU usage, this will further compress the
  903. # database to reduce more storage. It is recommended to use ZSTD
  904. # compression with this for best compression results. This may be useful
  905. # if you're trying to reduce storage usage from the database.
  906. #
  907. # See https://github.com/facebook/rocksdb/wiki/Compression for more details.
  908. #
  909. #rocksdb_bottommost_compression = true
  910. # Compression algorithm for RocksDB's Write-Ahead-Log (WAL).
  911. #
  912. # At present, only ZSTD compression is supported by RocksDB for WAL
  913. # compression. Enabling this can reduce WAL size at the expense of some
  914. # CPU usage during writes.
  915. #
  916. # The options are:
  917. # - "none" = No compression
  918. # - "zstd" = ZSTD compression
  919. #
  920. # For more information on WAL compression, see:
  921. # https://github.com/facebook/rocksdb/wiki/WAL-Compression
  922. #
  923. #rocksdb_wal_compression = "zstd"
  924. # Database recovery mode (for RocksDB WAL corruption).
  925. #
  926. # Use this option when the server reports corruption and refuses to start.
  927. # Set mode 2 (PointInTime) to cleanly recover from this corruption. The
  928. # server will continue from the last good state, several seconds or
  929. # minutes prior to the crash. Clients may have to run "clear-cache &
  930. # reload" to account for the rollback. Upon success, you may reset the
  931. # mode back to default and restart again. Please note in some cases the
  932. # corruption error may not be cleared for at least 30 minutes of operation
  933. # in PointInTime mode.
  934. #
  935. # As a very last ditch effort, if PointInTime does not fix or resolve
  936. # anything, you can try mode 3 (SkipAnyCorruptedRecord) but this will
  937. # leave the server in a potentially inconsistent state.
  938. #
  939. # The default mode 1 (TolerateCorruptedTailRecords) will automatically
  940. # drop the last entry in the database if corrupted during shutdown, but
  941. # nothing more. It is extraordinarily unlikely this will desynchronize
  942. # clients. To disable any form of silent rollback set mode 0
  943. # (AbsoluteConsistency).
  944. #
  945. # The options are:
  946. # 0 = AbsoluteConsistency
  947. # 1 = TolerateCorruptedTailRecords (default)
  948. # 2 = PointInTime (use me if trying to recover)
  949. # 3 = SkipAnyCorruptedRecord (you now voided your Continuwuity warranty)
  950. #
  951. # For more information on these modes, see:
  952. # https://github.com/facebook/rocksdb/wiki/WAL-Recovery-Modes
  953. #
  954. # For more details on recovering a corrupt database, see:
  955. # https://continuwuity.org/troubleshooting.html#database-corruption
  956. #
  957. #rocksdb_recovery_mode = 1
  958. # Enables or disables paranoid SST file checks. This can improve RocksDB
  959. # database consistency at a potential performance impact due to further
  960. # safety checks ran.
  961. #
  962. # For more information, see:
  963. # https://github.com/facebook/rocksdb/wiki/Online-Verification#columnfamilyoptionsparanoid_file_checks
  964. #
  965. #rocksdb_paranoid_file_checks = false
  966. # Enables or disables checksum verification in rocksdb at runtime.
  967. # Checksums are usually hardware accelerated with low overhead; they are
  968. # enabled in rocksdb by default. Older or slower platforms may see gains
  969. # from disabling.
  970. #
  971. #rocksdb_checksums = true
  972. # Enables the "atomic flush" mode in rocksdb. This option is not intended
  973. # for users. It may be removed or ignored in future versions. Atomic flush
  974. # may be enabled by the paranoid to possibly improve database integrity at
  975. # the cost of performance.
  976. #
  977. #rocksdb_atomic_flush = false
  978. # Database repair mode (for RocksDB SST corruption).
  979. #
  980. # Use this option when the server reports corruption while running or
  981. # panics. If the server refuses to start use the recovery mode options
  982. # first. Corruption errors containing the acronym 'SST' which occur after
  983. # startup will likely require this option.
  984. #
  985. # - Backing up your database directory is recommended prior to running the
  986. # repair.
  987. #
  988. # - Disabling repair mode and restarting the server is recommended after
  989. # running the repair.
  990. #
  991. # See https://continuwuity.org/troubleshooting.html#database-corruption for more details on recovering a corrupt database.
  992. #
  993. #rocksdb_repair = false
  994. # Enables idle CPU priority for compaction thread. This is not enabled by
  995. # default to prevent compaction from falling too far behind on busy
  996. # systems.
  997. #
  998. #rocksdb_compaction_prio_idle = false
  999. # Enables idle IO priority for compaction thread. This prevents any
  1000. # unexpected lag in the server's operation and is usually a good idea.
  1001. # Enabled by default.
  1002. #
  1003. #rocksdb_compaction_ioprio_idle = true
  1004. # Enables RocksDB compaction. You should never ever have to set this
  1005. # option to false. If you for some reason find yourself needing to use
  1006. # this option as part of troubleshooting or a bug, please reach out to us
  1007. # in the continuwuity Matrix room with information and details.
  1008. #
  1009. # Disabling compaction will lead to a significantly bloated and
  1010. # explosively large database, gradually poor performance, unnecessarily
  1011. # excessive disk read/writes, and slower shutdowns and startups.
  1012. #
  1013. #rocksdb_compaction = true
  1014. # Level of statistics collection. Some admin commands to display database
  1015. # statistics may require this option to be set. Database performance may
  1016. # be impacted by higher settings.
  1017. #
  1018. # Option is a number ranging from 0 to 6:
  1019. # 0 = No statistics.
  1020. # 1 = No statistics in release mode (default).
  1021. # 2 to 3 = Statistics with no performance impact.
  1022. # 3 to 5 = Statistics with possible performance impact.
  1023. # 6 = All statistics.
  1024. #
  1025. #rocksdb_stats_level = 1
  1026. # This is a password that can be configured that will let you login to the
  1027. # server bot account (currently `@conduit`) for emergency troubleshooting
  1028. # purposes such as recovering/recreating your admin room, or inviting
  1029. # yourself back.
  1030. #
  1031. # See https://continuwuity.org/troubleshooting.html#lost-access-to-admin-room for other ways to get back into your admin room.
  1032. #
  1033. # Once this password is unset, all sessions will be logged out for
  1034. # security purposes.
  1035. #
  1036. # example: "F670$2CP@Hw8mG7RY1$%!#Ic7YA"
  1037. #
  1038. {% if matrix_continuwuity_config_emergency_password != '' %}
  1039. emergency_password = {{ matrix_continuwuity_config_emergency_password | to_json }}
  1040. {% endif %}
  1041. # This item is undocumented. Please contribute documentation for it.
  1042. #
  1043. #notification_push_path = "/_matrix/push/v1/notify"
  1044. # Allow local (your server only) presence updates/requests.
  1045. #
  1046. # Local presence must be enabled for outgoing presence to function.
  1047. #
  1048. # Note that local presence is not as heavy on the CPU as federated
  1049. # presence, but will still become more expensive the more local users you
  1050. # have.
  1051. #
  1052. #allow_local_presence = true
  1053. # Allow incoming federated presence updates.
  1054. #
  1055. # This option enables processing inbound presence updates from other
  1056. # servers. Without it, remote users will appear as if they are always
  1057. # offline to your local users. This does not affect typing indicators or
  1058. # read receipts.
  1059. #
  1060. #allow_incoming_presence = true
  1061. # Allow outgoing presence updates/requests.
  1062. #
  1063. # This option sends presence updates to other servers, and requires that
  1064. # `allow_local_presence` is also enabled.
  1065. #
  1066. # Note that outgoing presence is very heavy on the CPU and network, and
  1067. # will typically cause extreme strain and slowdowns for no real benefit.
  1068. # There are only a few clients that even implement presence, so you
  1069. # probably don't want to enable this.
  1070. #
  1071. allow_outgoing_presence = {{ matrix_continuwuity_config_allow_outgoing_presence | to_json }}
  1072. # How many seconds without presence updates before you become idle.
  1073. # Defaults to 5 minutes.
  1074. #
  1075. #presence_idle_timeout_s = 300
  1076. # How many seconds without presence updates before you become offline.
  1077. # Defaults to 30 minutes.
  1078. #
  1079. #presence_offline_timeout_s = 1800
  1080. # Enable the presence idle timer for remote users.
  1081. #
  1082. # Disabling is offered as an optimization for servers participating in
  1083. # many large rooms or when resources are limited. Disabling it may cause
  1084. # incorrect presence states (i.e. stuck online) to be seen for some remote
  1085. # users.
  1086. #
  1087. #presence_timeout_remote_users = true
  1088. # Allow local read receipts.
  1089. #
  1090. # Disabling this will effectively also disable outgoing federated read
  1091. # receipts.
  1092. #
  1093. #allow_local_read_receipts = true
  1094. # Allow receiving incoming read receipts from remote servers.
  1095. #
  1096. #allow_incoming_read_receipts = true
  1097. # Allow sending read receipts to remote servers.
  1098. #
  1099. # Note that sending read receipts to remote servers in large rooms with
  1100. # lots of other homeservers may cause additional strain on the CPU and
  1101. # network.
  1102. #
  1103. #allow_outgoing_read_receipts = true
  1104. # Allow local typing updates.
  1105. #
  1106. # Disabling this will effectively also disable outgoing federated typing
  1107. # updates.
  1108. #
  1109. #allow_local_typing = true
  1110. # Allow outgoing typing updates to federation.
  1111. #
  1112. # Note that sending typing indicators to remote servers in large rooms
  1113. # with lots of other homeservers may cause additional strain on the CPU
  1114. # and network.
  1115. #
  1116. #allow_outgoing_typing = true
  1117. # Allow incoming typing updates from federation.
  1118. #
  1119. #allow_incoming_typing = true
  1120. # Maximum time federation user can indicate typing.
  1121. #
  1122. #typing_federation_timeout_s = 30
  1123. # Minimum time local client can indicate typing. This does not override a
  1124. # client's request to stop typing. It only enforces a minimum value in
  1125. # case of no stop request.
  1126. #
  1127. #typing_client_timeout_min_s = 15
  1128. # Maximum time local client can indicate typing.
  1129. #
  1130. #typing_client_timeout_max_s = 45
  1131. # Set this to true for continuwuity to compress HTTP response bodies using
  1132. # zstd. This option does nothing if continuwuity was not built with
  1133. # `zstd_compression` feature. Please be aware that enabling HTTP
  1134. # compression may weaken TLS. Most users should not need to enable this.
  1135. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH
  1136. # before deciding to enable this.
  1137. #
  1138. #zstd_compression = false
  1139. # Set this to true for continuwuity to compress HTTP response bodies using
  1140. # gzip. This option does nothing if continuwuity was not built with
  1141. # `gzip_compression` feature. Please be aware that enabling HTTP
  1142. # compression may weaken TLS. Most users should not need to enable this.
  1143. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH before
  1144. # deciding to enable this.
  1145. #
  1146. # If you are in a large amount of rooms, you may find that enabling this
  1147. # is necessary to reduce the significantly large response bodies.
  1148. #
  1149. #gzip_compression = false
  1150. # Set this to true for continuwuity to compress HTTP response bodies using
  1151. # brotli. This option does nothing if continuwuity was not built with
  1152. # `brotli_compression` feature. Please be aware that enabling HTTP
  1153. # compression may weaken TLS. Most users should not need to enable this.
  1154. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH
  1155. # before deciding to enable this.
  1156. #
  1157. #brotli_compression = false
  1158. # Enable the legacy unauthenticated Matrix media repository endpoints.
  1159. # These endpoints consist of:
  1160. # - /_matrix/media/*/config
  1161. # - /_matrix/media/*/upload
  1162. # - /_matrix/media/*/preview_url
  1163. # - /_matrix/media/*/download/*
  1164. # - /_matrix/media/*/thumbnail/*
  1165. #
  1166. # The authenticated equivalent endpoints are always enabled.
  1167. #
  1168. # Defaults to true for now, but this is highly subject to change, likely
  1169. # in the next release.
  1170. #
  1171. #allow_legacy_media = true
  1172. # This item is undocumented. Please contribute documentation for it.
  1173. #
  1174. #freeze_legacy_media = true
  1175. # Check consistency of the media directory at startup:
  1176. # 1. When `media_compat_file_link` is enabled, this check will upgrade
  1177. # media when switching back and forth between Conduit and conduwuit.
  1178. # Both options must be enabled to handle this.
  1179. # 2. When media is deleted from the directory, this check will also delete
  1180. # its database entry.
  1181. #
  1182. # If none of these checks apply to your use cases, and your media
  1183. # directory is significantly large setting this to false may reduce
  1184. # startup time.
  1185. #
  1186. #media_startup_check = true
  1187. # Enable backward-compatibility with Conduit's media directory by creating
  1188. # symlinks of media.
  1189. #
  1190. # This option is only necessary if you plan on using Conduit again.
  1191. # Otherwise setting this to false reduces filesystem clutter and overhead
  1192. # for managing these symlinks in the directory. This is now disabled by
  1193. # default. You may still return to upstream Conduit but you have to run
  1194. # continuwuity at least once with this set to true and allow the
  1195. # media_startup_check to take place before shutting down to return to
  1196. # Conduit.
  1197. #
  1198. #media_compat_file_link = false
  1199. # Prune missing media from the database as part of the media startup
  1200. # checks.
  1201. #
  1202. # This means if you delete files from the media directory the
  1203. # corresponding entries will be removed from the database. This is
  1204. # disabled by default because if the media directory is accidentally moved
  1205. # or inaccessible, the metadata entries in the database will be lost with
  1206. # sadness.
  1207. #
  1208. #prune_missing_media = false
  1209. # List of forbidden server names via regex patterns that we will block
  1210. # incoming AND outgoing federation with, and block client room joins /
  1211. # remote user invites.
  1212. #
  1213. # Note that your messages can still make it to forbidden servers through
  1214. # backfilling. Events we receive from forbidden servers via backfill
  1215. # from servers we *do* federate with will be stored in the database.
  1216. #
  1217. # This check is applied on the room ID, room alias, sender server name,
  1218. # sender user's server name, inbound federation X-Matrix origin, and
  1219. # outbound federation handler.
  1220. #
  1221. # You can set this to [".*"] to block all servers by default, and then
  1222. # use `allowed_remote_server_names` to allow only specific servers.
  1223. #
  1224. # example: ["badserver\\.tld$", "badphrase", "19dollarfortnitecards"]
  1225. #
  1226. forbidden_remote_server_names = {{ matrix_continuwuity_config_forbidden_remote_server_names | to_json }}
  1227. # List of allowed server names via regex patterns that we will allow,
  1228. # regardless of if they match `forbidden_remote_server_names`.
  1229. #
  1230. # This option has no effect if `forbidden_remote_server_names` is empty.
  1231. #
  1232. # example: ["goodserver\\.tld$", "goodphrase"]
  1233. #
  1234. allowed_remote_server_names = {{ matrix_continuwuity_config_allowed_remote_server_names | to_json }}
  1235. # Vector list of regex patterns of server names that continuwuity will
  1236. # refuse to download remote media from.
  1237. #
  1238. # example: ["badserver\.tld$", "badphrase", "19dollarfortnitecards"]
  1239. #
  1240. prevent_media_downloads_from = {{ matrix_continuwuity_config_prevent_media_downloads_from | to_json }}
  1241. # List of forbidden server names via regex patterns that we will block all
  1242. # outgoing federated room directory requests for. Useful for preventing
  1243. # our users from wandering into bad servers or spaces.
  1244. #
  1245. # example: ["badserver\.tld$", "badphrase", "19dollarfortnitecards"]
  1246. #
  1247. forbidden_remote_room_directory_server_names = {{ matrix_continuwuity_config_forbidden_remote_room_directory_server_names | to_json }}
  1248. # Vector list of regex patterns of server names that continuwuity will not
  1249. # send messages to the client from.
  1250. #
  1251. # Note that there is no way for clients to receive messages once a server
  1252. # has become unignored without doing a full sync. This is a protocol
  1253. # limitation with the current sync protocols. This means this is somewhat
  1254. # of a nuclear option.
  1255. #
  1256. # example: ["reallybadserver\.tld$", "reallybadphrase",
  1257. # "69dollarfortnitecards"]
  1258. #
  1259. ignore_messages_from_server_names = {{ matrix_continuwuity_config_ignore_messages_from_server_names | to_json }}
  1260. # List of server names that continuwuity will deprioritize (try last) when
  1261. # a client requests to join a room.
  1262. #
  1263. # This can be used to potentially speed up room join requests, by
  1264. # deprioritizing sending join requests through servers that are known to
  1265. # be large or slow.
  1266. #
  1267. # continuwuity will still send join requests to servers in this list if
  1268. # the room couldn't be joined via other servers it federates with.
  1269. #
  1270. # example: ["example.com"]
  1271. #
  1272. #deprioritize_joins_through_servers = []
  1273. # Send messages from users that the user has ignored to the client.
  1274. #
  1275. # There is no way for clients to receive messages sent while a user was
  1276. # ignored without doing a full sync. This is a protocol limitation with
  1277. # the current sync protocols. Disabling this option will move
  1278. # responsibility of ignoring messages to the client, which can avoid this
  1279. # limitation.
  1280. #
  1281. #send_messages_from_ignored_users_to_client = false
  1282. # Send "org.matrix.dummy_event" events to the client. This is a debugging
  1283. # option.
  1284. #
  1285. #send_dummy_events_to_clients = false
  1286. # Vector list of IPv4 and IPv6 CIDR ranges / subnets *in quotes* that you
  1287. # do not want continuwuity to send outbound requests to. Defaults to
  1288. # RFC1918, unroutable, loopback, multicast, and testnet addresses for
  1289. # security.
  1290. #
  1291. # Please be aware that this is *not* a guarantee. You should be using a
  1292. # firewall with zones as doing this on the application layer may have
  1293. # bypasses.
  1294. #
  1295. # Currently this does not account for proxies in use like Synapse does.
  1296. #
  1297. # To disable, set this to be an empty vector (`[]`).
  1298. #
  1299. # Defaults to:
  1300. # ["127.0.0.0/8", "10.0.0.0/8", "172.16.0.0/12",
  1301. # "192.168.0.0/16", "100.64.0.0/10", "192.0.0.0/24", "169.254.0.0/16",
  1302. # "192.88.99.0/24", "198.18.0.0/15", "192.0.2.0/24", "198.51.100.0/24",
  1303. # "203.0.113.0/24", "224.0.0.0/4", "::1/128", "fe80::/10", "fc00::/7",
  1304. # "2001:db8::/32", "ff00::/8", "fec0::/10"]
  1305. #
  1306. #ip_range_denylist =
  1307. # Optional IP address or network interface-name to bind as the source of
  1308. # URL preview requests. If not set, it will not bind to a specific
  1309. # address or interface.
  1310. #
  1311. # Interface names only supported on Linux, Android, and Fuchsia platforms;
  1312. # all other platforms can specify the IP address. To list the interfaces
  1313. # on your system, use the command `ip link show`.
  1314. #
  1315. # example: `"eth0"` or `"1.2.3.4"`
  1316. #
  1317. #url_preview_bound_interface =
  1318. # Vector list of domains allowed to send requests to for URL previews.
  1319. #
  1320. # This is a *contains* match, not an explicit match. Putting "google.com"
  1321. # will match "https://google.com" and
  1322. # "http://mymaliciousdomainexamplegoogle.com" Setting this to "*" will
  1323. # allow all URL previews. Please note that this opens up significant
  1324. # attack surface to your server, you are expected to be aware of the risks
  1325. # by doing so.
  1326. #
  1327. url_preview_domain_contains_allowlist = {{ matrix_continuwuity_config_url_preview_domain_contains_allowlist | to_json }}
  1328. # Vector list of explicit domains allowed to send requests to for URL
  1329. # previews.
  1330. #
  1331. # This is an *explicit* match, not a contains match. Putting "google.com"
  1332. # will match "https://google.com", "http://google.com", but not
  1333. # "https://mymaliciousdomainexamplegoogle.com". Setting this to "*" will
  1334. # allow all URL previews. Please note that this opens up significant
  1335. # attack surface to your server, you are expected to be aware of the risks
  1336. # by doing so.
  1337. #
  1338. url_preview_domain_explicit_allowlist = {{ matrix_continuwuity_config_url_preview_domain_explicit_allowlist | to_json }}
  1339. # Vector list of explicit domains not allowed to send requests to for URL
  1340. # previews.
  1341. #
  1342. # This is an *explicit* match, not a contains match. Putting "google.com"
  1343. # will match "https://google.com", "http://google.com", but not
  1344. # "https://mymaliciousdomainexamplegoogle.com". The denylist is checked
  1345. # first before allowlist. Setting this to "*" will not do anything.
  1346. #
  1347. #url_preview_domain_explicit_denylist = []
  1348. # Vector list of URLs allowed to send requests to for URL previews.
  1349. #
  1350. # Note that this is a *contains* match, not an explicit match. Putting
  1351. # "google.com" will match "https://google.com/",
  1352. # "https://google.com/url?q=https://mymaliciousdomainexample.com", and
  1353. # "https://mymaliciousdomainexample.com/hi/google.com" Setting this to "*"
  1354. # will allow all URL previews. Please note that this opens up significant
  1355. # attack surface to your server, you are expected to be aware of the risks
  1356. # by doing so.
  1357. #
  1358. #url_preview_url_contains_allowlist = []
  1359. # Maximum amount of bytes allowed in a URL preview body size when
  1360. # spidering. Defaults to 256KB in bytes.
  1361. #
  1362. #url_preview_max_spider_size = 256000
  1363. # Total request timeout for URL previews (seconds). This includes
  1364. # connection, request, and response body reading time.
  1365. #
  1366. #url_preview_timeout = 120
  1367. # Option to decide whether you would like to run the domain allowlist
  1368. # checks (contains and explicit) on the root domain or not. Does not apply
  1369. # to URL contains allowlist. Defaults to false.
  1370. #
  1371. # Example usecase: If this is enabled and you have "wikipedia.org" allowed
  1372. # in the explicit and/or contains domain allowlist, it will allow all
  1373. # subdomains under "wikipedia.org" such as "en.m.wikipedia.org" as the
  1374. # root domain is checked and matched. Useful if the domain contains
  1375. # allowlist is still too broad for you but you still want to allow all the
  1376. # subdomains under a root domain.
  1377. #
  1378. url_preview_check_root_domain = {{ matrix_continuwuity_config_url_preview_check_root_domain | to_json }}
  1379. # User agent that is used specifically when fetching url previews.
  1380. #
  1381. #url_preview_user_agent = "continuwuity/<version> (bot; +https://continuwuity.org)"
  1382. # Determines whether audio and video files will be downloaded for URL
  1383. # previews.
  1384. #
  1385. #url_preview_allow_audio_video = false
  1386. # List of forbidden room aliases and room IDs as strings of regex
  1387. # patterns.
  1388. #
  1389. # Regex can be used or explicit contains matches can be done by just
  1390. # specifying the words (see example).
  1391. #
  1392. # This is checked upon room alias creation, custom room ID creation if
  1393. # used, and startup as warnings if any room aliases in your database have
  1394. # a forbidden room alias/ID.
  1395. #
  1396. # example: ["19dollarfortnitecards", "b[4a]droom", "badphrase"]
  1397. #
  1398. #forbidden_alias_names = []
  1399. # List of forbidden username patterns/strings.
  1400. #
  1401. # Regex can be used or explicit contains matches can be done by just
  1402. # specifying the words (see example).
  1403. #
  1404. # This is checked upon username availability check, registration, and
  1405. # startup as warnings if any local users in your database have a forbidden
  1406. # username.
  1407. #
  1408. # example: ["administrator", "b[a4]dusernam[3e]", "badphrase"]
  1409. #
  1410. #forbidden_usernames = []
  1411. # Retry failed and incomplete messages to remote servers immediately upon
  1412. # startup. This is called bursting. If this is disabled, said messages may
  1413. # not be delivered until more messages are queued for that server. Do not
  1414. # change this option unless server resources are extremely limited or the
  1415. # scale of the server's deployment is huge. Do not disable this unless you
  1416. # know what you are doing.
  1417. #
  1418. #startup_netburst = true
  1419. # Messages are dropped and not reattempted. The `startup_netburst` option
  1420. # must be enabled for this value to have any effect. Do not change this
  1421. # value unless you know what you are doing. Set this value to -1 to
  1422. # reattempt every message without trimming the queues; this may consume
  1423. # significant disk. Set this value to 0 to drop all messages without any
  1424. # attempt at redelivery.
  1425. #
  1426. #startup_netburst_keep = 50
  1427. # Block non-admin local users from sending room invites (local and
  1428. # remote), and block non-admin users from receiving remote room invites.
  1429. #
  1430. # Admins are always allowed to send and receive all room invites.
  1431. #
  1432. #block_non_admin_invites = false
  1433. # Allow admins to enter commands in rooms other than "#admins" (admin
  1434. # room) by prefixing your message with "\!admin" or "\\!admin" followed up
  1435. # a normal continuwuity admin command. The reply will be publicly visible
  1436. # to the room, originating from the sender.
  1437. #
  1438. # example: \\!admin debug ping continuwuity.org
  1439. #
  1440. #admin_escape_commands = true
  1441. # Automatically activate the continuwuity admin room console / CLI on
  1442. # startup. This option can also be enabled with `--console` continuwuity
  1443. # argument.
  1444. #
  1445. #admin_console_automatic = false
  1446. # List of admin commands to execute on startup.
  1447. #
  1448. # This option can also be configured with the `--execute` continuwuity
  1449. # argument and can take standard shell commands and environment variables
  1450. #
  1451. # For example: `./continuwuity --execute "server admin-notice continuwuity
  1452. # has started up at $(date)"`
  1453. #
  1454. # example: admin_execute = ["debug ping continuwuity.org", "debug echo
  1455. # hi"]`
  1456. #
  1457. #admin_execute = []
  1458. # Ignore errors in startup commands.
  1459. #
  1460. # If false, continuwuity will error and fail to start if an admin execute
  1461. # command (`--execute` / `admin_execute`) fails.
  1462. #
  1463. #admin_execute_errors_ignore = false
  1464. # List of admin commands to execute on SIGUSR2.
  1465. #
  1466. # Similar to admin_execute, but these commands are executed when the
  1467. # server receives SIGUSR2 on supporting platforms.
  1468. #
  1469. #admin_signal_execute = []
  1470. # Controls the max log level for admin command log captures (logs
  1471. # generated from running admin commands). Defaults to "info" on release
  1472. # builds, else "debug" on debug builds.
  1473. #
  1474. #admin_log_capture = "info"
  1475. # The default room tag to apply on the admin room.
  1476. #
  1477. # On some clients like Element, the room tag "m.server_notice" is a
  1478. # special pinned room at the very bottom of your room list. The
  1479. # continuwuity admin room can be pinned here so you always have an
  1480. # easy-to-access shortcut dedicated to your admin room.
  1481. #
  1482. #admin_room_tag = "m.server_notice"
  1483. # A list of Matrix IDs that are qualified as server admins.
  1484. #
  1485. # Any Matrix IDs within this list are regarded as an admin
  1486. # regardless of whether they are in the admin room or not
  1487. #
  1488. #admins_list = []
  1489. # Defines whether those within the admin room are added to the
  1490. # admins_list.
  1491. #
  1492. #admins_from_room = true
  1493. # Sentry.io crash/panic reporting, performance monitoring/metrics, etc.
  1494. # This is NOT enabled by default.
  1495. #
  1496. #sentry = false
  1497. # Sentry reporting URL, if a custom one is desired.
  1498. #
  1499. #sentry_endpoint = ""
  1500. # Report your continuwuity server_name in Sentry.io crash reports and
  1501. # metrics.
  1502. #
  1503. #sentry_send_server_name = false
  1504. # Performance monitoring/tracing sample rate for Sentry.io.
  1505. #
  1506. # Note that too high values may impact performance, and can be disabled by
  1507. # setting it to 0.0 (0%) This value is read as a percentage to Sentry,
  1508. # represented as a decimal. Defaults to 15% of traces (0.15)
  1509. #
  1510. #sentry_traces_sample_rate = 0.15
  1511. # Whether to attach a stacktrace to Sentry reports.
  1512. #
  1513. #sentry_attach_stacktrace = false
  1514. # Send panics to Sentry. This is true by default, but Sentry has to be
  1515. # enabled. The global `sentry` config option must be enabled to send any
  1516. # data.
  1517. #
  1518. #sentry_send_panic = true
  1519. # Send errors to sentry. This is true by default, but sentry has to be
  1520. # enabled. This option is only effective in release-mode; forced to false
  1521. # in debug-mode.
  1522. #
  1523. #sentry_send_error = true
  1524. # Controls the tracing log level for Sentry to send things like
  1525. # breadcrumbs and transactions
  1526. #
  1527. #sentry_filter = "info"
  1528. # Enable the tokio-console. This option is only relevant to developers.
  1529. #
  1530. # For more information, see:
  1531. # https://continuwuity.org/development.html#debugging-with-tokio-console
  1532. #
  1533. #tokio_console = false
  1534. # This item is undocumented. Please contribute documentation for it.
  1535. #
  1536. #test = false
  1537. # Controls whether admin room notices like account registrations, password
  1538. # changes, account deactivations, room directory publications, etc will be
  1539. # sent to the admin room. Update notices and normal admin command
  1540. # responses will still be sent.
  1541. #
  1542. #admin_room_notices = true
  1543. # Enable database pool affinity support. On supporting systems, block
  1544. # device queue topologies are detected and the request pool is optimized
  1545. # for the hardware; db_pool_workers is determined automatically.
  1546. #
  1547. #db_pool_affinity = true
  1548. # Sets the number of worker threads in the frontend-pool of the database.
  1549. # This number should reflect the I/O capabilities of the system,
  1550. # such as the queue-depth or the number of simultaneous requests in
  1551. # flight. Defaults to 32 or four times the number of CPU cores, whichever
  1552. # is greater.
  1553. #
  1554. # Note: This value is only used if db_pool_affinity is disabled or not
  1555. # detected on the system, otherwise it is determined automatically.
  1556. #
  1557. #db_pool_workers = 32
  1558. # When db_pool_affinity is enabled and detected, the size of any worker
  1559. # group will not exceed the determined value. This is necessary when
  1560. # thread-pooling approach does not scale to the full capabilities of
  1561. # high-end hardware; using detected values without limitation could
  1562. # degrade performance.
  1563. #
  1564. # The value is multiplied by the number of cores which share a device
  1565. # queue, since group workers can be scheduled on any of those cores.
  1566. #
  1567. #db_pool_workers_limit = 64
  1568. # Determines the size of the queues feeding the database's frontend-pool.
  1569. # The size of the queue is determined by multiplying this value with the
  1570. # number of pool workers. When this queue is full, tokio tasks conducting
  1571. # requests will yield until space is available; this is good for
  1572. # flow-control by avoiding buffer-bloat, but can inhibit throughput if
  1573. # too low.
  1574. #
  1575. #db_pool_queue_mult = 4
  1576. # Sets the initial value for the concurrency of streams. This value simply
  1577. # allows overriding the default in the code. The default is 32, which is
  1578. # the same as the default in the code. Note this value is itself
  1579. # overridden by the computed stream_width_scale, unless that is disabled;
  1580. # this value can serve as a fixed-width instead.
  1581. #
  1582. #stream_width_default = 32
  1583. # Scales the stream width starting from a base value detected for the
  1584. # specific system. The base value is the database pool worker count
  1585. # determined from the hardware queue size (e.g. 32 for SSD or 64 or 128+
  1586. # for NVMe). This float allows scaling the width up or down by multiplying
  1587. # it (e.g. 1.5, 2.0, etc). The maximum result can be the size of the pool
  1588. # queue (see: db_pool_queue_mult) as any larger value will stall the tokio
  1589. # task. The value can also be scaled down (e.g. 0.5) to improve
  1590. # responsiveness for many users at the cost of throughput for each.
  1591. #
  1592. # Setting this value to 0.0 causes the stream width to be fixed at the
  1593. # value of stream_width_default. The default scale is 1.0 to match the
  1594. # capabilities detected for the system.
  1595. #
  1596. #stream_width_scale = 1.0
  1597. # Sets the initial amplification factor. This controls batch sizes of
  1598. # requests made by each pool worker, multiplying the throughput of each
  1599. # stream. This value is somewhat abstract from specific hardware
  1600. # characteristics and can be significantly larger than any thread count or
  1601. # queue size. This is because each database query may require several
  1602. # index lookups, thus many database queries in a batch may make progress
  1603. # independently while also sharing index and data blocks which may or may
  1604. # not be cached. It is worthwhile to submit huge batches to reduce
  1605. # complexity. The maximum value is 32768, though sufficient hardware is
  1606. # still advised for that.
  1607. #
  1608. #stream_amplification = 1024
  1609. # Number of sender task workers; determines sender parallelism. Default is
  1610. # '0' which means the value is determined internally, likely matching the
  1611. # number of tokio worker-threads or number of cores, etc. Override by
  1612. # setting a non-zero value.
  1613. #
  1614. #sender_workers = 0
  1615. # Enables listener sockets; can be set to false to disable listening. This
  1616. # option is intended for developer/diagnostic purposes only.
  1617. #
  1618. #listening = true
  1619. # Enables configuration reload when the server receives SIGUSR1 on
  1620. # supporting platforms.
  1621. #
  1622. #config_reload_signal = true
  1623. # Allow search engines and crawlers to index Continuwuity's built-in
  1624. # webpages served under the `/_continuwuity/` prefix.
  1625. #
  1626. #allow_web_indexing = false
  1627. [global.tls]
  1628. # Path to a valid TLS certificate file.
  1629. #
  1630. # example: "/path/to/my/certificate.crt"
  1631. #
  1632. #certs =
  1633. # Path to a valid TLS certificate private key.
  1634. #
  1635. # example: "/path/to/my/certificate.key"
  1636. #
  1637. #key =
  1638. # Whether to listen and allow for HTTP and HTTPS connections (insecure!)
  1639. #
  1640. #dual_protocol = false
  1641. [global.well_known]
  1642. # The server URL that the client well-known file will serve. This should
  1643. # not contain a port, and should just be a valid HTTPS URL.
  1644. #
  1645. # example: "https://matrix.example.com"
  1646. #
  1647. client = {{ matrix_continuwuity_config_well_known_client | to_json }}
  1648. # The server base domain of the URL with a specific port that the server
  1649. # well-known file will serve. This should contain a port at the end, and
  1650. # should not be a URL.
  1651. #
  1652. # example: "matrix.example.com:443"
  1653. #
  1654. #server =
  1655. # URL to a support page for the server, which will be served as part of
  1656. # the MSC1929 server support endpoint at /.well-known/matrix/support.
  1657. # Will be included alongside any contact information
  1658. #
  1659. #support_page =
  1660. # The ed25519 public key for the policy server available at this server's
  1661. # name. Must be unpadded base64.
  1662. #
  1663. #policy_server_public_key =
  1664. # Role string for server support contacts, to be served as part of the
  1665. # MSC1929 server support endpoint at /.well-known/matrix/support.
  1666. #
  1667. #support_role = "m.role.admin"
  1668. # Email address for server support contacts, to be served as part of the
  1669. # MSC1929 server support endpoint.
  1670. # This will be used along with support_mxid if specified.
  1671. #
  1672. #support_email =
  1673. # Matrix ID for server support contacts, to be served as part of the
  1674. # MSC1929 server support endpoint.
  1675. # This will be used along with support_email if specified.
  1676. #
  1677. # If no email or mxid is specified, all of the server's admins will be
  1678. # listed.
  1679. #
  1680. #support_mxid =
  1681. # PGP key URI for server support contacts, to be served as part of the
  1682. # MSC1929 server support endpoint.
  1683. #
  1684. #support_pgp_key =
  1685. [global.matrix_rtc]
  1686. # A list of MatrixRTC foci (transports) which will be served via the
  1687. # MSC4143 RTC transports endpoint at
  1688. # `/_matrix/client/v1/rtc/transports`. If you're setting up livekit,
  1689. # you'd want something like:
  1690. # ```toml
  1691. # [global.matrix_rtc]
  1692. # foci = [
  1693. # { type = "livekit", livekit_service_url = "https://livekit.example.com" },
  1694. # ]
  1695. # ```
  1696. #
  1697. # To disable, set this to an empty list (`[]`).
  1698. #
  1699. foci = [
  1700. {% for focus in matrix_continuwuity_config_rtc_foci %}
  1701. { {% for key, value in focus.items() %}{{ key }} = {{ value | to_json }}{% if not loop.last %}, {% endif %}{% endfor %} }{% if not loop.last %}, {% endif %}
  1702. {% endfor %}
  1703. ]
  1704. #[global.antispam]
  1705. #[global.antispam.meowlnir]
  1706. # The base URL on which to contact Meowlnir (before /_meowlnir/antispam).
  1707. #
  1708. # Example: "http://127.0.0.1:29339"
  1709. #
  1710. #base_url =
  1711. # The authentication secret defined in antispam->secret. Required for
  1712. # continuwuity to talk to Meowlnir.
  1713. #
  1714. #secret =
  1715. # The management room for which to send requests
  1716. #
  1717. #management_room =
  1718. # If enabled run all federated join attempts (both federated and local)
  1719. # through the Meowlnir anti-spam checks.
  1720. #
  1721. # By default, only join attempts for rooms with the `fi.mau.spam_checker`
  1722. # restricted join rule are checked.
  1723. #
  1724. #check_all_joins = false
  1725. #[global.antispam.draupnir]
  1726. # The base URL on which to contact Draupnir (before /api/).
  1727. #
  1728. # Example: "http://127.0.0.1:29339"
  1729. #
  1730. #base_url =
  1731. # The authentication secret defined in
  1732. # web->synapseHTTPAntispam->authorization
  1733. #
  1734. #secret =
  1735. {% if matrix_continuwuity_config_smtp_enabled %}
  1736. [global.smtp]
  1737. # A `smtp://`` URI which will be used to connect to a mail server.
  1738. # Uncommenting the [global.smtp] group and setting this option enables
  1739. # features which depend on the ability to send email,
  1740. # such as self-service password resets.
  1741. #
  1742. # For most modern mail servers, format the URI like this:
  1743. # `smtps://username:password@hostname:port`
  1744. # Note that you will need to URL-encode the username and password. If your
  1745. # username _is_ your email address, you will need to replace the `@` with
  1746. # `%40`.
  1747. #
  1748. # For a guide on the accepted URI syntax, consult Lettre's documentation:
  1749. # https://docs.rs/lettre/latest/lettre/transport/smtp/struct.AsyncSmtpTransport.html#method.from_url
  1750. #
  1751. {% if matrix_continuwuity_config_smtp_connection_uri != '' and matrix_continuwuity_config_smtp_sender != '' %}
  1752. connection_uri = {{ matrix_continuwuity_config_smtp_connection_uri | to_json }}
  1753. {% else %}
  1754. #connection_uri =
  1755. {% endif %}
  1756. # The outgoing address which will be used for sending emails.
  1757. #
  1758. # For a syntax guide, see https://datatracker.ietf.org/doc/html/rfc2822#section-3.4
  1759. #
  1760. # ...or if you don't want to read the RFC, for some reason:
  1761. # - `Name <address@domain.org>` to specify a sender name
  1762. # - `address@domain.org` to not use a name
  1763. #
  1764. {% if matrix_continuwuity_config_smtp_connection_uri != '' and matrix_continuwuity_config_smtp_sender != '' %}
  1765. sender = {{ matrix_continuwuity_config_smtp_sender | to_json }}
  1766. {% else %}
  1767. #sender =
  1768. {% endif %}
  1769. # Whether to allow public registration with an email address.
  1770. #
  1771. # Note that, if this option is enabled, anyone will be able to register an
  1772. # account with just an email address.
  1773. #
  1774. # If either this option or `require_email_for_token_registration` are set,
  1775. # users will not be allowed to remove their email address.
  1776. #
  1777. require_email_for_registration = {{ matrix_continuwuity_config_smtp_require_email_for_registration | to_json }}
  1778. # Whether to require that users who register with a registration token
  1779. # provide an email address. This option is independent of
  1780. # `require_email_for_registration`.
  1781. #
  1782. require_email_for_token_registration = {{ matrix_continuwuity_config_smtp_require_email_for_token_registration | to_json }}
  1783. {% endif %}
  1784. #[global.registration_terms]
  1785. # The language code to provide to clients along with the policy documents.
  1786. #
  1787. #language = "en"
  1788. # Policy documents, such as terms and conditions or a privacy policy,
  1789. # which users must agree to when registering an account.
  1790. #
  1791. # Example:
  1792. # ```ignore
  1793. # [global.registration_terms.documents]
  1794. # privacy_policy = { name = "Privacy Policy", url = "https://homeserver.example/en/privacy_policy.html" }
  1795. # ```
  1796. #
  1797. #documents =
  1798. #[global.oauth]
  1799. # The compatibility mode to use for OAuth.
  1800. #
  1801. # - "disabled": OAuth will be unavailable. Users will only be able to log
  1802. # in using legacy authentication.
  1803. # - "hybrid": OAuth and legacy authentication will both be available. Some
  1804. # clients may only use one or the other.
  1805. # - "exclusive": Only OAuth will be available. Clients which require
  1806. # legacy authentication will be unable to log in.
  1807. #
  1808. #compatibility_mode = "hybrid"
  1809. #[global.oauth.oidc]
  1810. # Uncommenting this section will enable Continuwuity's support for
  1811. # authenticating users using an OpenID Connect-compatible identity provider.
  1812. # This is referred to as "delegated authentication".
  1813. #
  1814. # IMPORTANT NOTE: When delegated authentication is active, Continuwuity will behave as if
  1815. # the `global.oauth.compatibility_mode` setting is set to `exclusive`.
  1816. # Matrix clients which do not support OAuth login (also referred to as "next-gen auth") will NOT be able
  1817. # to log in while delegated authentication is active.
  1818. # The OIDC issuer URL. Continuwuity will use OpenID Connect Discovery to
  1819. # automatically fetch the identity provider's metadata from this URL.
  1820. # Generally you should set this to the base domain your identity provider
  1821. # runs on.
  1822. #
  1823. #discovery_url =
  1824. # The OAuth client ID for Continuwuity to use when communicating with the
  1825. # identity provider.
  1826. #
  1827. #client_id =
  1828. # The OAuth client secret for Continuwuity to use when communicating with
  1829. # the identity provider.
  1830. #
  1831. #client_secret =
  1832. # A path to a file which Continuwuity will read the client secret from.
  1833. # If this option is set, it will override `client_secret`.
  1834. #
  1835. # The server will fail to start if the file cannot be read.
  1836. #
  1837. #client_secret_file =
  1838. # Additional scopes Continuwuity should request from the IDP. This may be
  1839. # necessary to access certain claims. Continuwuity always requests the
  1840. # `openid` scope.
  1841. #
  1842. #additional_scopes = []
  1843. # Whether the user should be prompted to choose a localpart
  1844. # when signing in for the first time. If this is `false`, Continuwuity
  1845. # will attempt to use the value of the `preferred_username_claim`
  1846. # (see below) as the user's localpart. Authentication will
  1847. # fail if this claim is missing or is not a valid localpart.
  1848. #
  1849. #prompt_for_localpart = true
  1850. # The claim to use for the user's localpart, if `prompt_for_localpart` is
  1851. # false.
  1852. #
  1853. #preferred_username_claim = "preferred_username"
  1854. # The claim which will be used to set the user's email address,
  1855. # either on initial registration or on every login depending on
  1856. # the value of `profile_key_import_mode`. Continuwuity assumes that
  1857. # the IDP has taken care of verifying that the user controls the email
  1858. # address it provides.
  1859. #
  1860. # This option does nothing if SMTP is not configured.
  1861. #
  1862. # If this option is set, and `profile_key_import_mode` is `on_login`,
  1863. # users will not be able to change their email addresses themselves.
  1864. #
  1865. #email_claim = "email"
  1866. # Defines how claims returned from the IDP should be mapped to a user's
  1867. # profile data. The profile field named in each key will be set from the
  1868. # claim named in the corresponding value when the user first registers,
  1869. # and possibly on subsequent logins as well, depending on the value of
  1870. # `profile_key_import_mode` (see below).
  1871. #
  1872. # Per-room overrides to the user's display name or avatar will be
  1873. # preserved by the import process.
  1874. #
  1875. # SECURITY NOTE: If the `avatar_url` field is set, Continuwuity will
  1876. # perform a HTTP GET to the URL in the mapped claim and use the returned
  1877. # file as the user's profile picture. Make sure your users are not able
  1878. # to set the value of the mapped claim to an arbitrary URL.
  1879. #
  1880. #profile_key_map = { displayname = "name" }
  1881. # When profile keys should be imported from the IDP's claims.
  1882. #
  1883. # - "on_registration": Listed keys will be imported once, when the user
  1884. # logs in for the first time and their shadow account is created.
  1885. # - "on_login": Listed keys will be imported every time the user logs in.
  1886. # Additionally, users will not be able to manually edit any listed keys
  1887. # through their Matrix client.
  1888. #
  1889. #profile_key_import_mode = "on_registration"