Matrix Docker Ansible eploy
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

1547 rivejä
53 KiB

  1. {#
  2. SPDX-FileCopyrightText: 2025 MDAD project contributors
  3. SPDX-FileCopyrightText: 2025 Slavi Pantaleev
  4. SPDX-FileCopyrightText: 2025 Suguru Hirahara
  5. SPDX-License-Identifier: AGPL-3.0-or-later
  6. #}
  7. ### conduwuit Configuration
  8. ### See:
  9. ### https://conduwuit.puppyirl.gay/configuration.html
  10. [global]
  11. # The server_name is the pretty name of this server. It is used as a
  12. # suffix for user and room IDs/aliases.
  13. #
  14. # See the docs for reverse proxying and delegation:
  15. # https://conduwuit.puppyirl.gay/deploying/generic.html#setting-up-the-reverse-proxy
  16. #
  17. # Also see the `[global.well_known]` config section at the very bottom.
  18. #
  19. # Examples of delegation:
  20. # - https://puppygock.gay/.well-known/matrix/server
  21. # - https://puppygock.gay/.well-known/matrix/client
  22. #
  23. # YOU NEED TO EDIT THIS. THIS CANNOT BE CHANGED AFTER WITHOUT A DATABASE
  24. # WIPE.
  25. #
  26. # example: "conduwuit.woof"
  27. #
  28. server_name = {{ matrix_conduwuit_config_server_name | to_json }}
  29. # The default address (IPv4 or IPv6) conduwuit will listen on.
  30. #
  31. # If you are using Docker or a container NAT networking setup, this must
  32. # be "0.0.0.0".
  33. #
  34. # To listen on multiple addresses, specify a vector e.g. ["127.0.0.1",
  35. # "::1"]
  36. #
  37. address = "0.0.0.0"
  38. # The port(s) conduwuit will listen on.
  39. #
  40. # For reverse proxying, see:
  41. # https://conduwuit.puppyirl.gay/deploying/generic.html#setting-up-the-reverse-proxy
  42. #
  43. # If you are using Docker, don't change this, you'll need to map an
  44. # external port to this.
  45. #
  46. # To listen on multiple ports, specify a vector e.g. [8080, 8448]
  47. #
  48. port = {{ matrix_conduwuit_config_port_number }}
  49. # The UNIX socket conduwuit will listen on.
  50. #
  51. # conduwuit cannot listen on both an IP address and a UNIX socket. If
  52. # listening on a UNIX socket, you MUST remove/comment the `address` key.
  53. #
  54. # Remember to make sure that your reverse proxy has access to this socket
  55. # file, either by adding your reverse proxy to the 'conduwuit' group or
  56. # granting world R/W permissions with `unix_socket_perms` (666 minimum).
  57. #
  58. # example: "/run/conduwuit/conduwuit.sock"
  59. #
  60. #unix_socket_path =
  61. # The default permissions (in octal) to create the UNIX socket with.
  62. #
  63. #unix_socket_perms = 660
  64. # This is the only directory where conduwuit will save its data, including
  65. # media. Note: this was previously "/var/lib/matrix-conduit".
  66. #
  67. # YOU NEED TO EDIT THIS.
  68. #
  69. # example: "/var/lib/conduwuit"
  70. #
  71. database_path = "/var/lib/conduwuit"
  72. # conduwuit supports online database backups using RocksDB's Backup engine
  73. # API. To use this, set a database backup path that conduwuit can write
  74. # to.
  75. #
  76. # For more information, see:
  77. # https://conduwuit.puppyirl.gay/maintenance.html#backups
  78. #
  79. # example: "/opt/conduwuit-db-backups"
  80. #
  81. #database_backup_path =
  82. # The amount of online RocksDB database backups to keep/retain, if using
  83. # "database_backup_path", before deleting the oldest one.
  84. #
  85. #database_backups_to_keep = 1
  86. # Text which will be added to the end of the user's displayname upon
  87. # registration with a space before the text. In Conduit, this was the
  88. # lightning bolt emoji.
  89. #
  90. # To disable, set this to "" (an empty string).
  91. #
  92. # The default is the trans pride flag.
  93. #
  94. # example: "🏳️‍⚧️"
  95. #
  96. new_user_displayname_suffix = {{ matrix_conduwuit_config_new_user_displayname_suffix | to_json }}
  97. # If enabled, conduwuit will send a simple GET request periodically to
  98. # `https://pupbrain.dev/check-for-updates/stable` for any new
  99. # announcements made. Despite the name, this is not an update check
  100. # endpoint, it is simply an announcement check endpoint.
  101. #
  102. # This is disabled by default as this is rarely used except for security
  103. # updates or major updates.
  104. #
  105. allow_check_for_updates = {{ matrix_conduwuit_config_allow_check_for_updates | to_json }}
  106. # Set this to any float value to multiply conduwuit's in-memory LRU caches
  107. # with such as "auth_chain_cache_capacity".
  108. #
  109. # May be useful if you have significant memory to spare to increase
  110. # performance.
  111. #
  112. # If you have low memory, reducing this may be viable.
  113. #
  114. # By default, the individual caches such as "auth_chain_cache_capacity"
  115. # are scaled by your CPU core count.
  116. #
  117. #cache_capacity_modifier = 1.0
  118. # Set this to any float value in megabytes for conduwuit to tell the
  119. # database engine that this much memory is available for database read
  120. # caches.
  121. #
  122. # May be useful if you have significant memory to spare to increase
  123. # performance.
  124. #
  125. # Similar to the individual LRU caches, this is scaled up with your CPU
  126. # core count.
  127. #
  128. # This defaults to 128.0 + (64.0 * CPU core count).
  129. #
  130. #db_cache_capacity_mb = varies by system
  131. # Set this to any float value in megabytes for conduwuit to tell the
  132. # database engine that this much memory is available for database write
  133. # caches.
  134. #
  135. # May be useful if you have significant memory to spare to increase
  136. # performance.
  137. #
  138. # Similar to the individual LRU caches, this is scaled up with your CPU
  139. # core count.
  140. #
  141. # This defaults to 48.0 + (4.0 * CPU core count).
  142. #
  143. #db_write_buffer_capacity_mb = varies by system
  144. # This item is undocumented. Please contribute documentation for it.
  145. #
  146. #pdu_cache_capacity = varies by system
  147. # This item is undocumented. Please contribute documentation for it.
  148. #
  149. #auth_chain_cache_capacity = varies by system
  150. # This item is undocumented. Please contribute documentation for it.
  151. #
  152. #shorteventid_cache_capacity = varies by system
  153. # This item is undocumented. Please contribute documentation for it.
  154. #
  155. #eventidshort_cache_capacity = varies by system
  156. # This item is undocumented. Please contribute documentation for it.
  157. #
  158. #eventid_pdu_cache_capacity = varies by system
  159. # This item is undocumented. Please contribute documentation for it.
  160. #
  161. #shortstatekey_cache_capacity = varies by system
  162. # This item is undocumented. Please contribute documentation for it.
  163. #
  164. #statekeyshort_cache_capacity = varies by system
  165. # This item is undocumented. Please contribute documentation for it.
  166. #
  167. #servernameevent_data_cache_capacity = varies by system
  168. # This item is undocumented. Please contribute documentation for it.
  169. #
  170. #server_visibility_cache_capacity = varies by system
  171. # This item is undocumented. Please contribute documentation for it.
  172. #
  173. #user_visibility_cache_capacity = varies by system
  174. # This item is undocumented. Please contribute documentation for it.
  175. #
  176. #stateinfo_cache_capacity = varies by system
  177. # This item is undocumented. Please contribute documentation for it.
  178. #
  179. #roomid_spacehierarchy_cache_capacity = varies by system
  180. # Maximum entries stored in DNS memory-cache. The size of an entry may
  181. # vary so please take care if raising this value excessively. Only
  182. # decrease this when using an external DNS cache. Please note that
  183. # systemd-resolved does *not* count as an external cache, even when
  184. # configured to do so.
  185. #
  186. #dns_cache_entries = 32768
  187. # Minimum time-to-live in seconds for entries in the DNS cache. The
  188. # default may appear high to most administrators; this is by design as the
  189. # majority of NXDOMAINs are correct for a long time (e.g. the server is no
  190. # longer running Matrix). Only decrease this if you are using an external
  191. # DNS cache.
  192. #
  193. #dns_min_ttl = 10800
  194. # Minimum time-to-live in seconds for NXDOMAIN entries in the DNS cache.
  195. # This value is critical for the server to federate efficiently.
  196. # NXDOMAIN's are assumed to not be returning to the federation and
  197. # aggressively cached rather than constantly rechecked.
  198. #
  199. # Defaults to 3 days as these are *very rarely* false negatives.
  200. #
  201. #dns_min_ttl_nxdomain = 259200
  202. # Number of DNS nameserver retries after a timeout or error.
  203. #
  204. #dns_attempts = 10
  205. # The number of seconds to wait for a reply to a DNS query. Please note
  206. # that recursive queries can take up to several seconds for some domains,
  207. # so this value should not be too low, especially on slower hardware or
  208. # resolvers.
  209. #
  210. #dns_timeout = 10
  211. # Fallback to TCP on DNS errors. Set this to false if unsupported by
  212. # nameserver.
  213. #
  214. #dns_tcp_fallback = true
  215. # Enable to query all nameservers until the domain is found. Referred to
  216. # as "trust_negative_responses" in hickory_resolver. This can avoid
  217. # useless DNS queries if the first nameserver responds with NXDOMAIN or
  218. # an empty NOERROR response.
  219. #
  220. #query_all_nameservers = true
  221. # Enable using *only* TCP for querying your specified nameservers instead
  222. # of UDP.
  223. #
  224. # If you are running conduwuit in a container environment, this config
  225. # option may need to be enabled. For more details, see:
  226. # https://conduwuit.puppyirl.gay/troubleshooting.html#potential-dns-issues-when-using-docker
  227. #
  228. #query_over_tcp_only = false
  229. # DNS A/AAAA record lookup strategy
  230. #
  231. # Takes a number of one of the following options:
  232. # 1 - Ipv4Only (Only query for A records, no AAAA/IPv6)
  233. #
  234. # 2 - Ipv6Only (Only query for AAAA records, no A/IPv4)
  235. #
  236. # 3 - Ipv4AndIpv6 (Query for A and AAAA records in parallel, uses whatever
  237. # returns a successful response first)
  238. #
  239. # 4 - Ipv6thenIpv4 (Query for AAAA record, if that fails then query the A
  240. # record)
  241. #
  242. # 5 - Ipv4thenIpv6 (Query for A record, if that fails then query the AAAA
  243. # record)
  244. #
  245. # If you don't have IPv6 networking, then for better DNS performance it
  246. # may be suitable to set this to Ipv4Only (1) as you will never ever use
  247. # the AAAA record contents even if the AAAA record is successful instead
  248. # of the A record.
  249. #
  250. #ip_lookup_strategy = 5
  251. # Max request size for file uploads in bytes. Defaults to 20MB.
  252. #
  253. max_request_size = {{ matrix_conduwuit_config_max_request_size }}
  254. # This item is undocumented. Please contribute documentation for it.
  255. #
  256. #max_fetch_prev_events = 192
  257. # Default/base connection timeout (seconds). This is used only by URL
  258. # previews and update/news endpoint checks.
  259. #
  260. #request_conn_timeout = 10
  261. # Default/base request timeout (seconds). The time waiting to receive more
  262. # data from another server. This is used only by URL previews,
  263. # update/news, and misc endpoint checks.
  264. #
  265. #request_timeout = 35
  266. # Default/base request total timeout (seconds). The time limit for a whole
  267. # request. This is set very high to not cancel healthy requests while
  268. # serving as a backstop. This is used only by URL previews and update/news
  269. # endpoint checks.
  270. #
  271. #request_total_timeout = 320
  272. # Default/base idle connection pool timeout (seconds). This is used only
  273. # by URL previews and update/news endpoint checks.
  274. #
  275. #request_idle_timeout = 5
  276. # Default/base max idle connections per host. This is used only by URL
  277. # previews and update/news endpoint checks. Defaults to 1 as generally the
  278. # same open connection can be re-used.
  279. #
  280. #request_idle_per_host = 1
  281. # Federation well-known resolution connection timeout (seconds).
  282. #
  283. #well_known_conn_timeout = 6
  284. # Federation HTTP well-known resolution request timeout (seconds).
  285. #
  286. #well_known_timeout = 10
  287. # Federation client request timeout (seconds). You most definitely want
  288. # this to be high to account for extremely large room joins, slow
  289. # homeservers, your own resources etc.
  290. #
  291. #federation_timeout = 300
  292. # Federation client idle connection pool timeout (seconds).
  293. #
  294. #federation_idle_timeout = 25
  295. # Federation client max idle connections per host. Defaults to 1 as
  296. # generally the same open connection can be re-used.
  297. #
  298. #federation_idle_per_host = 1
  299. # Federation sender request timeout (seconds). The time it takes for the
  300. # remote server to process sent transactions can take a while.
  301. #
  302. #sender_timeout = 180
  303. # Federation sender idle connection pool timeout (seconds).
  304. #
  305. #sender_idle_timeout = 180
  306. # Federation sender transaction retry backoff limit (seconds).
  307. #
  308. #sender_retry_backoff_limit = 86400
  309. # Appservice URL request connection timeout. Defaults to 35 seconds as
  310. # generally appservices are hosted within the same network.
  311. #
  312. #appservice_timeout = 35
  313. # Appservice URL idle connection pool timeout (seconds).
  314. #
  315. #appservice_idle_timeout = 300
  316. # Notification gateway pusher idle connection pool timeout.
  317. #
  318. #pusher_idle_timeout = 15
  319. # Enables registration. If set to false, no users can register on this
  320. # server.
  321. #
  322. # If set to true without a token configured, users can register with no
  323. # form of 2nd-step only if you set the following option to true:
  324. # `yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse`
  325. #
  326. # If you would like registration only via token reg, please configure
  327. # `registration_token` or `registration_token_file`.
  328. #
  329. allow_registration = {{ matrix_conduwuit_config_allow_registration | to_json }}
  330. yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = {{ matrix_conduwuit_config_yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse | to_json }}
  331. allow_federation = {{ matrix_conduwuit_config_allow_federation | to_json }}
  332. # This item is undocumented. Please contribute documentation for it.
  333. #
  334. #yes_i_am_very_very_sure_i_want_an_open_registration_server_prone_to_abuse = false
  335. # A static registration token that new users will have to provide when
  336. # creating an account. If unset and `allow_registration` is true,
  337. # registration is open without any condition.
  338. #
  339. # YOU NEED TO EDIT THIS OR USE registration_token_file.
  340. #
  341. # example: "o&^uCtes4HPf0Vu@F20jQeeWE7"
  342. #
  343. registration_token = {{ matrix_conduwuit_config_registration_token | to_json }}
  344. # Path to a file on the system that gets read for the registration token.
  345. # this config option takes precedence/priority over "registration_token".
  346. #
  347. # conduwuit must be able to access the file, and it must not be empty
  348. #
  349. # example: "/etc/conduwuit/.reg_token"
  350. #
  351. #registration_token_file =
  352. # Controls whether encrypted rooms and events are allowed.
  353. #
  354. #allow_encryption = true
  355. # Controls whether federation is allowed or not. It is not recommended to
  356. # disable this after the fact due to potential federation breakage.
  357. #
  358. #allow_federation = true
  359. # This item is undocumented. Please contribute documentation for it.
  360. #
  361. #federation_loopback = false
  362. # Set this to true to require authentication on the normally
  363. # unauthenticated profile retrieval endpoints (GET)
  364. # "/_matrix/client/v3/profile/{userId}".
  365. #
  366. # This can prevent profile scraping.
  367. #
  368. #require_auth_for_profile_requests = false
  369. # Set this to true to allow your server's public room directory to be
  370. # federated. Set this to false to protect against /publicRooms spiders,
  371. # but will forbid external users from viewing your server's public room
  372. # directory. If federation is disabled entirely (`allow_federation`), this
  373. # is inherently false.
  374. #
  375. #allow_public_room_directory_over_federation = false
  376. # Set this to true to allow your server's public room directory to be
  377. # queried without client authentication (access token) through the Client
  378. # APIs. Set this to false to protect against /publicRooms spiders.
  379. #
  380. #allow_public_room_directory_without_auth = false
  381. # Allow guests/unauthenticated users to access TURN credentials.
  382. #
  383. # This is the equivalent of Synapse's `turn_allow_guests` config option.
  384. # This allows any unauthenticated user to call the endpoint
  385. # `/_matrix/client/v3/voip/turnServer`.
  386. #
  387. # It is unlikely you need to enable this as all major clients support
  388. # authentication for this endpoint and prevents misuse of your TURN server
  389. # from potential bots.
  390. #
  391. #turn_allow_guests = false
  392. # Set this to true to lock down your server's public room directory and
  393. # only allow admins to publish rooms to the room directory. Unpublishing
  394. # is still allowed by all users with this enabled.
  395. #
  396. #lockdown_public_room_directory = false
  397. # Set this to true to allow federating device display names / allow
  398. # external users to see your device display name. If federation is
  399. # disabled entirely (`allow_federation`), this is inherently false. For
  400. # privacy reasons, this is best left disabled.
  401. #
  402. #allow_device_name_federation = false
  403. # Config option to allow or disallow incoming federation requests that
  404. # obtain the profiles of our local users from
  405. # `/_matrix/federation/v1/query/profile`
  406. #
  407. # Increases privacy of your local user's such as display names, but some
  408. # remote users may get a false "this user does not exist" error when they
  409. # try to invite you to a DM or room. Also can protect against profile
  410. # spiders.
  411. #
  412. # This is inherently false if `allow_federation` is disabled
  413. #
  414. #allow_inbound_profile_lookup_federation_requests = true
  415. # Allow standard users to create rooms. Appservices and admins are always
  416. # allowed to create rooms
  417. #
  418. #allow_room_creation = true
  419. # Set to false to disable users from joining or creating room versions
  420. # that aren't officially supported by conduwuit.
  421. #
  422. # conduwuit officially supports room versions 6 - 11.
  423. #
  424. # conduwuit has slightly experimental (though works fine in practice)
  425. # support for versions 3 - 5.
  426. #
  427. #allow_unstable_room_versions = true
  428. # Default room version conduwuit will create rooms with.
  429. #
  430. # Per spec, room version 10 is the default.
  431. #
  432. #default_room_version = 10
  433. # This item is undocumented. Please contribute documentation for it.
  434. #
  435. #allow_jaeger = false
  436. # This item is undocumented. Please contribute documentation for it.
  437. #
  438. #jaeger_filter = "info"
  439. # If the 'perf_measurements' compile-time feature is enabled, enables
  440. # collecting folded stack trace profile of tracing spans using
  441. # tracing_flame. The resulting profile can be visualized with inferno[1],
  442. # speedscope[2], or a number of other tools.
  443. #
  444. # [1]: https://github.com/jonhoo/inferno
  445. # [2]: www.speedscope.app
  446. #
  447. #tracing_flame = false
  448. # This item is undocumented. Please contribute documentation for it.
  449. #
  450. #tracing_flame_filter = "info"
  451. # This item is undocumented. Please contribute documentation for it.
  452. #
  453. #tracing_flame_output_path = "./tracing.folded"
  454. # Examples:
  455. #
  456. # - No proxy (default):
  457. #
  458. # proxy = "none"
  459. #
  460. # - For global proxy, create the section at the bottom of this file:
  461. #
  462. # [global.proxy]
  463. # global = { url = "socks5h://localhost:9050" }
  464. #
  465. # - To proxy some domains:
  466. #
  467. # [global.proxy]
  468. # [[global.proxy.by_domain]]
  469. # url = "socks5h://localhost:9050"
  470. # include = ["*.onion", "matrix.myspecial.onion"]
  471. # exclude = ["*.myspecial.onion"]
  472. #
  473. # Include vs. Exclude:
  474. #
  475. # - If include is an empty list, it is assumed to be `["*"]`.
  476. #
  477. # - If a domain matches both the exclude and include list, the proxy will
  478. # only be used if it was included because of a more specific rule than
  479. # it was excluded. In the above example, the proxy would be used for
  480. # `ordinary.onion`, `matrix.myspecial.onion`, but not
  481. # `hello.myspecial.onion`.
  482. #
  483. #proxy = "none"
  484. # Servers listed here will be used to gather public keys of other servers
  485. # (notary trusted key servers).
  486. #
  487. # Currently, conduwuit doesn't support inbound batched key requests, so
  488. # this list should only contain other Synapse servers.
  489. #
  490. # example: ["matrix.org", "envs.net", "constellatory.net", "tchncs.de"]
  491. #
  492. trusted_servers = {{ matrix_conduwuit_trusted_servers | to_json }}
  493. # Whether to query the servers listed in trusted_servers first or query
  494. # the origin server first. For best security, querying the origin server
  495. # first is advised to minimize the exposure to a compromised trusted
  496. # server. For maximum federation/join performance this can be set to true,
  497. # however other options exist to query trusted servers first under
  498. # specific high-load circumstances and should be evaluated before setting
  499. # this to true.
  500. #
  501. #query_trusted_key_servers_first = false
  502. # Whether to query the servers listed in trusted_servers first
  503. # specifically on room joins. This option limits the exposure to a
  504. # compromised trusted server to room joins only. The join operation
  505. # requires gathering keys from many origin servers which can cause
  506. # significant delays. Therefore this defaults to true to mitigate
  507. # unexpected delays out-of-the-box. The security-paranoid or those willing
  508. # to tolerate delays are advised to set this to false. Note that setting
  509. # query_trusted_key_servers_first to true causes this option to be
  510. # ignored.
  511. #
  512. #query_trusted_key_servers_first_on_join = true
  513. # Only query trusted servers for keys and never the origin server. This is
  514. # intended for clusters or custom deployments using their trusted_servers
  515. # as forwarding-agents to cache and deduplicate requests. Notary servers
  516. # do not act as forwarding-agents by default, therefore do not enable this
  517. # unless you know exactly what you are doing.
  518. #
  519. #only_query_trusted_key_servers = false
  520. # Maximum number of keys to request in each trusted server batch query.
  521. #
  522. #trusted_server_batch_size = 1024
  523. # Max log level for conduwuit. Allows debug, info, warn, or error.
  524. #
  525. # See also:
  526. # https://docs.rs/tracing-subscriber/latest/tracing_subscriber/filter/struct.EnvFilter.html#directives
  527. #
  528. # **Caveat**:
  529. # For release builds, the tracing crate is configured to only implement
  530. # levels higher than error to avoid unnecessary overhead in the compiled
  531. # binary from trace macros. For debug builds, this restriction is not
  532. # applied.
  533. #
  534. log = {{ matrix_conduwuit_config_log | to_json }}
  535. # Output logs with ANSI colours.
  536. #
  537. #log_colors = true
  538. # Configures the span events which will be outputted with the log.
  539. #
  540. #log_span_events = "none"
  541. # Configures whether CONDUWUIT_LOG EnvFilter matches values using regular
  542. # expressions. See the tracing_subscriber documentation on Directives.
  543. #
  544. #log_filter_regex = true
  545. # Toggles the display of ThreadId in tracing log output.
  546. #
  547. #log_thread_ids = false
  548. # OpenID token expiration/TTL in seconds.
  549. #
  550. # These are the OpenID tokens that are primarily used for Matrix account
  551. # integrations (e.g. Vector Integrations in Element), *not* OIDC/OpenID
  552. # Connect/etc.
  553. #
  554. #openid_token_ttl = 3600
  555. # Allow an existing session to mint a login token for another client.
  556. # This requires interactive authentication, but has security ramifications
  557. # as a malicious client could use the mechanism to spawn more than one
  558. # session.
  559. # Enabled by default.
  560. #
  561. #login_via_existing_session = true
  562. # Login token expiration/TTL in milliseconds.
  563. #
  564. # These are short-lived tokens for the m.login.token endpoint.
  565. # This is used to allow existing sessions to create new sessions.
  566. # see login_via_existing_session.
  567. #
  568. #login_token_ttl = 120000
  569. # Static TURN username to provide the client if not using a shared secret
  570. # ("turn_secret"), It is recommended to use a shared secret over static
  571. # credentials.
  572. #
  573. #turn_username = false
  574. # Static TURN password to provide the client if not using a shared secret
  575. # ("turn_secret"). It is recommended to use a shared secret over static
  576. # credentials.
  577. #
  578. #turn_password = false
  579. # Vector list of TURN URIs/servers to use.
  580. #
  581. # Replace "example.turn.uri" with your TURN domain, such as the coturn
  582. # "realm" config option. If using TURN over TLS, replace the URI prefix
  583. # "turn:" with "turns:".
  584. #
  585. # example: ["turn:example.turn.uri?transport=udp",
  586. # "turn:example.turn.uri?transport=tcp"]
  587. #
  588. turn_uris = {{ matrix_conduwuit_config_turn_uris | to_json }}
  589. # TURN secret to use for generating the HMAC-SHA1 hash apart of username
  590. # and password generation.
  591. #
  592. # This is more secure, but if needed you can use traditional static
  593. # username/password credentials.
  594. #
  595. #turn_secret = false
  596. {% if matrix_conduwuit_config_turn_secret != '' %}
  597. turn_secret = {{ matrix_conduwuit_config_turn_secret | to_json }}
  598. {% endif %}
  599. # If you have your TURN server configured to use a username and password
  600. # you can provide these information too. In this case comment out `turn_secret above`!
  601. {% if matrix_conduwuit_config_turn_username != '' or matrix_conduwuit_config_turn_password != '' %}
  602. turn_username = {{ matrix_conduwuit_config_turn_username | to_json }}
  603. turn_password = {{ matrix_conduwuit_config_turn_password | to_json }}
  604. {% endif %}
  605. # TURN secret to use that's read from the file path specified.
  606. #
  607. # This takes priority over "turn_secret" first, and falls back to
  608. # "turn_secret" if invalid or failed to open.
  609. #
  610. # example: "/etc/conduwuit/.turn_secret"
  611. #
  612. #turn_secret_file =
  613. # TURN TTL, in seconds.
  614. #
  615. #turn_ttl = 86400
  616. # List/vector of room IDs or room aliases that conduwuit will make newly
  617. # registered users join. The rooms specified must be rooms that you have
  618. # joined at least once on the server, and must be public.
  619. #
  620. # example: ["#conduwuit:puppygock.gay",
  621. # "!eoIzvAvVwY23LPDay8:puppygock.gay"]
  622. #
  623. #auto_join_rooms = []
  624. # Config option to automatically deactivate the account of any user who
  625. # attempts to join a:
  626. # - banned room
  627. # - forbidden room alias
  628. # - room alias or ID with a forbidden server name
  629. #
  630. # This may be useful if all your banned lists consist of toxic rooms or
  631. # servers that no good faith user would ever attempt to join, and
  632. # to automatically remediate the problem without any admin user
  633. # intervention.
  634. #
  635. # This will also make the user leave all rooms. Federation (e.g. remote
  636. # room invites) are ignored here.
  637. #
  638. # Defaults to false as rooms can be banned for non-moderation-related
  639. # reasons and this performs a full user deactivation.
  640. #
  641. #auto_deactivate_banned_room_attempts = false
  642. # RocksDB log level. This is not the same as conduwuit's log level. This
  643. # is the log level for the RocksDB engine/library which show up in your
  644. # database folder/path as `LOG` files. conduwuit will log RocksDB errors
  645. # as normal through tracing or panics if severe for safety.
  646. #
  647. #rocksdb_log_level = "error"
  648. # This item is undocumented. Please contribute documentation for it.
  649. #
  650. #rocksdb_log_stderr = false
  651. # Max RocksDB `LOG` file size before rotating in bytes. Defaults to 4MB in
  652. # bytes.
  653. #
  654. #rocksdb_max_log_file_size = 4194304
  655. # Time in seconds before RocksDB will forcibly rotate logs.
  656. #
  657. #rocksdb_log_time_to_roll = 0
  658. # Set this to true to use RocksDB config options that are tailored to HDDs
  659. # (slower device storage).
  660. #
  661. # It is worth noting that by default, conduwuit will use RocksDB with
  662. # Direct IO enabled. *Generally* speaking this improves performance as it
  663. # bypasses buffered I/O (system page cache). However there is a potential
  664. # chance that Direct IO may cause issues with database operations if your
  665. # setup is uncommon. This has been observed with FUSE filesystems, and
  666. # possibly ZFS filesystem. RocksDB generally deals/corrects these issues
  667. # but it cannot account for all setups. If you experience any weird
  668. # RocksDB issues, try enabling this option as it turns off Direct IO and
  669. # feel free to report in the conduwuit Matrix room if this option fixes
  670. # your DB issues.
  671. #
  672. # For more information, see:
  673. # https://github.com/facebook/rocksdb/wiki/Direct-IO
  674. #
  675. #rocksdb_optimize_for_spinning_disks = false
  676. # Enables direct-io to increase database performance via unbuffered I/O.
  677. #
  678. # For more details about direct I/O and RockDB, see:
  679. # https://github.com/facebook/rocksdb/wiki/Direct-IO
  680. #
  681. # Set this option to false if the database resides on a filesystem which
  682. # does not support direct-io like FUSE, or any form of complex filesystem
  683. # setup such as possibly ZFS.
  684. #
  685. #rocksdb_direct_io = true
  686. # Amount of threads that RocksDB will use for parallelism on database
  687. # operations such as cleanup, sync, flush, compaction, etc. Set to 0 to
  688. # use all your logical threads. Defaults to your CPU logical thread count.
  689. #
  690. #rocksdb_parallelism_threads = varies by system
  691. # Maximum number of LOG files RocksDB will keep. This must *not* be set to
  692. # 0. It must be at least 1. Defaults to 3 as these are not very useful
  693. # unless troubleshooting/debugging a RocksDB bug.
  694. #
  695. #rocksdb_max_log_files = 3
  696. # Type of RocksDB database compression to use.
  697. #
  698. # Available options are "zstd", "zlib", "bz2", "lz4", or "none".
  699. #
  700. # It is best to use ZSTD as an overall good balance between
  701. # speed/performance, storage, IO amplification, and CPU usage. For more
  702. # performance but less compression (more storage used) and less CPU usage,
  703. # use LZ4.
  704. #
  705. # For more details, see:
  706. # https://github.com/facebook/rocksdb/wiki/Compression
  707. #
  708. # "none" will disable compression.
  709. #
  710. #rocksdb_compression_algo = "zstd"
  711. # Level of compression the specified compression algorithm for RocksDB to
  712. # use.
  713. #
  714. # Default is 32767, which is internally read by RocksDB as the default
  715. # magic number and translated to the library's default compression level
  716. # as they all differ. See their `kDefaultCompressionLevel`.
  717. #
  718. #rocksdb_compression_level = 32767
  719. # Level of compression the specified compression algorithm for the
  720. # bottommost level/data for RocksDB to use. Default is 32767, which is
  721. # internally read by RocksDB as the default magic number and translated to
  722. # the library's default compression level as they all differ. See their
  723. # `kDefaultCompressionLevel`.
  724. #
  725. # Since this is the bottommost level (generally old and least used data),
  726. # it may be desirable to have a very high compression level here as it's
  727. # less likely for this data to be used. Research your chosen compression
  728. # algorithm.
  729. #
  730. #rocksdb_bottommost_compression_level = 32767
  731. # Whether to enable RocksDB's "bottommost_compression".
  732. #
  733. # At the expense of more CPU usage, this will further compress the
  734. # database to reduce more storage. It is recommended to use ZSTD
  735. # compression with this for best compression results. This may be useful
  736. # if you're trying to reduce storage usage from the database.
  737. #
  738. # See https://github.com/facebook/rocksdb/wiki/Compression for more details.
  739. #
  740. #rocksdb_bottommost_compression = false
  741. # Database recovery mode (for RocksDB WAL corruption).
  742. #
  743. # Use this option when the server reports corruption and refuses to start.
  744. # Set mode 2 (PointInTime) to cleanly recover from this corruption. The
  745. # server will continue from the last good state, several seconds or
  746. # minutes prior to the crash. Clients may have to run "clear-cache &
  747. # reload" to account for the rollback. Upon success, you may reset the
  748. # mode back to default and restart again. Please note in some cases the
  749. # corruption error may not be cleared for at least 30 minutes of operation
  750. # in PointInTime mode.
  751. #
  752. # As a very last ditch effort, if PointInTime does not fix or resolve
  753. # anything, you can try mode 3 (SkipAnyCorruptedRecord) but this will
  754. # leave the server in a potentially inconsistent state.
  755. #
  756. # The default mode 1 (TolerateCorruptedTailRecords) will automatically
  757. # drop the last entry in the database if corrupted during shutdown, but
  758. # nothing more. It is extraordinarily unlikely this will desynchronize
  759. # clients. To disable any form of silent rollback set mode 0
  760. # (AbsoluteConsistency).
  761. #
  762. # The options are:
  763. # 0 = AbsoluteConsistency
  764. # 1 = TolerateCorruptedTailRecords (default)
  765. # 2 = PointInTime (use me if trying to recover)
  766. # 3 = SkipAnyCorruptedRecord (you now voided your conduwuit warranty)
  767. #
  768. # For more information on these modes, see:
  769. # https://github.com/facebook/rocksdb/wiki/WAL-Recovery-Modes
  770. #
  771. # For more details on recovering a corrupt database, see:
  772. # https://conduwuit.puppyirl.gay/troubleshooting.html#database-corruption
  773. #
  774. #rocksdb_recovery_mode = 1
  775. # Enables or disables paranoid SST file checks. This can improve RocksDB
  776. # database consistency at a potential performance impact due to further
  777. # safety checks ran.
  778. #
  779. # For more information, see:
  780. # https://github.com/facebook/rocksdb/wiki/Online-Verification#columnfamilyoptionsparanoid_file_checks
  781. #
  782. #rocksdb_paranoid_file_checks = false
  783. # Database repair mode (for RocksDB SST corruption).
  784. #
  785. # Use this option when the server reports corruption while running or
  786. # panics. If the server refuses to start use the recovery mode options
  787. # first. Corruption errors containing the acronym 'SST' which occur after
  788. # startup will likely require this option.
  789. #
  790. # - Backing up your database directory is recommended prior to running the
  791. # repair.
  792. #
  793. # - Disabling repair mode and restarting the server is recommended after
  794. # running the repair.
  795. #
  796. # See https://conduwuit.puppyirl.gay/troubleshooting.html#database-corruption for more details on recovering a corrupt database.
  797. #
  798. #rocksdb_repair = false
  799. # This item is undocumented. Please contribute documentation for it.
  800. #
  801. #rocksdb_read_only = false
  802. # This item is undocumented. Please contribute documentation for it.
  803. #
  804. #rocksdb_secondary = false
  805. # Enables idle CPU priority for compaction thread. This is not enabled by
  806. # default to prevent compaction from falling too far behind on busy
  807. # systems.
  808. #
  809. #rocksdb_compaction_prio_idle = false
  810. # Enables idle IO priority for compaction thread. This prevents any
  811. # unexpected lag in the server's operation and is usually a good idea.
  812. # Enabled by default.
  813. #
  814. #rocksdb_compaction_ioprio_idle = true
  815. # Disables RocksDB compaction. You should never ever have to set this
  816. # option to true. If you for some reason find yourself needing to use this
  817. # option as part of troubleshooting or a bug, please reach out to us in
  818. # the conduwuit Matrix room with information and details.
  819. #
  820. # Disabling compaction will lead to a significantly bloated and
  821. # explosively large database, gradually poor performance, unnecessarily
  822. # excessive disk read/writes, and slower shutdowns and startups.
  823. #
  824. #rocksdb_compaction = true
  825. # Level of statistics collection. Some admin commands to display database
  826. # statistics may require this option to be set. Database performance may
  827. # be impacted by higher settings.
  828. #
  829. # Option is a number ranging from 0 to 6:
  830. # 0 = No statistics.
  831. # 1 = No statistics in release mode (default).
  832. # 2 to 3 = Statistics with no performance impact.
  833. # 3 to 5 = Statistics with possible performance impact.
  834. # 6 = All statistics.
  835. #
  836. #rocksdb_stats_level = 1
  837. # This is a password that can be configured that will let you login to the
  838. # server bot account (currently `@conduit`) for emergency troubleshooting
  839. # purposes such as recovering/recreating your admin room, or inviting
  840. # yourself back.
  841. #
  842. # See https://conduwuit.puppyirl.gay/troubleshooting.html#lost-access-to-admin-room for other ways to get back into your admin room.
  843. #
  844. # Once this password is unset, all sessions will be logged out for
  845. # security purposes.
  846. #
  847. # example: "F670$2CP@Hw8mG7RY1$%!#Ic7YA"
  848. #
  849. emergency_password = {{ matrix_conduwuit_config_emergency_password | to_json }}
  850. # This item is undocumented. Please contribute documentation for it.
  851. #
  852. #notification_push_path = "/_matrix/push/v1/notify"
  853. # Allow local (your server only) presence updates/requests.
  854. #
  855. # Note that presence on conduwuit is very fast unlike Synapse's. If using
  856. # outgoing presence, this MUST be enabled.
  857. #
  858. #allow_local_presence = true
  859. # Allow incoming federated presence updates/requests.
  860. #
  861. # This option receives presence updates from other servers, but does not
  862. # send any unless `allow_outgoing_presence` is true. Note that presence on
  863. # conduwuit is very fast unlike Synapse's.
  864. #
  865. #allow_incoming_presence = true
  866. # Allow outgoing presence updates/requests.
  867. #
  868. # This option sends presence updates to other servers, but does not
  869. # receive any unless `allow_incoming_presence` is true. Note that presence
  870. # on conduwuit is very fast unlike Synapse's. If using outgoing presence,
  871. # you MUST enable `allow_local_presence` as well.
  872. #
  873. #allow_outgoing_presence = true
  874. # How many seconds without presence updates before you become idle.
  875. # Defaults to 5 minutes.
  876. #
  877. #presence_idle_timeout_s = 300
  878. # How many seconds without presence updates before you become offline.
  879. # Defaults to 30 minutes.
  880. #
  881. #presence_offline_timeout_s = 1800
  882. # Enable the presence idle timer for remote users.
  883. #
  884. # Disabling is offered as an optimization for servers participating in
  885. # many large rooms or when resources are limited. Disabling it may cause
  886. # incorrect presence states (i.e. stuck online) to be seen for some remote
  887. # users.
  888. #
  889. #presence_timeout_remote_users = true
  890. # Allow receiving incoming read receipts from remote servers.
  891. #
  892. #allow_incoming_read_receipts = true
  893. # Allow sending read receipts to remote servers.
  894. #
  895. #allow_outgoing_read_receipts = true
  896. # Allow outgoing typing updates to federation.
  897. #
  898. #allow_outgoing_typing = true
  899. # Allow incoming typing updates from federation.
  900. #
  901. #allow_incoming_typing = true
  902. # Maximum time federation user can indicate typing.
  903. #
  904. #typing_federation_timeout_s = 30
  905. # Minimum time local client can indicate typing. This does not override a
  906. # client's request to stop typing. It only enforces a minimum value in
  907. # case of no stop request.
  908. #
  909. #typing_client_timeout_min_s = 15
  910. # Maximum time local client can indicate typing.
  911. #
  912. #typing_client_timeout_max_s = 45
  913. # Set this to true for conduwuit to compress HTTP response bodies using
  914. # zstd. This option does nothing if conduwuit was not built with
  915. # `zstd_compression` feature. Please be aware that enabling HTTP
  916. # compression may weaken TLS. Most users should not need to enable this.
  917. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH
  918. # before deciding to enable this.
  919. #
  920. #zstd_compression = false
  921. # Set this to true for conduwuit to compress HTTP response bodies using
  922. # gzip. This option does nothing if conduwuit was not built with
  923. # `gzip_compression` feature. Please be aware that enabling HTTP
  924. # compression may weaken TLS. Most users should not need to enable this.
  925. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH before
  926. # deciding to enable this.
  927. #
  928. # If you are in a large amount of rooms, you may find that enabling this
  929. # is necessary to reduce the significantly large response bodies.
  930. #
  931. #gzip_compression = false
  932. # Set this to true for conduwuit to compress HTTP response bodies using
  933. # brotli. This option does nothing if conduwuit was not built with
  934. # `brotli_compression` feature. Please be aware that enabling HTTP
  935. # compression may weaken TLS. Most users should not need to enable this.
  936. # See https://breachattack.com/ and https://wikipedia.org/wiki/BREACH
  937. # before deciding to enable this.
  938. #
  939. #brotli_compression = false
  940. # Set to true to allow user type "guest" registrations. Some clients like
  941. # Element attempt to register guest users automatically.
  942. #
  943. #allow_guest_registration = false
  944. # Set to true to log guest registrations in the admin room. Note that
  945. # these may be noisy or unnecessary if you're a public homeserver.
  946. #
  947. #log_guest_registrations = false
  948. # Set to true to allow guest registrations/users to auto join any rooms
  949. # specified in `auto_join_rooms`.
  950. #
  951. #allow_guests_auto_join_rooms = false
  952. # Enable the legacy unauthenticated Matrix media repository endpoints.
  953. # These endpoints consist of:
  954. # - /_matrix/media/*/config
  955. # - /_matrix/media/*/upload
  956. # - /_matrix/media/*/preview_url
  957. # - /_matrix/media/*/download/*
  958. # - /_matrix/media/*/thumbnail/*
  959. #
  960. # The authenticated equivalent endpoints are always enabled.
  961. #
  962. # Defaults to true for now, but this is highly subject to change, likely
  963. # in the next release.
  964. #
  965. #allow_legacy_media = true
  966. # This item is undocumented. Please contribute documentation for it.
  967. #
  968. #freeze_legacy_media = true
  969. # Check consistency of the media directory at startup:
  970. # 1. When `media_compat_file_link` is enabled, this check will upgrade
  971. # media when switching back and forth between Conduit and conduwuit.
  972. # Both options must be enabled to handle this.
  973. # 2. When media is deleted from the directory, this check will also delete
  974. # its database entry.
  975. #
  976. # If none of these checks apply to your use cases, and your media
  977. # directory is significantly large setting this to false may reduce
  978. # startup time.
  979. #
  980. #media_startup_check = true
  981. # Enable backward-compatibility with Conduit's media directory by creating
  982. # symlinks of media.
  983. #
  984. # This option is only necessary if you plan on using Conduit again.
  985. # Otherwise setting this to false reduces filesystem clutter and overhead
  986. # for managing these symlinks in the directory. This is now disabled by
  987. # default. You may still return to upstream Conduit but you have to run
  988. # conduwuit at least once with this set to true and allow the
  989. # media_startup_check to take place before shutting down to return to
  990. # Conduit.
  991. #
  992. #media_compat_file_link = false
  993. # Prune missing media from the database as part of the media startup
  994. # checks.
  995. #
  996. # This means if you delete files from the media directory the
  997. # corresponding entries will be removed from the database. This is
  998. # disabled by default because if the media directory is accidentally moved
  999. # or inaccessible, the metadata entries in the database will be lost with
  1000. # sadness.
  1001. #
  1002. #prune_missing_media = false
  1003. # Vector list of servers that conduwuit will refuse to download remote
  1004. # media from.
  1005. #
  1006. #prevent_media_downloads_from = []
  1007. # List of forbidden server names that we will block incoming AND outgoing
  1008. # federation with, and block client room joins / remote user invites.
  1009. #
  1010. # This check is applied on the room ID, room alias, sender server name,
  1011. # sender user's server name, inbound federation X-Matrix origin, and
  1012. # outbound federation handler.
  1013. #
  1014. # Basically "global" ACLs.
  1015. #
  1016. #forbidden_remote_server_names = []
  1017. # List of forbidden server names that we will block all outgoing federated
  1018. # room directory requests for. Useful for preventing our users from
  1019. # wandering into bad servers or spaces.
  1020. #
  1021. #forbidden_remote_room_directory_server_names = []
  1022. # Vector list of IPv4 and IPv6 CIDR ranges / subnets *in quotes* that you
  1023. # do not want conduwuit to send outbound requests to. Defaults to
  1024. # RFC1918, unroutable, loopback, multicast, and testnet addresses for
  1025. # security.
  1026. #
  1027. # Please be aware that this is *not* a guarantee. You should be using a
  1028. # firewall with zones as doing this on the application layer may have
  1029. # bypasses.
  1030. #
  1031. # Currently this does not account for proxies in use like Synapse does.
  1032. #
  1033. # To disable, set this to be an empty vector (`[]`).
  1034. #
  1035. # Defaults to:
  1036. # ["127.0.0.0/8", "10.0.0.0/8", "172.16.0.0/12",
  1037. # "192.168.0.0/16", "100.64.0.0/10", "192.0.0.0/24", "169.254.0.0/16",
  1038. # "192.88.99.0/24", "198.18.0.0/15", "192.0.2.0/24", "198.51.100.0/24",
  1039. # "203.0.113.0/24", "224.0.0.0/4", "::1/128", "fe80::/10", "fc00::/7",
  1040. # "2001:db8::/32", "ff00::/8", "fec0::/10"]
  1041. #
  1042. #ip_range_denylist =
  1043. # Optional IP address or network interface-name to bind as the source of
  1044. # URL preview requests. If not set, it will not bind to a specific
  1045. # address or interface.
  1046. #
  1047. # Interface names only supported on Linux, Android, and Fuchsia platforms;
  1048. # all other platforms can specify the IP address. To list the interfaces
  1049. # on your system, use the command `ip link show`.
  1050. #
  1051. # example: `"eth0"` or `"1.2.3.4"`
  1052. #
  1053. #url_preview_bound_interface =
  1054. # Vector list of domains allowed to send requests to for URL previews.
  1055. #
  1056. # This is a *contains* match, not an explicit match. Putting "google.com"
  1057. # will match "https://google.com" and
  1058. # "http://mymaliciousdomainexamplegoogle.com" Setting this to "*" will
  1059. # allow all URL previews. Please note that this opens up significant
  1060. # attack surface to your server, you are expected to be aware of the risks
  1061. # by doing so.
  1062. #
  1063. #url_preview_domain_contains_allowlist = []
  1064. # Vector list of explicit domains allowed to send requests to for URL
  1065. # previews.
  1066. #
  1067. # This is an *explicit* match, not a contains match. Putting "google.com"
  1068. # will match "https://google.com", "http://google.com", but not
  1069. # "https://mymaliciousdomainexamplegoogle.com". Setting this to "*" will
  1070. # allow all URL previews. Please note that this opens up significant
  1071. # attack surface to your server, you are expected to be aware of the risks
  1072. # by doing so.
  1073. #
  1074. #url_preview_domain_explicit_allowlist = []
  1075. # Vector list of explicit domains not allowed to send requests to for URL
  1076. # previews.
  1077. #
  1078. # This is an *explicit* match, not a contains match. Putting "google.com"
  1079. # will match "https://google.com", "http://google.com", but not
  1080. # "https://mymaliciousdomainexamplegoogle.com". The denylist is checked
  1081. # first before allowlist. Setting this to "*" will not do anything.
  1082. #
  1083. #url_preview_domain_explicit_denylist = []
  1084. # Vector list of URLs allowed to send requests to for URL previews.
  1085. #
  1086. # Note that this is a *contains* match, not an explicit match. Putting
  1087. # "google.com" will match "https://google.com/",
  1088. # "https://google.com/url?q=https://mymaliciousdomainexample.com", and
  1089. # "https://mymaliciousdomainexample.com/hi/google.com" Setting this to "*"
  1090. # will allow all URL previews. Please note that this opens up significant
  1091. # attack surface to your server, you are expected to be aware of the risks
  1092. # by doing so.
  1093. #
  1094. #url_preview_url_contains_allowlist = []
  1095. # Maximum amount of bytes allowed in a URL preview body size when
  1096. # spidering. Defaults to 256KB in bytes.
  1097. #
  1098. #url_preview_max_spider_size = 256000
  1099. # Option to decide whether you would like to run the domain allowlist
  1100. # checks (contains and explicit) on the root domain or not. Does not apply
  1101. # to URL contains allowlist. Defaults to false.
  1102. #
  1103. # Example usecase: If this is enabled and you have "wikipedia.org" allowed
  1104. # in the explicit and/or contains domain allowlist, it will allow all
  1105. # subdomains under "wikipedia.org" such as "en.m.wikipedia.org" as the
  1106. # root domain is checked and matched. Useful if the domain contains
  1107. # allowlist is still too broad for you but you still want to allow all the
  1108. # subdomains under a root domain.
  1109. #
  1110. #url_preview_check_root_domain = false
  1111. # List of forbidden room aliases and room IDs as strings of regex
  1112. # patterns.
  1113. #
  1114. # Regex can be used or explicit contains matches can be done by just
  1115. # specifying the words (see example).
  1116. #
  1117. # This is checked upon room alias creation, custom room ID creation if
  1118. # used, and startup as warnings if any room aliases in your database have
  1119. # a forbidden room alias/ID.
  1120. #
  1121. # example: ["19dollarfortnitecards", "b[4a]droom"]
  1122. #
  1123. #forbidden_alias_names = []
  1124. # List of forbidden username patterns/strings.
  1125. #
  1126. # Regex can be used or explicit contains matches can be done by just
  1127. # specifying the words (see example).
  1128. #
  1129. # This is checked upon username availability check, registration, and
  1130. # startup as warnings if any local users in your database have a forbidden
  1131. # username.
  1132. #
  1133. # example: ["administrator", "b[a4]dusernam[3e]"]
  1134. #
  1135. #forbidden_usernames = []
  1136. # Retry failed and incomplete messages to remote servers immediately upon
  1137. # startup. This is called bursting. If this is disabled, said messages may
  1138. # not be delivered until more messages are queued for that server. Do not
  1139. # change this option unless server resources are extremely limited or the
  1140. # scale of the server's deployment is huge. Do not disable this unless you
  1141. # know what you are doing.
  1142. #
  1143. #startup_netburst = true
  1144. # Messages are dropped and not reattempted. The `startup_netburst` option
  1145. # must be enabled for this value to have any effect. Do not change this
  1146. # value unless you know what you are doing. Set this value to -1 to
  1147. # reattempt every message without trimming the queues; this may consume
  1148. # significant disk. Set this value to 0 to drop all messages without any
  1149. # attempt at redelivery.
  1150. #
  1151. #startup_netburst_keep = 50
  1152. # Block non-admin local users from sending room invites (local and
  1153. # remote), and block non-admin users from receiving remote room invites.
  1154. #
  1155. # Admins are always allowed to send and receive all room invites.
  1156. #
  1157. #block_non_admin_invites = false
  1158. # Allow admins to enter commands in rooms other than "#admins" (admin
  1159. # room) by prefixing your message with "\!admin" or "\\!admin" followed up
  1160. # a normal conduwuit admin command. The reply will be publicly visible to
  1161. # the room, originating from the sender.
  1162. #
  1163. # example: \\!admin debug ping puppygock.gay
  1164. #
  1165. #admin_escape_commands = true
  1166. # Automatically activate the conduwuit admin room console / CLI on
  1167. # startup. This option can also be enabled with `--console` conduwuit
  1168. # argument.
  1169. #
  1170. #admin_console_automatic = false
  1171. # List of admin commands to execute on startup.
  1172. #
  1173. # This option can also be configured with the `--execute` conduwuit
  1174. # argument and can take standard shell commands and environment variables
  1175. #
  1176. # For example: `./conduwuit --execute "server admin-notice conduwuit has
  1177. # started up at $(date)"`
  1178. #
  1179. # example: admin_execute = ["debug ping puppygock.gay", "debug echo hi"]`
  1180. #
  1181. #admin_execute = []
  1182. # Ignore errors in startup commands.
  1183. #
  1184. # If false, conduwuit will error and fail to start if an admin execute
  1185. # command (`--execute` / `admin_execute`) fails.
  1186. #
  1187. #admin_execute_errors_ignore = false
  1188. # Controls the max log level for admin command log captures (logs
  1189. # generated from running admin commands). Defaults to "info" on release
  1190. # builds, else "debug" on debug builds.
  1191. #
  1192. #admin_log_capture = "info"
  1193. # The default room tag to apply on the admin room.
  1194. #
  1195. # On some clients like Element, the room tag "m.server_notice" is a
  1196. # special pinned room at the very bottom of your room list. The conduwuit
  1197. # admin room can be pinned here so you always have an easy-to-access
  1198. # shortcut dedicated to your admin room.
  1199. #
  1200. #admin_room_tag = "m.server_notice"
  1201. # Sentry.io crash/panic reporting, performance monitoring/metrics, etc.
  1202. # This is NOT enabled by default. conduwuit's default Sentry reporting
  1203. # endpoint domain is `o4506996327251968.ingest.us.sentry.io`.
  1204. #
  1205. #sentry = false
  1206. # Sentry reporting URL, if a custom one is desired.
  1207. #
  1208. #sentry_endpoint = "https://fe2eb4536aa04949e28eff3128d64757@o4506996327251968.ingest.us.sentry.io/4506996334657536"
  1209. # Report your conduwuit server_name in Sentry.io crash reports and
  1210. # metrics.
  1211. #
  1212. #sentry_send_server_name = false
  1213. # Performance monitoring/tracing sample rate for Sentry.io.
  1214. #
  1215. # Note that too high values may impact performance, and can be disabled by
  1216. # setting it to 0.0 (0%) This value is read as a percentage to Sentry,
  1217. # represented as a decimal. Defaults to 15% of traces (0.15)
  1218. #
  1219. #sentry_traces_sample_rate = 0.15
  1220. # Whether to attach a stacktrace to Sentry reports.
  1221. #
  1222. #sentry_attach_stacktrace = false
  1223. # Send panics to Sentry. This is true by default, but Sentry has to be
  1224. # enabled. The global `sentry` config option must be enabled to send any
  1225. # data.
  1226. #
  1227. #sentry_send_panic = true
  1228. # Send errors to sentry. This is true by default, but sentry has to be
  1229. # enabled. This option is only effective in release-mode; forced to false
  1230. # in debug-mode.
  1231. #
  1232. #sentry_send_error = true
  1233. # Controls the tracing log level for Sentry to send things like
  1234. # breadcrumbs and transactions
  1235. #
  1236. #sentry_filter = "info"
  1237. # Enable the tokio-console. This option is only relevant to developers.
  1238. #
  1239. # For more information, see:
  1240. # https://conduwuit.puppyirl.gay/development.html#debugging-with-tokio-console
  1241. #
  1242. #tokio_console = false
  1243. # This item is undocumented. Please contribute documentation for it.
  1244. #
  1245. #test = false
  1246. # Controls whether admin room notices like account registrations, password
  1247. # changes, account deactivations, room directory publications, etc will be
  1248. # sent to the admin room. Update notices and normal admin command
  1249. # responses will still be sent.
  1250. #
  1251. #admin_room_notices = true
  1252. # Enable database pool affinity support. On supporting systems, block
  1253. # device queue topologies are detected and the request pool is optimized
  1254. # for the hardware; db_pool_workers is determined automatically.
  1255. #
  1256. #db_pool_affinity = true
  1257. # Sets the number of worker threads in the frontend-pool of the database.
  1258. # This number should reflect the I/O capabilities of the system,
  1259. # such as the queue-depth or the number of simultaneous requests in
  1260. # flight. Defaults to 32 or four times the number of CPU cores, whichever
  1261. # is greater.
  1262. #
  1263. # Note: This value is only used if db_pool_affinity is disabled or not
  1264. # detected on the system, otherwise it is determined automatically.
  1265. #
  1266. #db_pool_workers = 32
  1267. # When db_pool_affinity is enabled and detected, the size of any worker
  1268. # group will not exceed the determined value. This is necessary when
  1269. # thread-pooling approach does not scale to the full capabilities of
  1270. # high-end hardware; using detected values without limitation could
  1271. # degrade performance.
  1272. #
  1273. # The value is multiplied by the number of cores which share a device
  1274. # queue, since group workers can be scheduled on any of those cores.
  1275. #
  1276. #db_pool_workers_limit = 64
  1277. # Determines the size of the queues feeding the database's frontend-pool.
  1278. # The size of the queue is determined by multiplying this value with the
  1279. # number of pool workers. When this queue is full, tokio tasks conducting
  1280. # requests will yield until space is available; this is good for
  1281. # flow-control by avoiding buffer-bloat, but can inhibit throughput if
  1282. # too low.
  1283. #
  1284. #db_pool_queue_mult = 4
  1285. # Sets the initial value for the concurrency of streams. This value simply
  1286. # allows overriding the default in the code. The default is 32, which is
  1287. # the same as the default in the code. Note this value is itself
  1288. # overridden by the computed stream_width_scale, unless that is disabled;
  1289. # this value can serve as a fixed-width instead.
  1290. #
  1291. #stream_width_default = 32
  1292. # Scales the stream width starting from a base value detected for the
  1293. # specific system. The base value is the database pool worker count
  1294. # determined from the hardware queue size (e.g. 32 for SSD or 64 or 128+
  1295. # for NVMe). This float allows scaling the width up or down by multiplying
  1296. # it (e.g. 1.5, 2.0, etc). The maximum result can be the size of the pool
  1297. # queue (see: db_pool_queue_mult) as any larger value will stall the tokio
  1298. # task. The value can also be scaled down (e.g. 0.5) to improve
  1299. # responsiveness for many users at the cost of throughput for each.
  1300. #
  1301. # Setting this value to 0.0 causes the stream width to be fixed at the
  1302. # value of stream_width_default. The default scale is 1.0 to match the
  1303. # capabilities detected for the system.
  1304. #
  1305. #stream_width_scale = 1.0
  1306. # Sets the initial amplification factor. This controls batch sizes of
  1307. # requests made by each pool worker, multiplying the throughput of each
  1308. # stream. This value is somewhat abstract from specific hardware
  1309. # characteristics and can be significantly larger than any thread count or
  1310. # queue size. This is because each database query may require several
  1311. # index lookups, thus many database queries in a batch may make progress
  1312. # independently while also sharing index and data blocks which may or may
  1313. # not be cached. It is worthwhile to submit huge batches to reduce
  1314. # complexity. The maximum value is 32768, though sufficient hardware is
  1315. # still advised for that.
  1316. #
  1317. #stream_amplification = 1024
  1318. # Number of sender task workers; determines sender parallelism. Default is
  1319. # '0' which means the value is determined internally, likely matching the
  1320. # number of tokio worker-threads or number of cores, etc. Override by
  1321. # setting a non-zero value.
  1322. #
  1323. #sender_workers = 0
  1324. [global.well_known]
  1325. # The server URL that the client well-known file will serve. This should
  1326. # not contain a port, and should just be a valid HTTPS URL.
  1327. #
  1328. # example: "https://matrix.example.com"
  1329. #
  1330. #client =
  1331. # The server base domain of the URL with a specific port that the server
  1332. # well-known file will serve. This should contain a port at the end, and
  1333. # should not be a URL.
  1334. #
  1335. # example: "matrix.example.com:443"
  1336. #
  1337. #server =
  1338. # This item is undocumented. Please contribute documentation for it.
  1339. #
  1340. #support_page =
  1341. # This item is undocumented. Please contribute documentation for it.
  1342. #
  1343. #support_role =
  1344. # This item is undocumented. Please contribute documentation for it.
  1345. #
  1346. #support_email =
  1347. # This item is undocumented. Please contribute documentation for it.
  1348. #
  1349. #support_mxid =