Stasiek Michalski 73f0a6
# vim:ft=yaml
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Server ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The domain name of the server, with optional explicit port.
Stasiek Michalski 73f0a6
# This is used by remote servers to connect to this server,
Stasiek Michalski 73f0a6
# e.g. matrix.org, localhost:8080, etc.
Stasiek Michalski 73f0a6
# This is also the last part of your UserID.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
server_name: "opensuse.org"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# When running as a daemon, the file to store the pid in
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
pid_file: /var/lib/matrix-synapse/homeserver.pid
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The path to the web client which will be served at /_matrix/client/
Stasiek Michalski 73f0a6
# if 'webclient' is configured under the 'listeners' configuration.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#web_client_location: "/path/to/web/root"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The public-facing base URL that clients use to access this HS
Stasiek Michalski 73f0a6
# (not including _matrix/...). This is the same URL a user would
Stasiek Michalski 73f0a6
# enter into the 'custom HS URL' field on their client. If you
Stasiek Michalski 73f0a6
# use synapse with a reverse proxy, this should be the URL to reach
Stasiek Michalski 73f0a6
# synapse via the proxy.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 97438a
public_baseurl: https://matrix.opensuse.org/
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Set the soft limit on the number of file descriptors synapse can use
Stasiek Michalski 73f0a6
# Zero is used to indicate synapse should set the soft limit to the
Stasiek Michalski 73f0a6
# hard limit.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#soft_file_limit: 0
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Set to false to disable presence tracking on this homeserver.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#use_presence: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether to require authentication to retrieve profile data (avatars,
Stasiek Michalski 73f0a6
# display names) of other users through the client API. Defaults to
Stasiek Michalski 73f0a6
# 'false'. Note that profile data is also available via the federation
Stasiek Michalski 73f0a6
# API, so this setting is of limited value if federation is enabled on
Stasiek Michalski 73f0a6
# the server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#require_auth_for_profile_requests: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Uncomment to require a user to share a room with another user in order
Stasiek Michalski 73f0a6
# to retrieve their profile information. Only checked on Client-Server
Stasiek Michalski 73f0a6
# requests. Profile requests from other servers should be checked by the
Stasiek Michalski 73f0a6
# requesting server. Defaults to 'false'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#limit_profile_requests_to_users_who_share_rooms: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# If set to 'true', removes the need for authentication to access the server's
Stasiek Michalski 73f0a6
# public rooms directory through the client API, meaning that anyone can
Stasiek Michalski 73f0a6
# query the room directory. Defaults to 'false'.
Stasiek Michalski 73f0a6
#
Sasi Olin 7fa55e
allow_public_rooms_without_auth: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# If set to 'true', allows any other homeserver to fetch the server's public
Stasiek Michalski 73f0a6
# rooms directory via federation. Defaults to 'false'.
Stasiek Michalski 73f0a6
#
Sasi Olin 7fa55e
allow_public_rooms_over_federation: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The default room version for newly created rooms.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Known room versions are listed here:
Stasiek Michalski 73f0a6
# https://matrix.org/docs/spec/#complete-list-of-room-versions
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# For example, for room version 1, default_room_version should be set
Stasiek Michalski 73f0a6
# to "1".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#default_room_version: "5"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The GC threshold parameters to pass to `gc.set_threshold`, if defined
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#gc_thresholds: [700, 10, 10]
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Set the limit on the returned events in the timeline in the get
Stasiek Michalski 73f0a6
# and sync operations. The default value is -1, means no upper limit.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#filter_timeline_limit: 5000
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether room invites to users on this server should be blocked
Stasiek Michalski 73f0a6
# (except those sent by local server admins). The default is False.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#block_non_admin_invites: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Room searching
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If disabled, new messages will not be indexed for searching and users
Stasiek Michalski 73f0a6
# will receive errors when searching for messages. Defaults to enabled.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_search: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Restrict federation to the following whitelist of domains.
Stasiek Michalski 73f0a6
# N.B. we recommend also firewalling your federation listener to limit
Stasiek Michalski 73f0a6
# inbound federation traffic as early as possible, rather than relying
Stasiek Michalski 73f0a6
# purely on this application-layer restriction.  If not specified, the
Stasiek Michalski 73f0a6
# default is to whitelist everything.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_domain_whitelist:
Stasiek Michalski 73f0a6
#  - lon.example.com
Stasiek Michalski 73f0a6
#  - nyc.example.com
Stasiek Michalski 73f0a6
#  - syd.example.com
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Prevent federation requests from being sent to the following
Stasiek Michalski 73f0a6
# blacklist IP address CIDR ranges. If this option is not specified, or
Stasiek Michalski 73f0a6
# specified with an empty list, no ip range blacklist will be enforced.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# As of Synapse v1.4.0 this option also affects any outbound requests to identity
Stasiek Michalski 73f0a6
# servers provided by user input.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
Stasiek Michalski 73f0a6
# listed here, since they correspond to unroutable addresses.)
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
federation_ip_range_blacklist:
Stasiek Michalski 73f0a6
  - '127.0.0.0/8'
Stasiek Michalski 73f0a6
  - '10.0.0.0/8'
Stasiek Michalski 73f0a6
  - '172.16.0.0/12'
Stasiek Michalski 73f0a6
  - '192.168.0.0/16'
Stasiek Michalski 73f0a6
  - '100.64.0.0/10'
Stasiek Michalski 73f0a6
  - '169.254.0.0/16'
Stasiek Michalski 73f0a6
  - '::1/128'
Stasiek Michalski 73f0a6
  - 'fe80::/64'
Stasiek Michalski 73f0a6
  - 'fc00::/7'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of ports that Synapse should listen on, their purpose and their
Stasiek Michalski 73f0a6
# configuration.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Options for each listener include:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   port: the TCP port to bind to
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   bind_addresses: a list of local addresses to listen on. The default is
Stasiek Michalski 73f0a6
#       'all local interfaces'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   type: the type of listener. Normally 'http', but other valid options are:
Stasiek Michalski 73f0a6
#       'manhole' (see docs/manhole.md),
Stasiek Michalski 73f0a6
#       'metrics' (see docs/metrics-howto.md),
Stasiek Michalski 73f0a6
#       'replication' (see docs/workers.md).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   tls: set to true to enable TLS for this listener. Will use the TLS
Stasiek Michalski 73f0a6
#       key/cert specified in tls_private_key_path / tls_certificate_path.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   x_forwarded: Only valid for an 'http' listener. Set to true to use the
Stasiek Michalski 73f0a6
#       X-Forwarded-For header as the client IP. Useful when Synapse is
Stasiek Michalski 73f0a6
#       behind a reverse-proxy.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   resources: Only valid for an 'http' listener. A list of resources to host
Stasiek Michalski 73f0a6
#       on this port. Options for each resource are:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#       names: a list of names of HTTP resources. See below for a list of
Stasiek Michalski 73f0a6
#           valid resource names.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#       compress: set to true to enable HTTP comression for this resource.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   additional_resources: Only valid for an 'http' listener. A map of
Stasiek Michalski 73f0a6
#        additional endpoints which should be loaded via dynamic modules.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Valid resource names are:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   client: the client-server API (/_matrix/client), and the synapse admin
Stasiek Michalski 73f0a6
#       API (/_synapse/admin). Also implies 'media' and 'static'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   consent: user consent forms (/_matrix/consent). See
Stasiek Michalski 73f0a6
#       docs/consent_tracking.md.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   federation: the server-server API (/_matrix/federation). Also implies
Stasiek Michalski 73f0a6
#       'media', 'keys', 'openid'
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   keys: the key discovery API (/_matrix/keys).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   media: the media API (/_matrix/media).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   metrics: the metrics interface. See docs/metrics-howto.md.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   openid: OpenID authentication.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   replication: the HTTP replication API (/_synapse/replication). See
Stasiek Michalski 73f0a6
#       docs/workers.md.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   static: static resources under synapse/static (/_matrix/static). (Mostly
Stasiek Michalski 73f0a6
#       useful for 'fallback authentication'.)
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   webclient: A web client. Requires web_client_location to be set.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
listeners:
Stasiek Michalski 73f0a6
  # TLS-enabled listener: for when matrix traffic is sent directly to synapse.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Disabled by default. To enable it, uncomment the following. (Note that you
Stasiek Michalski 73f0a6
  # will also need to give Synapse a TLS key and certificate: see the TLS section
Stasiek Michalski 73f0a6
  # below.)
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #- port: 8448
Stasiek Michalski 73f0a6
  #  type: http
Stasiek Michalski 73f0a6
  #  tls: true
Stasiek Michalski 73f0a6
  #  resources:
Stasiek Michalski 73f0a6
  #    - names: [client, federation]
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Unsecure HTTP listener: for when matrix traffic passes through a reverse proxy
Stasiek Michalski 73f0a6
  # that unwraps TLS.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # If you plan to use a reverse proxy, please see
Stasiek Michalski 73f0a6
  # https://github.com/matrix-org/synapse/blob/master/docs/reverse_proxy.md.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  - port: 8008
Stasiek Michalski 73f0a6
    tls: false
Stasiek Michalski 73f0a6
    type: http
Stasiek Michalski 73f0a6
    x_forwarded: true
Sasi Olin 7fa55e
    bind_addresses: ['::']
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    resources:
Sasi Olin 7fa55e
      - names: [client]
Sasi Olin 7fa55e
        compress: true
Sasi Olin 7fa55e
      - names: [federation]
Jan Zerebecki bf8044
      - names: [metrics]
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # example additional_resources:
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #additional_resources:
Stasiek Michalski 73f0a6
    #  "/_matrix/my/custom/endpoint":
Stasiek Michalski 73f0a6
    #    module: my_module.CustomRequestHandler
Stasiek Michalski 73f0a6
    #    config: {}
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Turn on the twisted ssh manhole service on localhost on the given
Stasiek Michalski 73f0a6
  # port.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #- port: 9000
Stasiek Michalski 73f0a6
  #  bind_addresses: ['::1', '127.0.0.1']
Stasiek Michalski 73f0a6
  #  type: manhole
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Homeserver blocking ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# How to reach the server admin, used in ResourceLimitError
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
admin_contact: 'mailto:admin@opensuse.org'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Global blocking
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#hs_disabled: false
Stasiek Michalski 73f0a6
#hs_disabled_message: 'Human readable reason for why the HS is blocked'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Monthly Active User Blocking
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Used in cases where the admin or server owner wants to limit to the
Stasiek Michalski 73f0a6
# number of monthly active users.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'limit_usage_by_mau' disables/enables monthly active user blocking. When
Stasiek Michalski 73f0a6
# anabled and a limit is reached the server returns a 'ResourceLimitError'
Stasiek Michalski 73f0a6
# with error type Codes.RESOURCE_LIMIT_EXCEEDED
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'max_mau_value' is the hard limit of monthly active users above which
Stasiek Michalski 73f0a6
# the server will start blocking user actions.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'mau_trial_days' is a means to add a grace period for active users. It
Stasiek Michalski 73f0a6
# means that users must be active for this number of days before they
Stasiek Michalski 73f0a6
# can be considered active and guards against the case where lots of users
Stasiek Michalski 73f0a6
# sign up in a short space of time never to return after their initial
Stasiek Michalski 73f0a6
# session.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'mau_limit_alerting' is a means of limiting client side alerting
Stasiek Michalski 73f0a6
# should the mau limit be reached. This is useful for small instances
Stasiek Michalski 73f0a6
# where the admin has 5 mau seats (say) for 5 specific people and no
Stasiek Michalski 73f0a6
# interest increasing the mau limit further. Defaults to True, which
Stasiek Michalski 73f0a6
# means that alerting is enabled
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#limit_usage_by_mau: false
Stasiek Michalski 73f0a6
#max_mau_value: 50
Stasiek Michalski 73f0a6
#mau_trial_days: 2
Stasiek Michalski 73f0a6
#mau_limit_alerting: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# If enabled, the metrics for the number of monthly active users will
Stasiek Michalski 73f0a6
# be populated, however no one will be limited. If limit_usage_by_mau
Stasiek Michalski 73f0a6
# is true, this is implied to be true.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#mau_stats_only: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Sometimes the server admin will want to ensure certain accounts are
Stasiek Michalski 73f0a6
# never blocked by mau checking. These accounts are specified here.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#mau_limit_reserved_threepids:
Stasiek Michalski 73f0a6
#  - medium: 'email'
Stasiek Michalski 73f0a6
#    address: 'reserved_user@example.com'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Used by phonehome stats to group together related servers.
Stasiek Michalski 73f0a6
#server_context: context
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Resource-constrained homeserver Settings
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If limit_remote_rooms.enabled is True, the room complexity will be
Stasiek Michalski 73f0a6
# checked before a user joins a new remote room. If it is above
Stasiek Michalski 73f0a6
# limit_remote_rooms.complexity, it will disallow joining or
Stasiek Michalski 73f0a6
# instantly leave.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# limit_remote_rooms.complexity_error can be set to customise the text
Stasiek Michalski 73f0a6
# displayed to the user when a room above the complexity threshold has
Stasiek Michalski 73f0a6
# its join cancelled.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Uncomment the below lines to enable:
Stasiek Michalski 73f0a6
#limit_remote_rooms:
Stasiek Michalski 73f0a6
#  enabled: true
Stasiek Michalski 73f0a6
#  complexity: 1.0
Stasiek Michalski 73f0a6
#  complexity_error: "This room is too complex."
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether to require a user to be in the room to add an alias to it.
Stasiek Michalski 73f0a6
# Defaults to 'true'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#require_membership_for_aliases: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether to allow per-room membership profiles through the send of membership
Stasiek Michalski 73f0a6
# events with profile information that differ from the target's global profile.
Stasiek Michalski 73f0a6
# Defaults to 'true'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#allow_per_room_profiles: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# How long to keep redacted events in unredacted form in the database. After
Stasiek Michalski 73f0a6
# this period redacted events get replaced with their redacted form in the DB.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Defaults to `7d`. Set to `null` to disable.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#redaction_retention_period: 28d
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# How long to track users' last seen time and IPs in the database.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Defaults to `28d`. Set to `null` to disable clearing out of old rows.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#user_ips_max_age: 14d
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Message retention policy at the server level.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Room admins and mods can define a retention period for their rooms using the
Stasiek Michalski 73f0a6
# 'm.room.retention' state event, and server admins can cap this period by setting
Stasiek Michalski 73f0a6
# the 'allowed_lifetime_min' and 'allowed_lifetime_max' config options.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If this feature is enabled, Synapse will regularly look for and purge events
Stasiek Michalski 73f0a6
# which are older than the room's maximum retention period. Synapse will also
Stasiek Michalski 73f0a6
# filter events received over federation so that events that should have been
Stasiek Michalski 73f0a6
# purged are ignored and not stored again.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
retention:
Stasiek Michalski 73f0a6
  # The message retention policies feature is disabled by default. Uncomment the
Stasiek Michalski 73f0a6
  # following line to enable it.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #enabled: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Default retention policy. If set, Synapse will apply it to rooms that lack the
Stasiek Michalski 73f0a6
  # 'm.room.retention' state event. Currently, the value of 'min_lifetime' doesn't
Stasiek Michalski 73f0a6
  # matter much because Synapse doesn't take it into account yet.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #default_policy:
Stasiek Michalski 73f0a6
  #  min_lifetime: 1d
Stasiek Michalski 73f0a6
  #  max_lifetime: 1y
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Retention policy limits. If set, a user won't be able to send a
Stasiek Michalski 73f0a6
  # 'm.room.retention' event which features a 'min_lifetime' or a 'max_lifetime'
Stasiek Michalski 73f0a6
  # that's not within this range. This is especially useful in closed federations,
Stasiek Michalski 73f0a6
  # in which server admins can make sure every federating server applies the same
Stasiek Michalski 73f0a6
  # rules.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #allowed_lifetime_min: 1d
Stasiek Michalski 73f0a6
  #allowed_lifetime_max: 1y
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Server admins can define the settings of the background jobs purging the
Stasiek Michalski 73f0a6
  # events which lifetime has expired under the 'purge_jobs' section.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # If no configuration is provided, a single job will be set up to delete expired
Stasiek Michalski 73f0a6
  # events in every room daily.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Each job's configuration defines which range of message lifetimes the job
Stasiek Michalski 73f0a6
  # takes care of. For example, if 'shortest_max_lifetime' is '2d' and
Stasiek Michalski 73f0a6
  # 'longest_max_lifetime' is '3d', the job will handle purging expired events in
Stasiek Michalski 73f0a6
  # rooms whose state defines a 'max_lifetime' that's both higher than 2 days, and
Stasiek Michalski 73f0a6
  # lower than or equal to 3 days. Both the minimum and the maximum value of a
Stasiek Michalski 73f0a6
  # range are optional, e.g. a job with no 'shortest_max_lifetime' and a
Stasiek Michalski 73f0a6
  # 'longest_max_lifetime' of '3d' will handle every room with a retention policy
Stasiek Michalski 73f0a6
  # which 'max_lifetime' is lower than or equal to three days.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # The rationale for this per-job configuration is that some rooms might have a
Stasiek Michalski 73f0a6
  # retention policy with a low 'max_lifetime', where history needs to be purged
Stasiek Michalski 73f0a6
  # of outdated messages on a more frequent basis than for the rest of the rooms
Stasiek Michalski 73f0a6
  # (e.g. every 12h), but not want that purge to be performed by a job that's
Stasiek Michalski 73f0a6
  # iterating over every room it knows, which could be heavy on the server.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #purge_jobs:
Stasiek Michalski 73f0a6
  #  - shortest_max_lifetime: 1d
Stasiek Michalski 73f0a6
  #    longest_max_lifetime: 3d
Stasiek Michalski 73f0a6
  #    interval: 12h
Stasiek Michalski 73f0a6
  #  - shortest_max_lifetime: 3d
Stasiek Michalski 73f0a6
  #    longest_max_lifetime: 1y
Stasiek Michalski 73f0a6
  #    interval: 1d
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## TLS ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# PEM-encoded X509 certificate for TLS.
Stasiek Michalski 73f0a6
# This certificate, as of Synapse 1.0, will need to be a valid and verifiable
Stasiek Michalski 73f0a6
# certificate, signed by a recognised Certificate Authority.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# See 'ACME support' below to enable auto-provisioning this certificate via
Stasiek Michalski 73f0a6
# Let's Encrypt.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If supplying your own, be sure to use a `.pem` file that includes the
Stasiek Michalski 73f0a6
# full certificate chain including any intermediate certificates (for
Stasiek Michalski 73f0a6
# instance, if using certbot, use `fullchain.pem` as your certificate,
Stasiek Michalski 73f0a6
# not `cert.pem`).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#tls_certificate_path: "/var/lib/matrix-synapse/opensuse.org.tls.crt"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# PEM-encoded private key for TLS
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#tls_private_key_path: "/var/lib/matrix-synapse/opensuse.org.tls.key"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether to verify TLS server certificates for outbound federation requests.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Defaults to `true`. To disable certificate verification, uncomment the
Stasiek Michalski 73f0a6
# following line.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_verify_certificates: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The minimum TLS version that will be used for outbound federation requests.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Defaults to `1`. Configurable to `1`, `1.1`, `1.2`, or `1.3`. Note
Stasiek Michalski 73f0a6
# that setting this value higher than `1.2` will prevent federation to most
Stasiek Michalski 73f0a6
# of the public Matrix network: only configure it to `1.3` if you have an
Stasiek Michalski 73f0a6
# entirely private federation setup and you can ensure TLS 1.3 support.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_client_minimum_tls_version: 1.2
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Skip federation certificate verification on the following whitelist
Stasiek Michalski 73f0a6
# of domains.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# This setting should only be used in very specific cases, such as
Stasiek Michalski 73f0a6
# federation over Tor hidden services and similar. For private networks
Stasiek Michalski 73f0a6
# of homeservers, you likely want to use a private CA instead.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Only effective if federation_verify_certicates is `true`.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_certificate_verification_whitelist:
Stasiek Michalski 73f0a6
#  - lon.example.com
Stasiek Michalski 73f0a6
#  - *.domain.com
Stasiek Michalski 73f0a6
#  - *.onion
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of custom certificate authorities for federation traffic.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# This setting should only normally be used within a private network of
Stasiek Michalski 73f0a6
# homeservers.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Note that this list will replace those that are provided by your
Stasiek Michalski 73f0a6
# operating environment. Certificates must be in PEM format.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_custom_ca_list:
Stasiek Michalski 73f0a6
#  - myCA1.pem
Stasiek Michalski 73f0a6
#  - myCA2.pem
Stasiek Michalski 73f0a6
#  - myCA3.pem
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# ACME support: This will configure Synapse to request a valid TLS certificate
Stasiek Michalski 73f0a6
# for your configured `server_name` via Let's Encrypt.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Note that provisioning a certificate in this way requires port 80 to be
Stasiek Michalski 73f0a6
# routed to Synapse so that it can complete the http-01 ACME challenge.
Stasiek Michalski 73f0a6
# By default, if you enable ACME support, Synapse will attempt to listen on
Stasiek Michalski 73f0a6
# port 80 for incoming http-01 challenges - however, this will likely fail
Stasiek Michalski 73f0a6
# with 'Permission denied' or a similar error.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# There are a couple of potential solutions to this:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  * If you already have an Apache, Nginx, or similar listening on port 80,
Stasiek Michalski 73f0a6
#    you can configure Synapse to use an alternate port, and have your web
Stasiek Michalski 73f0a6
#    server forward the requests. For example, assuming you set 'port: 8009'
Stasiek Michalski 73f0a6
#    below, on Apache, you would write:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#    ProxyPass /.well-known/acme-challenge http://localhost:8009/.well-known/acme-challenge
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  * Alternatively, you can use something like `authbind` to give Synapse
Stasiek Michalski 73f0a6
#    permission to listen on port 80.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
acme:
Stasiek Michalski 73f0a6
    # ACME support is disabled by default. Set this to `true` and uncomment
Stasiek Michalski 73f0a6
    # tls_certificate_path and tls_private_key_path above to enable it.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #enabled: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # Endpoint to use to request certificates. If you only want to test,
Stasiek Michalski 73f0a6
    # use Let's Encrypt's staging url:
Stasiek Michalski 73f0a6
    #     https://acme-staging.api.letsencrypt.org/directory
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #url: https://acme-v01.api.letsencrypt.org/directory
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # Port number to listen on for the HTTP-01 challenge. Change this if
Stasiek Michalski 73f0a6
    # you are forwarding connections through Apache/Nginx/etc.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #port: 80
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # Local addresses to listen on for incoming connections.
Stasiek Michalski 73f0a6
    # Again, you may want to change this if you are forwarding connections
Stasiek Michalski 73f0a6
    # through Apache/Nginx/etc.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #bind_addresses: ['::', '0.0.0.0']
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # How many days remaining on a certificate before it is renewed.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #reprovision_threshold: 30
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # The domain that the certificate should be for. Normally this
Stasiek Michalski 73f0a6
    # should be the same as your Matrix domain (i.e., 'server_name'), but,
Stasiek Michalski 73f0a6
    # by putting a file at 'https://<server_name>/.well-known/matrix/server',
Stasiek Michalski 73f0a6
    # you can delegate incoming traffic to another server. If you do that,
Stasiek Michalski 73f0a6
    # you should give the target of the delegation here.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    # For example: if your 'server_name' is 'example.com', but
Stasiek Michalski 73f0a6
    # 'https://example.com/.well-known/matrix/server' delegates to
Stasiek Michalski 73f0a6
    # 'matrix.example.com', you should put 'matrix.example.com' here.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    # If not set, defaults to your 'server_name'.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #domain: matrix.opensuse.org
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # file to use for the account key. This will be generated if it doesn't
Stasiek Michalski 73f0a6
    # exist.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    # If unspecified, we will use CONFDIR/client.key.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #account_key_file: /etc/matrix-synapse/acme_account.key
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of allowed TLS fingerprints for this server to publish along
Stasiek Michalski 73f0a6
# with the signing keys for this server. Other matrix servers that
Stasiek Michalski 73f0a6
# make HTTPS requests to this server will check that the TLS
Stasiek Michalski 73f0a6
# certificates returned by this server match one of the fingerprints.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Synapse automatically adds the fingerprint of its own certificate
Stasiek Michalski 73f0a6
# to the list. So if federation traffic is handled directly by synapse
Stasiek Michalski 73f0a6
# then no modification to the list is required.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If synapse is run behind a load balancer that handles the TLS then it
Stasiek Michalski 73f0a6
# will be necessary to add the fingerprints of the certificates used by
Stasiek Michalski 73f0a6
# the loadbalancers to this list if they are different to the one
Stasiek Michalski 73f0a6
# synapse is using.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Homeservers are permitted to cache the list of TLS fingerprints
Stasiek Michalski 73f0a6
# returned in the key responses up to the "valid_until_ts" returned in
Stasiek Michalski 73f0a6
# key. It may be necessary to publish the fingerprints of a new
Stasiek Michalski 73f0a6
# certificate and wait until the "valid_until_ts" of the previous key
Stasiek Michalski 73f0a6
# responses have passed before deploying it.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# You can calculate a fingerprint from a given TLS listener via:
Stasiek Michalski 73f0a6
# openssl s_client -connect $host:$port < /dev/null 2> /dev/null |
Stasiek Michalski 73f0a6
#   openssl x509 -outform DER | openssl sha256 -binary | base64 | tr -d '='
Stasiek Michalski 73f0a6
# or by checking matrix.org/federationtester/api/report?server_name=$host
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#tls_fingerprints: [{"sha256": "<base64_encoded_sha256_fingerprint>"}]
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Database ##
Stasiek Michalski 73f0a6
Stasiek Michalski a58913
#database:
Stasiek Michalski 73f0a6
  # The database engine name
Stasiek Michalski a58913
  #name: "sqlite3"
Stasiek Michalski 73f0a6
  # Arguments to pass to the engine
Stasiek Michalski a58913
  #args:
Stasiek Michalski 73f0a6
    # Path to the database
Stasiek Michalski a58913
    #database: "/var/lib/matrix-synapse/homeserver.db"
Stasiek Michalski a58913
Stasiek Michalski a58913
database:
Stasiek Michalski a58913
    name: psycopg2
Stasiek Michalski a58913
    args:
Stasiek Michalski a58913
        user: {{ pillar['profile']['matrix']['database_user'] }}
Stasiek Michalski a58913
        password: {{ pillar['postgres']['users']['matrix']['password'] }}
Stasiek Michalski a58913
        database: {{ pillar['profile']['matrix']['database_name'] }}
Stasiek Michalski a58913
        host: {{ pillar['profile']['matrix']['database_host'] }}
Stasiek Michalski a58913
        cp_min: 5
Stasiek Michalski a58913
        cp_max: 10
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Number of events to cache in memory.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#event_cache_size: 10K
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Logging ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# A yaml python logging config file as described by
Stasiek Michalski 73f0a6
# https://docs.python.org/3.7/library/logging.config.html#configuration-dictionary-schema
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
log_config: "/etc/matrix-synapse/log.yaml"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Ratelimiting ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Ratelimiting settings for client actions (registration, login, messaging).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Each ratelimiting configuration is made of two parameters:
Stasiek Michalski 73f0a6
#   - per_second: number of requests a client can send per second.
Stasiek Michalski 73f0a6
#   - burst_count: number of requests a client can send before being throttled.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Synapse currently uses the following configurations:
Stasiek Michalski 73f0a6
#   - one for messages that ratelimits sending based on the account the client
Stasiek Michalski 73f0a6
#     is using
Stasiek Michalski 73f0a6
#   - one for registration that ratelimits registration requests based on the
Stasiek Michalski 73f0a6
#     client's IP address.
Stasiek Michalski 73f0a6
#   - one for login that ratelimits login requests based on the client's IP
Stasiek Michalski 73f0a6
#     address.
Stasiek Michalski 73f0a6
#   - one for login that ratelimits login requests based on the account the
Stasiek Michalski 73f0a6
#     client is attempting to log into.
Stasiek Michalski 73f0a6
#   - one for login that ratelimits login requests based on the account the
Stasiek Michalski 73f0a6
#     client is attempting to log into, based on the amount of failed login
Stasiek Michalski 73f0a6
#     attempts for this account.
Stasiek Michalski 73f0a6
#   - one for ratelimiting redactions by room admins. If this is not explicitly
Stasiek Michalski 73f0a6
#     set then it uses the same ratelimiting as per rc_message. This is useful
Stasiek Michalski 73f0a6
#     to allow room admins to deal with abuse quickly.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The defaults are as shown below.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#rc_message:
Stasiek Michalski 73f0a6
#  per_second: 0.2
Stasiek Michalski 73f0a6
#  burst_count: 10
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#rc_registration:
Stasiek Michalski 73f0a6
#  per_second: 0.17
Stasiek Michalski 73f0a6
#  burst_count: 3
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#rc_login:
Stasiek Michalski 73f0a6
#  address:
Stasiek Michalski 73f0a6
#    per_second: 0.17
Stasiek Michalski 73f0a6
#    burst_count: 3
Stasiek Michalski 73f0a6
#  account:
Stasiek Michalski 73f0a6
#    per_second: 0.17
Stasiek Michalski 73f0a6
#    burst_count: 3
Stasiek Michalski 73f0a6
#  failed_attempts:
Stasiek Michalski 73f0a6
#    per_second: 0.17
Stasiek Michalski 73f0a6
#    burst_count: 3
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#rc_admin_redaction:
Stasiek Michalski 73f0a6
#  per_second: 1
Stasiek Michalski 73f0a6
#  burst_count: 50
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Ratelimiting settings for incoming federation
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The rc_federation configuration is made up of the following settings:
Stasiek Michalski 73f0a6
#   - window_size: window size in milliseconds
Stasiek Michalski 73f0a6
#   - sleep_limit: number of federation requests from a single server in
Stasiek Michalski 73f0a6
#     a window before the server will delay processing the request.
Stasiek Michalski 73f0a6
#   - sleep_delay: duration in milliseconds to delay processing events
Stasiek Michalski 73f0a6
#     from remote servers by if they go over the sleep limit.
Stasiek Michalski 73f0a6
#   - reject_limit: maximum number of concurrent federation requests
Stasiek Michalski 73f0a6
#     allowed from a single server
Stasiek Michalski 73f0a6
#   - concurrent: number of federation requests to concurrently process
Stasiek Michalski 73f0a6
#     from a single server
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The defaults are as shown below.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#rc_federation:
Stasiek Michalski 73f0a6
#  window_size: 1000
Stasiek Michalski 73f0a6
#  sleep_limit: 10
Stasiek Michalski 73f0a6
#  sleep_delay: 500
Stasiek Michalski 73f0a6
#  reject_limit: 50
Stasiek Michalski 73f0a6
#  concurrent: 3
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Target outgoing federation transaction frequency for sending read-receipts,
Stasiek Michalski 73f0a6
# per-room.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If we end up trying to send out more read-receipts, they will get buffered up
Stasiek Michalski 73f0a6
# into fewer transactions.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#federation_rr_transactions_per_room_per_second: 50
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Media Store ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable the media store service in the Synapse master. Uncomment the
Stasiek Michalski 73f0a6
# following if you are using a separate media store worker.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_media_repo: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Directory where uploaded images and attachments are stored.
Stasiek Michalski 73f0a6
#
Stasiek Michalski dbe0c1
media_store_path: "/data/matrix/media_store"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Media storage providers allow media to be stored in different
Stasiek Michalski 73f0a6
# locations.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#media_storage_providers:
Stasiek Michalski 73f0a6
#  - module: file_system
Stasiek Michalski 73f0a6
#    # Whether to write new local files.
Stasiek Michalski 73f0a6
#    store_local: false
Stasiek Michalski 73f0a6
#    # Whether to write new remote media
Stasiek Michalski 73f0a6
#    store_remote: false
Stasiek Michalski 73f0a6
#    # Whether to block upload requests waiting for write to this
Stasiek Michalski 73f0a6
#    # provider to complete
Stasiek Michalski 73f0a6
#    store_synchronous: false
Stasiek Michalski 73f0a6
#    config:
Stasiek Michalski 73f0a6
#       directory: /mnt/some/other/directory
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The largest allowed upload size in bytes
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#max_upload_size: 10M
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Maximum number of pixels that will be thumbnailed
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#max_image_pixels: 32M
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether to generate new thumbnails on the fly to precisely match
Stasiek Michalski 73f0a6
# the resolution requested by the client. If true then whenever
Stasiek Michalski 73f0a6
# a new resolution is requested by the client the server will
Stasiek Michalski 73f0a6
# generate a new thumbnail. If false the server will pick a thumbnail
Stasiek Michalski 73f0a6
# from a precalculated list.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#dynamic_thumbnails: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of thumbnails to precalculate when an image is uploaded.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#thumbnail_sizes:
Stasiek Michalski 73f0a6
#  - width: 32
Stasiek Michalski 73f0a6
#    height: 32
Stasiek Michalski 73f0a6
#    method: crop
Stasiek Michalski 73f0a6
#  - width: 96
Stasiek Michalski 73f0a6
#    height: 96
Stasiek Michalski 73f0a6
#    method: crop
Stasiek Michalski 73f0a6
#  - width: 320
Stasiek Michalski 73f0a6
#    height: 240
Stasiek Michalski 73f0a6
#    method: scale
Stasiek Michalski 73f0a6
#  - width: 640
Stasiek Michalski 73f0a6
#    height: 480
Stasiek Michalski 73f0a6
#    method: scale
Stasiek Michalski 73f0a6
#  - width: 800
Stasiek Michalski 73f0a6
#    height: 600
Stasiek Michalski 73f0a6
#    method: scale
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Is the preview URL API enabled?
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'false' by default: uncomment the following to enable it (and specify a
Stasiek Michalski 73f0a6
# url_preview_ip_range_blacklist blacklist).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
url_preview_enabled: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of IP address CIDR ranges that the URL preview spider is denied
Stasiek Michalski 73f0a6
# from accessing.  There are no defaults: you must explicitly
Stasiek Michalski 73f0a6
# specify a list for URL previewing to work.  You should specify any
Stasiek Michalski 73f0a6
# internal services in your network that you do not want synapse to try
Stasiek Michalski 73f0a6
# to connect to, otherwise anyone in any Matrix room could cause your
Stasiek Michalski 73f0a6
# synapse to issue arbitrary GET requests to your internal services,
Stasiek Michalski 73f0a6
# causing serious security issues.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
Stasiek Michalski 73f0a6
# listed here, since they correspond to unroutable addresses.)
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# This must be specified if url_preview_enabled is set. It is recommended that
Stasiek Michalski 73f0a6
# you uncomment the following list as a starting point.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
url_preview_ip_range_blacklist:
Stasiek Michalski 73f0a6
  - '127.0.0.0/8'
Stasiek Michalski 73f0a6
  - '10.0.0.0/8'
Stasiek Michalski 73f0a6
  - '172.16.0.0/12'
Stasiek Michalski 73f0a6
  - '192.168.0.0/16'
Stasiek Michalski 73f0a6
  - '100.64.0.0/10'
Stasiek Michalski 73f0a6
  - '169.254.0.0/16'
Stasiek Michalski 73f0a6
  - '::1/128'
Stasiek Michalski 73f0a6
  - 'fe80::/64'
Stasiek Michalski 73f0a6
  - 'fc00::/7'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# List of IP address CIDR ranges that the URL preview spider is allowed
Stasiek Michalski 73f0a6
# to access even if they are specified in url_preview_ip_range_blacklist.
Stasiek Michalski 73f0a6
# This is useful for specifying exceptions to wide-ranging blacklisted
Stasiek Michalski 73f0a6
# target IP ranges - e.g. for enabling URL previews for a specific private
Stasiek Michalski 73f0a6
# website only visible in your network.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#url_preview_ip_range_whitelist:
Stasiek Michalski 73f0a6
#   - '192.168.1.1'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Optional list of URL matches that the URL preview spider is
Stasiek Michalski 73f0a6
# denied from accessing.  You should use url_preview_ip_range_blacklist
Stasiek Michalski 73f0a6
# in preference to this, otherwise someone could define a public DNS
Stasiek Michalski 73f0a6
# entry that points to a private IP address and circumvent the blacklist.
Stasiek Michalski 73f0a6
# This is more useful if you know there is an entire shape of URL that
Stasiek Michalski 73f0a6
# you know that will never want synapse to try to spider.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Each list entry is a dictionary of url component attributes as returned
Stasiek Michalski 73f0a6
# by urlparse.urlsplit as applied to the absolute form of the URL.  See
Stasiek Michalski 73f0a6
# https://docs.python.org/2/library/urlparse.html#urlparse.urlsplit
Stasiek Michalski 73f0a6
# The values of the dictionary are treated as an filename match pattern
Stasiek Michalski 73f0a6
# applied to that component of URLs, unless they start with a ^ in which
Stasiek Michalski 73f0a6
# case they are treated as a regular expression match.  If all the
Stasiek Michalski 73f0a6
# specified component matches for a given list item succeed, the URL is
Stasiek Michalski 73f0a6
# blacklisted.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#url_preview_url_blacklist:
Stasiek Michalski 73f0a6
#  # blacklist any URL with a username in its URI
Stasiek Michalski 73f0a6
#  - username: '*'
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  # blacklist all *.google.com URLs
Stasiek Michalski 73f0a6
#  - netloc: 'google.com'
Stasiek Michalski 73f0a6
#  - netloc: '*.google.com'
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  # blacklist all plain HTTP URLs
Stasiek Michalski 73f0a6
#  - scheme: 'http'
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  # blacklist http(s)://www.acme.com/foo
Stasiek Michalski 73f0a6
#  - netloc: 'www.acme.com'
Stasiek Michalski 73f0a6
#    path: '/foo'
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#  # blacklist any URL with a literal IPv4 address
Stasiek Michalski 73f0a6
#  - netloc: '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The largest allowed URL preview spidering size in bytes
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#max_spider_size: 10M
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Captcha ##
Stasiek Michalski 73f0a6
# See docs/CAPTCHA_SETUP for full details of configuring this.
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# This homeserver's ReCAPTCHA public key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#recaptcha_public_key: "YOUR_PUBLIC_KEY"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# This homeserver's ReCAPTCHA private key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#recaptcha_private_key: "YOUR_PRIVATE_KEY"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enables ReCaptcha checks when registering, preventing signup
Stasiek Michalski 73f0a6
# unless a captcha is answered. Requires a valid ReCaptcha
Stasiek Michalski 73f0a6
# public/private key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_registration_captcha: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# A secret key used to bypass the captcha test entirely.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#captcha_bypass_secret: "YOUR_SECRET_HERE"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The API endpoint to use for verifying m.login.recaptcha responses.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#recaptcha_siteverify_api: "https://www.recaptcha.net/recaptcha/api/siteverify"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## TURN ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The public URIs of the TURN server to give to clients
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#turn_uris: []
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The shared secret used to compute passwords for the TURN server
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#turn_shared_secret: "YOUR_SHARED_SECRET"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The Username and password if the TURN server needs them and
Stasiek Michalski 73f0a6
# does not use a token
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#turn_username: "TURNSERVER_USERNAME"
Stasiek Michalski 73f0a6
#turn_password: "TURNSERVER_PASSWORD"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# How long generated TURN credentials last
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#turn_user_lifetime: 1h
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether guests should be allowed to use the TURN server.
Stasiek Michalski 73f0a6
# This defaults to True, otherwise VoIP will be unreliable for guests.
Stasiek Michalski 73f0a6
# However, it does introduce a slight security risk as it allows users to
Stasiek Michalski 73f0a6
# connect to arbitrary endpoints without having first signed up for a
Stasiek Michalski 73f0a6
# valid account (e.g. by passing a CAPTCHA).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#turn_allow_guests: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Registration ##
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Registration can be rate-limited using the parameters in the "Ratelimiting"
Stasiek Michalski 73f0a6
# section of this file.
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable registration for new users.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
enable_registration: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Optional account validity configuration. This allows for accounts to be denied
Stasiek Michalski 73f0a6
# any request after a given period.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Once this feature is enabled, Synapse will look for registered users without an
Stasiek Michalski 73f0a6
# expiration date at startup and will add one to every account it found using the
Stasiek Michalski 73f0a6
# current settings at that time.
Stasiek Michalski 73f0a6
# This means that, if a validity period is set, and Synapse is restarted (it will
Stasiek Michalski 73f0a6
# then derive an expiration date from the current validity period), and some time
Stasiek Michalski 73f0a6
# after that the validity period changes and Synapse is restarted, the users'
Stasiek Michalski 73f0a6
# expiration dates won't be updated unless their account is manually renewed. This
Stasiek Michalski 73f0a6
# date will be randomly selected within a range [now + period - d ; now + period],
Stasiek Michalski 73f0a6
# where d is equal to 10% of the validity period.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
account_validity:
Stasiek Michalski 73f0a6
  # The account validity feature is disabled by default. Uncomment the
Stasiek Michalski 73f0a6
  # following line to enable it.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #enabled: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # The period after which an account is valid after its registration. When
Stasiek Michalski 73f0a6
  # renewing the account, its validity period will be extended by this amount
Stasiek Michalski 73f0a6
  # of time. This parameter is required when using the account validity
Stasiek Michalski 73f0a6
  # feature.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #period: 6w
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # The amount of time before an account's expiry date at which Synapse will
Stasiek Michalski 73f0a6
  # send an email to the account's email address with a renewal link. By
Stasiek Michalski 73f0a6
  # default, no such emails are sent.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # If you enable this setting, you will also need to fill out the 'email' and
Stasiek Michalski 73f0a6
  # 'public_baseurl' configuration sections.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #renew_at: 1w
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # The subject of the email sent out with the renewal link. '%(app)s' can be
Stasiek Michalski 73f0a6
  # used as a placeholder for the 'app_name' parameter from the 'email'
Stasiek Michalski 73f0a6
  # section.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Note that the placeholder must be written '%(app)s', including the
Stasiek Michalski 73f0a6
  # trailing 's'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # If this is not set, a default value is used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #renew_email_subject: "Renew your %(app)s account"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Directory in which Synapse will try to find templates for the HTML files to
Stasiek Michalski 73f0a6
  # serve to the user when trying to renew an account. If not set, default
Stasiek Michalski 73f0a6
  # templates from within the Synapse package will be used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #template_dir: "res/templates"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # File within 'template_dir' giving the HTML to be displayed to the user after
Stasiek Michalski 73f0a6
  # they successfully renewed their account. If not set, default text is used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #account_renewed_html_path: "account_renewed.html"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # File within 'template_dir' giving the HTML to be displayed when the user
Stasiek Michalski 73f0a6
  # tries to renew an account with an invalid renewal token. If not set,
Stasiek Michalski 73f0a6
  # default text is used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #invalid_token_html_path: "invalid_token.html"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Time that a user's session remains valid for, after they log in.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Note that this is not currently compatible with guest logins.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Note also that this is calculated at login time: changes are not applied
Stasiek Michalski 73f0a6
# retrospectively to users who have already logged in.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# By default, this is infinite.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#session_lifetime: 24h
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The user must provide all of the below types of 3PID when registering.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#registrations_require_3pid:
Stasiek Michalski 73f0a6
#  - email
Stasiek Michalski 73f0a6
#  - msisdn
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Explicitly disable asking for MSISDNs from the registration
Stasiek Michalski 73f0a6
# flow (overrides registrations_require_3pid if MSISDNs are set as required)
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#disable_msisdn_registration: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Mandate that users are only allowed to associate certain formats of
Stasiek Michalski 73f0a6
# 3PIDs with accounts on this server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#allowed_local_3pids:
Stasiek Michalski 73f0a6
#  - medium: email
Stasiek Michalski 73f0a6
#    pattern: '.*@matrix\.org'
Stasiek Michalski 73f0a6
#  - medium: email
Stasiek Michalski 73f0a6
#    pattern: '.*@vector\.im'
Stasiek Michalski 73f0a6
#  - medium: msisdn
Stasiek Michalski 73f0a6
#    pattern: '\+44'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable 3PIDs lookup requests to identity servers from this server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_3pid_lookup: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# If set, allows registration of standard or admin accounts by anyone who
Stasiek Michalski 73f0a6
# has the shared secret, even if registration is otherwise disabled.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
registration_shared_secret: "{{ pillar['profile']['matrix']['registration_shared_secret'] }}"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Set the number of bcrypt rounds used to generate password hash.
Stasiek Michalski 73f0a6
# Larger numbers increase the work factor needed to generate the hash.
Stasiek Michalski 73f0a6
# The default number is 12 (which equates to 2^12 rounds).
Stasiek Michalski 73f0a6
# N.B. that increasing this will exponentially increase the time required
Stasiek Michalski 73f0a6
# to register or login - e.g. 24 => 2^24 rounds which will take >20 mins.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#bcrypt_rounds: 12
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Allows users to register as guests without a password/email/etc, and
Stasiek Michalski 73f0a6
# participate in rooms hosted on this server which have been made
Stasiek Michalski 73f0a6
# accessible to anonymous users.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 71c61f
allow_guest_access: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The identity server which we suggest that clients should use when users log
Stasiek Michalski 73f0a6
# in on this server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# (By default, no suggestion is made, so it is left up to the client.
Stasiek Michalski 73f0a6
# This setting is ignored unless public_baseurl is also set.)
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#default_identity_server: https://matrix.org
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The list of identity servers trusted to verify third party
Stasiek Michalski 73f0a6
# identifiers by this server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Also defines the ID server which will be called when an account is
Stasiek Michalski 73f0a6
# deactivated (one will be picked arbitrarily).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Note: This option is deprecated. Since v0.99.4, Synapse has tracked which identity
Stasiek Michalski 73f0a6
# server a 3PID has been bound to. For 3PIDs bound before then, Synapse runs a
Stasiek Michalski 73f0a6
# background migration script, informing itself that the identity server all of its
Stasiek Michalski 73f0a6
# 3PIDs have been bound to is likely one of the below.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# As of Synapse v1.4.0, all other functionality of this option has been deprecated, and
Stasiek Michalski 73f0a6
# it is now solely used for the purposes of the background migration script, and can be
Stasiek Michalski 73f0a6
# removed once it has run.
Stasiek Michalski 73f0a6
#trusted_third_party_id_servers:
Stasiek Michalski 73f0a6
#  - matrix.org
Stasiek Michalski 73f0a6
#  - vector.im
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Handle threepid (email/phone etc) registration and password resets through a set of
Stasiek Michalski 73f0a6
# *trusted* identity servers. Note that this allows the configured identity server to
Stasiek Michalski 73f0a6
# reset passwords for accounts!
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Be aware that if `email` is not set, and SMTP options have not been
Stasiek Michalski 73f0a6
# configured in the email config block, registration and user password resets via
Stasiek Michalski 73f0a6
# email will be globally disabled.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Additionally, if `msisdn` is not set, registration and password resets via msisdn
Stasiek Michalski 73f0a6
# will be disabled regardless. This is due to Synapse currently not supporting any
Stasiek Michalski 73f0a6
# method of sending SMS messages on its own.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# To enable using an identity server for operations regarding a particular third-party
Stasiek Michalski 73f0a6
# identifier type, set the value to the URL of that identity server as shown in the
Stasiek Michalski 73f0a6
# examples below.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Servers handling the these requests must answer the `/requestToken` endpoints defined
Stasiek Michalski 73f0a6
# by the Matrix Identity Service API specification:
Stasiek Michalski 73f0a6
# https://matrix.org/docs/spec/identity_service/latest
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If a delegate is specified, the config option public_baseurl must also be filled out.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
account_threepid_delegates:
Stasiek Michalski 73f0a6
    #email: https://example.com     # Delegate email sending to example.com
Stasiek Michalski 73f0a6
    #msisdn: http://localhost:8090  # Delegate SMS sending to this local process
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Users who register on this homeserver will automatically be joined
Stasiek Michalski 73f0a6
# to these rooms
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
auto_join_rooms:
Stasiek Michalski 73f0a6
  - "#support:opensuse.org"
Sasi Olin 7fa55e
  - '#space:opensuse.org'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Where auto_join_rooms are specified, setting this flag ensures that the
Stasiek Michalski 73f0a6
# the rooms exist by creating them when the first user on the
Stasiek Michalski 73f0a6
# homeserver registers.
Stasiek Michalski 73f0a6
# Setting to false means that if the rooms are not manually created,
Stasiek Michalski 73f0a6
# users cannot be auto-joined since they do not exist.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
autocreate_auto_join_rooms: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Metrics ###
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable collection and rendering of performance metrics
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_metrics: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable sentry integration
Stasiek Michalski 73f0a6
# NOTE: While attempts are made to ensure that the logs don't contain
Stasiek Michalski 73f0a6
# any sensitive information, this cannot be guaranteed. By enabling
Stasiek Michalski 73f0a6
# this option the sentry server may therefore receive sensitive
Stasiek Michalski 73f0a6
# information, and it in turn may then diseminate sensitive information
Stasiek Michalski 73f0a6
# through insecure notification channels if so configured.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#sentry:
Stasiek Michalski 73f0a6
#    dsn: "..."
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Flags to enable Prometheus metrics which are not suitable to be
Stasiek Michalski 73f0a6
# enabled by default, either for performance reasons or limited use.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
metrics_flags:
Stasiek Michalski 73f0a6
    # Publish synapse_federation_known_servers, a g auge of the number of
Stasiek Michalski 73f0a6
    # servers this homeserver knows about, including itself. May cause
Stasiek Michalski 73f0a6
    # performance problems on large homeservers.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #known_servers: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Whether or not to report anonymized homeserver usage statistics.
Stasiek Michalski 73f0a6
report_stats: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The endpoint to report the anonymized homeserver usage statistics to.
Stasiek Michalski 73f0a6
# Defaults to https://matrix.org/report-usage-stats/push
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#report_stats_endpoint: https://example.com/report-usage-stats/push
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## API Configuration ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# A list of event types that will be included in the room_invite_state
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#room_invite_state_types:
Stasiek Michalski 73f0a6
#  - "m.room.join_rules"
Stasiek Michalski 73f0a6
#  - "m.room.canonical_alias"
Stasiek Michalski 73f0a6
#  - "m.room.avatar"
Stasiek Michalski 73f0a6
#  - "m.room.encryption"
Stasiek Michalski 73f0a6
#  - "m.room.name"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 3b66c9
{% set appservices = salt['pillar.get']('profile:matrix:appservices') %}
Stasiek Michalski 3b66c9
Stasiek Michalski 73f0a6
# A list of application service config files to use
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
app_service_config_files:
Stasiek Michalski 3b66c9
  {% for dir, data in appservices.items() %}
Stasiek Michalski 3b66c9
  - /etc/matrix-synapse/appservices/appservice-{{ dir }}.yaml
Stasiek Michalski 3b66c9
  {% endfor %}
Stasiek Michalski 3b66c9
  - /etc/matrix-synapse/appservices/appservice-telegram.yaml
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Uncomment to enable tracking of application service IP addresses. Implicitly
Stasiek Michalski 73f0a6
# enables MAU tracking for application service users.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#track_appservice_user_ips: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# a secret which is used to sign access tokens. If none is specified,
Stasiek Michalski 73f0a6
# the registration_shared_secret is used, if one is given; otherwise,
Stasiek Michalski 73f0a6
# a secret key is derived from the signing key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
macaroon_secret_key: "{{ pillar['profile']['matrix']['macaroon_secret_key'] }}"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# a secret which is used to calculate HMACs for form values, to stop
Stasiek Michalski 73f0a6
# falsification of values. Must be specified for the User Consent
Stasiek Michalski 73f0a6
# forms to work.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
form_secret: "{{ pillar['profile']['matrix']['form_secret'] }}"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Signing Keys ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Path to the signing key to sign messages with
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
signing_key_path: "/etc/matrix-synapse/signing.key"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The keys that the server used to sign messages with but won't use
Stasiek Michalski 73f0a6
# to sign new messages.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
old_signing_keys:
Stasiek Michalski 73f0a6
  # For each key, `key` should be the base64-encoded public key, and
Stasiek Michalski 73f0a6
  # `expired_ts`should be the time (in milliseconds since the unix epoch) that
Stasiek Michalski 73f0a6
  # it was last used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # It is possible to build an entry from an old signing.key file using the
Stasiek Michalski 73f0a6
  # `export_signing_key` script which is provided with synapse.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # For example:
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #"ed25519:id": { key: "base64string", expired_ts: 123456789123 }
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# How long key response published by this server is valid for.
Stasiek Michalski 73f0a6
# Used to set the valid_until_ts in /key/v2 APIs.
Stasiek Michalski 73f0a6
# Determines how quickly servers will query to check which keys
Stasiek Michalski 73f0a6
# are still valid.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#key_refresh_interval: 1d
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The trusted servers to download signing keys from.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# When we need to fetch a signing key, each server is tried in parallel.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Normally, the connection to the key server is validated via TLS certificates.
Stasiek Michalski 73f0a6
# Additional security can be provided by configuring a `verify key`, which
Stasiek Michalski 73f0a6
# will make synapse check that the response is signed by that key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# This setting supercedes an older setting named `perspectives`. The old format
Stasiek Michalski 73f0a6
# is still supported for backwards-compatibility, but it is deprecated.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'trusted_key_servers' defaults to matrix.org, but using it will generate a
Stasiek Michalski 73f0a6
# warning on start-up. To suppress this warning, set
Stasiek Michalski 73f0a6
# 'suppress_key_server_warning' to true.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Options for each entry in the list include:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#    server_name: the name of the server. required.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#    verify_keys: an optional map from key id to base64-encoded public key.
Stasiek Michalski 73f0a6
#       If specified, we will check that the response is signed by at least
Stasiek Michalski 73f0a6
#       one of the given keys.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#    accept_keys_insecurely: a boolean. Normally, if `verify_keys` is unset,
Stasiek Michalski 73f0a6
#       and federation_verify_certificates is not `true`, synapse will refuse
Stasiek Michalski 73f0a6
#       to start, because this would allow anyone who can spoof DNS responses
Stasiek Michalski 73f0a6
#       to masquerade as the trusted key server. If you know what you are doing
Stasiek Michalski 73f0a6
#       and are sure that your network environment provides a secure connection
Stasiek Michalski 73f0a6
#       to the key server, you can set this to `true` to override this
Stasiek Michalski 73f0a6
#       behaviour.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# An example configuration might look like:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#trusted_key_servers:
Stasiek Michalski 73f0a6
#  - server_name: "my_trusted_server.example.com"
Stasiek Michalski 73f0a6
#    verify_keys:
Stasiek Michalski 73f0a6
#      "ed25519:auto": "abcdefghijklmnopqrstuvwxyzabcdefghijklmopqr"
Stasiek Michalski 73f0a6
#  - server_name: "my_other_trusted_server.example.com"
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
trusted_key_servers:
Stasiek Michalski 73f0a6
  - server_name: "matrix.org"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Uncomment the following to disable the warning that is emitted when the
Stasiek Michalski 73f0a6
# trusted_key_servers include 'matrix.org'. See above.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 5f0bd9
suppress_key_server_warning: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The signing keys to use when acting as a trusted key server. If not specified
Stasiek Michalski 73f0a6
# defaults to the server signing key.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Can contain multiple keys, one per line.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#key_server_signing_keys_path: "key_server_signing_keys.key"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable SAML2 for registration and login. Uses pysaml2.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# At least one of `sp_config` or `config_path` must be set in this section to
Stasiek Michalski 73f0a6
# enable SAML login.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# (You will probably also want to set the following options to `false` to
Stasiek Michalski 73f0a6
# disable the regular login/registration flows:
Stasiek Michalski 73f0a6
#   * enable_registration
Stasiek Michalski 73f0a6
#   * password_config.enabled
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Once SAML support is enabled, a metadata file will be exposed at
Stasiek Michalski 73f0a6
# https://<server>:<port>/_matrix/saml2/metadata.xml, which you may be able to
Stasiek Michalski 73f0a6
# use to configure your SAML IdP with. Alternatively, you can manually configure
Stasiek Michalski 73f0a6
# the IdP to use an ACS location of
Stasiek Michalski 73f0a6
# https://<server>:<port>/_matrix/saml2/authn_response.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
saml2_config:
Stasiek Michalski 73f0a6
  # `sp_config` is the configuration for the pysaml2 Service Provider.
Stasiek Michalski 73f0a6
  # See pysaml2 docs for format of config.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Default values will be used for the 'entityid' and 'service' settings,
Stasiek Michalski 73f0a6
  # so it is not normally necessary to specify them unless you need to
Stasiek Michalski 73f0a6
  # override them.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #sp_config:
Stasiek Michalski 73f0a6
  #  # point this to the IdP's metadata. You can use either a local file or
Stasiek Michalski 73f0a6
  #  # (preferably) a URL.
Stasiek Michalski 73f0a6
  #  metadata:
Stasiek Michalski 73f0a6
  #    #local: ["saml2/idp.xml"]
Stasiek Michalski 73f0a6
  #    remote:
Stasiek Michalski 73f0a6
  #      - url: https://our_idp/metadata.xml
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #    # By default, the user has to go to our login page first. If you'd like
Stasiek Michalski 73f0a6
  #    # to allow IdP-initiated login, set 'allow_unsolicited: true' in a
Stasiek Michalski 73f0a6
  #    # 'service.sp' section:
Stasiek Michalski 73f0a6
  #    #
Stasiek Michalski 73f0a6
  #    #service:
Stasiek Michalski 73f0a6
  #    #  sp:
Stasiek Michalski 73f0a6
  #    #    allow_unsolicited: true
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #    # The examples below are just used to generate our metadata xml, and you
Stasiek Michalski 73f0a6
  #    # may well not need them, depending on your setup. Alternatively you
Stasiek Michalski 73f0a6
  #    # may need a whole lot more detail - see the pysaml2 docs!
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #    description: ["My awesome SP", "en"]
Stasiek Michalski 73f0a6
  #    name: ["Test SP", "en"]
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #    organization:
Stasiek Michalski 73f0a6
  #      name: Example com
Stasiek Michalski 73f0a6
  #      display_name:
Stasiek Michalski 73f0a6
  #        - ["Example co", "en"]
Stasiek Michalski 73f0a6
  #      url: "http://example.com"
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #    contact_person:
Stasiek Michalski 73f0a6
  #      - given_name: Bob
Stasiek Michalski 73f0a6
  #        sur_name: "the Sysadmin"
Stasiek Michalski 73f0a6
  #        email_address": ["admin@example.com"]
Stasiek Michalski 73f0a6
  #        contact_type": technical
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Instead of putting the config inline as above, you can specify a
Stasiek Michalski 73f0a6
  # separate pysaml2 configuration file:
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #config_path: "/var/lib/matrix-synapse/sp_conf.py"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # The lifetime of a SAML session. This defines how long a user has to
Stasiek Michalski 73f0a6
  # complete the authentication process, if allow_unsolicited is unset.
Stasiek Michalski 73f0a6
  # The default is 5 minutes.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #saml_session_lifetime: 5m
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # An external module can be provided here as a custom solution to
Stasiek Michalski 73f0a6
  # mapping attributes returned from a saml provider onto a matrix user.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  user_mapping_provider:
Stasiek Michalski 73f0a6
    # The custom module's class. Uncomment to use a custom module.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #module: mapping_provider.SamlMappingProvider
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # Custom configuration values for the module. Below options are
Stasiek Michalski 73f0a6
    # intended for the built-in provider, they should be changed if
Stasiek Michalski 73f0a6
    # using a custom module. This section will be passed as a Python
Stasiek Michalski 73f0a6
    # dictionary to the module's `parse_config` method.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    config:
Stasiek Michalski 73f0a6
      # The SAML attribute (after mapping via the attribute maps) to use
Stasiek Michalski 73f0a6
      # to derive the Matrix ID from. 'uid' by default.
Stasiek Michalski 73f0a6
      #
Stasiek Michalski 73f0a6
      # Note: This used to be configured by the
Stasiek Michalski 73f0a6
      # saml2_config.mxid_source_attribute option. If that is still
Stasiek Michalski 73f0a6
      # defined, its value will be used instead.
Stasiek Michalski 73f0a6
      #
Stasiek Michalski 73f0a6
      #mxid_source_attribute: displayName
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
      # The mapping system to use for mapping the saml attribute onto a
Stasiek Michalski 73f0a6
      # matrix ID.
Stasiek Michalski 73f0a6
      #
Stasiek Michalski 73f0a6
      # Options include:
Stasiek Michalski 73f0a6
      #  * 'hexencode' (which maps unpermitted characters to '=xx')
Stasiek Michalski 73f0a6
      #  * 'dotreplace' (which replaces unpermitted characters with
Stasiek Michalski 73f0a6
      #     '.').
Stasiek Michalski 73f0a6
      # The default is 'hexencode'.
Stasiek Michalski 73f0a6
      #
Stasiek Michalski 73f0a6
      # Note: This used to be configured by the
Stasiek Michalski 73f0a6
      # saml2_config.mxid_mapping option. If that is still defined, its
Stasiek Michalski 73f0a6
      # value will be used instead.
Stasiek Michalski 73f0a6
      #
Stasiek Michalski 73f0a6
      #mxid_mapping: dotreplace
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # In previous versions of synapse, the mapping from SAML attribute to
Stasiek Michalski 73f0a6
  # MXID was always calculated dynamically rather than stored in a
Stasiek Michalski 73f0a6
  # table. For backwards- compatibility, we will look for user_ids
Stasiek Michalski 73f0a6
  # matching such a pattern before creating a new account.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # This setting controls the SAML attribute which will be used for this
Stasiek Michalski 73f0a6
  # backwards-compatibility lookup. Typically it should be 'uid', but if
Stasiek Michalski 73f0a6
  # the attribute maps are changed, it may be necessary to change it.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # The default is 'uid'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #grandfathered_mxid_source_attribute: upn
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 71c61f
# Enable OpenID Connect for registration and login. Uses authlib.
Stasiek Michalski 71c61f
#
Sasi Olin 7fa55e
oidc_providers:
Sasi Olin 7fa55e
  - idp_id: "openSUSE"
Sasi Olin 7fa55e
    idp_name: "openSUSE Login"
Sasi Olin 7fa55e
    idp_icon: "mxc://opensuse.org/KSTlFzuiXjVlynwiyCLYDPxy"
Sasi Olin 7fa55e
Stasiek Michalski 71c61f
    # enable OpenID Connect. Defaults to false.
Stasiek Michalski 71c61f
    #
Stasiek Michalski d9b824
    enabled: true
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # use the OIDC discovery mechanism to discover endpoints. Defaults to true.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #discover: true
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # the OIDC issuer. Used to validate tokens and discover the providers endpoints. Required.
Stasiek Michalski 71c61f
    #
Stasiek Michalski d9b824
    issuer: "https://www.opensuse.org/openidc/"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # oauth2 client id to use. Required.
Stasiek Michalski 71c61f
    #
Stasiek Michalski d9b824
    client_id: "S-matrix.opensuse.org"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # oauth2 client secret to use. Required.
Stasiek Michalski 71c61f
    #
Stasiek Michalski d9b824
    client_secret: "{{ pillar['profile']['matrix']['oidc_secret'] }}"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # auth method to use when exchanging the token.
Stasiek Michalski 71c61f
    # Valid values are "client_secret_basic" (default), "client_secret_post" and "none".
Stasiek Michalski 71c61f
    #
Sasi Olin 7fa55e
    client_auth_method: "client_secret_post"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # list of scopes to ask. This should include the "openid" scope. Defaults to ["openid"].
Stasiek Michalski 71c61f
    #
Sasi Olin 7fa55e
    scopes: ["openid", "profile", "email"]
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # the oauth2 authorization endpoint. Required if provider discovery is disabled.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #authorization_endpoint: "https://accounts.example.com/oauth2/auth"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # the oauth2 token endpoint. Required if provider discovery is disabled.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #token_endpoint: "https://accounts.example.com/oauth2/token"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # the OIDC userinfo endpoint. Required if discovery is disabled and the "openid" scope is not asked.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #userinfo_endpoint: "https://accounts.example.com/userinfo"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # URI where to fetch the JWKS. Required if discovery is disabled and the "openid" scope is used.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #jwks_uri: "https://accounts.example.com/.well-known/jwks.json"
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # skip metadata verification. Defaults to false.
Stasiek Michalski 71c61f
    # Use this if you are connecting to a provider that is not OpenID Connect compliant.
Stasiek Michalski 71c61f
    # Avoid this in production.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    #skip_verification: false
Stasiek Michalski 71c61f
Sasi Olin 7fa55e
    user_profile_method: "userinfo_endpoint"
Sasi Olin 7fa55e
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
    # An external module can be provided here as a custom solution to mapping
Stasiek Michalski 71c61f
    # attributes returned from a OIDC provider onto a matrix user.
Stasiek Michalski 71c61f
    #
Stasiek Michalski 71c61f
    user_mapping_provider:
Stasiek Michalski 71c61f
      # The custom module's class. Uncomment to use a custom module.
Stasiek Michalski 71c61f
      # Default is 'synapse.handlers.oidc_handler.JinjaOidcMappingProvider'.
Stasiek Michalski 71c61f
      #
Stasiek Michalski 71c61f
      #module: mapping_provider.OidcMappingProvider
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
      # Custom configuration values for the module. Below options are intended
Stasiek Michalski 71c61f
      # for the built-in provider, they should be changed if using a custom
Stasiek Michalski 71c61f
      # module. This section will be passed as a Python dictionary to the
Stasiek Michalski 71c61f
      # module's `parse_config` method.
Stasiek Michalski 71c61f
      #
Stasiek Michalski 71c61f
      # Below is the config of the default mapping provider, based on Jinja2
Stasiek Michalski 71c61f
      # templates. Those templates are used to render user attributes, where the
Stasiek Michalski 71c61f
      # userinfo object is available through the `user` variable.
Stasiek Michalski 71c61f
      #
Stasiek Michalski 71c61f
      config:
Stasiek Michalski 71c61f
        # name of the claim containing a unique identifier for the user.
Stasiek Michalski 71c61f
        # Defaults to `sub`, which OpenID Connect compliant providers should provide.
Stasiek Michalski 71c61f
        #
Sasi Olin 7fa55e
        subject_claim: "sub"
Stasiek Michalski fab2e3
{% raw %}
Stasiek Michalski 71c61f
        # Jinja2 template for the localpart of the MXID
Stasiek Michalski 71c61f
        #
Stasiek Michalski 71c61f
        localpart_template: "{{ user.preferred_username }}"
Stasiek Michalski 3afbea
Stasiek Michalski 71c61f
        # Jinja2 template for the display name to set on first login. Optional.
Stasiek Michalski 71c61f
        #
Stasiek Michalski d9b824
        display_name_template: "{{ user.given_name }} {{ user.last_name }}"
Sasi Olin 7fa55e
Sasi Olin 7fa55e
        email_template: "{{ user.email }}"
Stasiek Michalski 3afbea
{% endraw %}
Stasiek Michalski 71c61f
Stasiek Michalski 71c61f
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Enable CAS for registration and login.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#cas_config:
Stasiek Michalski 73f0a6
#   enabled: true
Stasiek Michalski 73f0a6
#   server_url: "https://cas-server.com"
Stasiek Michalski 73f0a6
#   service_url: "https://homeserver.domain.com:8448"
Stasiek Michalski 73f0a6
#   #displayname_attribute: name
Stasiek Michalski 73f0a6
#   #required_attributes:
Stasiek Michalski 73f0a6
#   #    name: value
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The JWT needs to contain a globally unique "sub" (subject) claim.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#jwt_config:
Stasiek Michalski 73f0a6
#   enabled: true
Stasiek Michalski 73f0a6
#   secret: "a secret"
Stasiek Michalski 73f0a6
#   algorithm: "HS256"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
password_config:
Stasiek Michalski 73f0a6
   # Uncomment to disable password login
Stasiek Michalski 73f0a6
   #
Sasi Olin 7fa55e
   enabled: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
   # Uncomment to disable authentication against the local password
Stasiek Michalski 73f0a6
   # database. This is ignored if `enabled` is false, and is only useful
Stasiek Michalski 73f0a6
   # if you have other password_providers.
Stasiek Michalski 73f0a6
   #
Sasi Olin 7fa55e
   localdb_enabled: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
   # Uncomment and change to a secret random string for extra security.
Stasiek Michalski 73f0a6
   # DO NOT CHANGE THIS AFTER INITIAL SETUP!
Stasiek Michalski 73f0a6
   #
Stasiek Michalski 73f0a6
   #pepper: "EVEN_MORE_SECRET"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Configuration for sending emails from Synapse.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
email:
Stasiek Michalski 73f0a6
  # The hostname of the outgoing SMTP server to use. Defaults to 'localhost'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 10c046
  smtp_host: localhost
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # The port on the mail server for outgoing SMTP. Defaults to 25.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 10c046
  smtp_port: 25
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Username/password for authentication to the SMTP server. By default, no
Stasiek Michalski 73f0a6
  # authentication is attempted.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #smtp_user: "exampleusername"
Stasiek Michalski 73f0a6
  #smtp_pass: "examplepassword"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Uncomment the following to require TLS transport security for SMTP.
Stasiek Michalski 73f0a6
  # By default, Synapse will connect over plain text, and will then switch to
Stasiek Michalski 73f0a6
  # TLS via STARTTLS *if the SMTP server supports it*. If this option is set,
Stasiek Michalski 73f0a6
  # Synapse will refuse to connect unless the server supports STARTTLS.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #require_transport_security: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Enable sending emails for messages that the user has missed
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #enable_notifs: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # notif_from defines the "From" address to use when sending emails.
Stasiek Michalski 73f0a6
  # It must be set if email sending is enabled.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # The placeholder '%(app)s' will be replaced by the application name,
Stasiek Michalski 73f0a6
  # which is normally 'app_name' (below), but may be overridden by the
Stasiek Michalski 73f0a6
  # Matrix client application.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Note that the placeholder must be written '%(app)s', including the
Stasiek Michalski 73f0a6
  # trailing 's'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  notif_from: "%(app)s Homeserver <admin@opensuse.org>"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # app_name defines the default value for '%(app)s' in notif_from. It
Stasiek Michalski 73f0a6
  # defaults to 'Matrix'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  app_name: openSUSE Matrix
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Uncomment the following to disable automatic subscription to email
Stasiek Michalski 73f0a6
  # notifications for new users. Enabled by default.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  notif_for_new_users: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Custom URL for client links within the email notifications. By default
Stasiek Michalski 73f0a6
  # links will be based on "https://matrix.to".
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # (This setting used to be called riot_base_url; the old name is still
Stasiek Michalski 73f0a6
  # supported for backwards-compatibility but is now deprecated.)
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #client_base_url: "http://localhost/riot"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Configure the time that a validation email will expire after sending.
Stasiek Michalski 73f0a6
  # Defaults to 1h.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #validation_token_lifetime: 15m
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
  # Directory in which Synapse will try to find the template files below.
Stasiek Michalski 73f0a6
  # If not set, default templates from within the Synapse package will be used.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # DO NOT UNCOMMENT THIS SETTING unless you want to customise the templates.
Stasiek Michalski 73f0a6
  # If you *do* uncomment it, you will need to make sure that all the templates
Stasiek Michalski 73f0a6
  # below are in the directory.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # Synapse will look for the following templates in this directory:
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * The contents of email notifications of missed events: 'notif_mail.html' and
Stasiek Michalski 73f0a6
  #   'notif_mail.txt'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * The contents of account expiry notice emails: 'notice_expiry.html' and
Stasiek Michalski 73f0a6
  #   'notice_expiry.txt'.
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * The contents of password reset emails sent by the homeserver:
Stasiek Michalski 73f0a6
  #   'password_reset.html' and 'password_reset.txt'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * HTML pages for success and failure that a user will see when they follow
Stasiek Michalski 73f0a6
  #   the link in the password reset email: 'password_reset_success.html' and
Stasiek Michalski 73f0a6
  #   'password_reset_failure.html'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * The contents of address verification emails sent during registration:
Stasiek Michalski 73f0a6
  #   'registration.html' and 'registration.txt'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * HTML pages for success and failure that a user will see when they follow
Stasiek Michalski 73f0a6
  #   the link in an address verification email sent during registration:
Stasiek Michalski 73f0a6
  #   'registration_success.html' and 'registration_failure.html'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * The contents of address verification emails sent when an address is added
Stasiek Michalski 73f0a6
  #   to a Matrix account: 'add_threepid.html' and 'add_threepid.txt'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # * HTML pages for success and failure that a user will see when they follow
Stasiek Michalski 73f0a6
  #   the link in an address verification email sent when an address is added
Stasiek Michalski 73f0a6
  #   to a Matrix account: 'add_threepid_success.html' and
Stasiek Michalski 73f0a6
  #   'add_threepid_failure.html'
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  # You can see the default templates at:
Stasiek Michalski 73f0a6
  # https://github.com/matrix-org/synapse/tree/master/synapse/res/templates
Stasiek Michalski 73f0a6
  #
Stasiek Michalski 73f0a6
  #template_dir: "res/templates"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski d9b824
#password_providers:
Stasiek Michalski d9b824
#    - module: "ldap_auth_provider.LdapAuthProvider"
Stasiek Michalski d9b824
#      config:
Stasiek Michalski d9b824
#        enabled: true
Stasiek Michalski d9b824
#        uri: "ldaps://freeipa.infra.opensuse.org"
Stasiek Michalski d9b824
#        start_tls: true
Stasiek Michalski d9b824
#        base: "cn=users,cn=accounts,dc=infra,dc=opensuse,dc=org"
Stasiek Michalski d9b824
#        attributes:
Stasiek Michalski d9b824
#           uid: "uid"
Stasiek Michalski d9b824
#           mail: "mail"
Stasiek Michalski d9b824
#           name: "displayname"
Stasiek Michalski 73f0a6
#        #bind_dn:
Stasiek Michalski 73f0a6
#        #bind_password:
Stasiek Michalski 73f0a6
#        #filter: "(objectClass=posixAccount)"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Clients requesting push notifications can either have the body of
Stasiek Michalski 73f0a6
# the message sent in the notification poke along with other details
Stasiek Michalski 73f0a6
# like the sender, or just the event ID and room ID (`event_id_only`).
Stasiek Michalski 73f0a6
# If clients choose the former, this option controls whether the
Stasiek Michalski 73f0a6
# notification request includes the content of the event (other details
Stasiek Michalski 73f0a6
# like the sender are still included). For `event_id_only` push, it
Stasiek Michalski 73f0a6
# has no effect.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# For modern android devices the notification content will still appear
Stasiek Michalski 73f0a6
# because it is loaded by the app. iPhone, however will send a
Stasiek Michalski 73f0a6
# notification saying only that a message arrived and who it came from.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#push:
Stasiek Michalski 73f0a6
#  include_content: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
#spam_checker:
Stasiek Michalski 73f0a6
#  module: "my_custom_project.SuperSpamChecker"
Stasiek Michalski 73f0a6
#  config:
Stasiek Michalski 73f0a6
#    example_option: 'things'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Uncomment to allow non-server-admin users to create groups on this server
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_group_creation: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# If enabled, non server admins can only create groups with local parts
Stasiek Michalski 73f0a6
# starting with this prefix
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#group_creation_prefix: "unofficial/"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# User Directory configuration
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'enabled' defines whether users can search the user directory. If
Stasiek Michalski 73f0a6
# false then empty responses are returned to all queries. Defaults to
Stasiek Michalski 73f0a6
# true.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'search_all_users' defines whether to search all users visible to your HS
Stasiek Michalski 73f0a6
# when searching the user directory, rather than limiting to users visible
Stasiek Michalski 73f0a6
# in public rooms.  Defaults to false.  If you set it True, you'll have to
Stasiek Michalski 73f0a6
# rebuild the user_directory search indexes, see
Stasiek Michalski 73f0a6
# https://github.com/matrix-org/synapse/blob/master/docs/user_directory.md
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#user_directory:
Stasiek Michalski 73f0a6
#  enabled: true
Stasiek Michalski 73f0a6
#  search_all_users: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# User Consent configuration
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# for detailed instructions, see
Stasiek Michalski 73f0a6
# https://github.com/matrix-org/synapse/blob/master/docs/consent_tracking.md
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Parts of this section are required if enabling the 'consent' resource under
Stasiek Michalski 73f0a6
# 'listeners', in particular 'template_dir' and 'version'.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'template_dir' gives the location of the templates for the HTML forms.
Stasiek Michalski 73f0a6
# This directory should contain one subdirectory per language (eg, 'en', 'fr'),
Stasiek Michalski 73f0a6
# and each language directory should contain the policy document (named as
Stasiek Michalski 73f0a6
# '<version>.html') and a success page (success.html).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'version' specifies the 'current' version of the policy document. It defines
Stasiek Michalski 73f0a6
# the version to be served by the consent resource if there is no 'v'
Stasiek Michalski 73f0a6
# parameter.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'server_notice_content', if enabled, will send a user a "Server Notice"
Stasiek Michalski 73f0a6
# asking them to consent to the privacy policy. The 'server_notices' section
Stasiek Michalski 73f0a6
# must also be configured for this to work. Notices will *not* be sent to
Stasiek Michalski 73f0a6
# guest users unless 'send_server_notice_to_guests' is set to true.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'block_events_error', if set, will block any attempts to send events
Stasiek Michalski 73f0a6
# until the user consents to the privacy policy. The value of the setting is
Stasiek Michalski 73f0a6
# used as the text of the error.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'require_at_registration', if enabled, will add a step to the registration
Stasiek Michalski 73f0a6
# process, similar to how captcha works. Users will be required to accept the
Stasiek Michalski 73f0a6
# policy before their account is created.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'policy_name' is the display name of the policy users will see when registering
Stasiek Michalski 73f0a6
# for an account. Has no effect unless `require_at_registration` is enabled.
Stasiek Michalski 73f0a6
# Defaults to "Privacy Policy".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#user_consent:
Stasiek Michalski 73f0a6
#  template_dir: res/templates/privacy
Stasiek Michalski 73f0a6
#  version: 1.0
Stasiek Michalski 73f0a6
#  server_notice_content:
Stasiek Michalski 73f0a6
#    msgtype: m.text
Stasiek Michalski 73f0a6
#    body: >-
Stasiek Michalski 73f0a6
#      To continue using this homeserver you must review and agree to the
Stasiek Michalski 73f0a6
#      terms and conditions at %(consent_uri)s
Stasiek Michalski 73f0a6
#  send_server_notice_to_guests: true
Stasiek Michalski 73f0a6
#  block_events_error: >-
Stasiek Michalski 73f0a6
#    To continue using this homeserver you must review and agree to the
Stasiek Michalski 73f0a6
#    terms and conditions at %(consent_uri)s
Stasiek Michalski 73f0a6
#  require_at_registration: false
Stasiek Michalski 73f0a6
#  policy_name: Privacy Policy
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Local statistics collection. Used in populating the room directory.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'bucket_size' controls how large each statistics timeslice is. It can
Stasiek Michalski 73f0a6
# be defined in a human readable short form -- e.g. "1d", "1y".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# 'retention' controls how long historical statistics will be kept for.
Stasiek Michalski 73f0a6
# It can be defined in a human readable short form -- e.g. "1d", "1y".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#stats:
Stasiek Michalski 73f0a6
#   enabled: true
Stasiek Michalski 73f0a6
#   bucket_size: 1d
Stasiek Michalski 73f0a6
#   retention: 1y
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Server Notices room configuration
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Uncomment this section to enable a room which can be used to send notices
Stasiek Michalski 73f0a6
# from the server to users. It is a special room which cannot be left; notices
Stasiek Michalski 73f0a6
# come from a special "notices" user id.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If you uncomment this section, you *must* define the system_mxid_localpart
Stasiek Michalski 73f0a6
# setting, which defines the id of the user which will be used to send the
Stasiek Michalski 73f0a6
# notices.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# It's also possible to override the room name, the display name of the
Stasiek Michalski 73f0a6
# "notices" user, and the avatar for the user.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#server_notices:
Stasiek Michalski 73f0a6
#  system_mxid_localpart: notices
Stasiek Michalski 73f0a6
#  system_mxid_display_name: "Server Notices"
Stasiek Michalski 73f0a6
#  system_mxid_avatar_url: "mxc://server.com/oumMVlgDnLYFaPVkExemNVVZ"
Stasiek Michalski 73f0a6
#  room_name: "Server Notices"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Uncomment to disable searching the public room list. When disabled
Stasiek Michalski 73f0a6
# blocks searching local and remote room lists for local and remote
Stasiek Michalski 73f0a6
# users by always returning an empty list for all queries.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#enable_room_list_search: false
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The `alias_creation` option controls who's allowed to create aliases
Stasiek Michalski 73f0a6
# on this server.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The format of this option is a list of rules that contain globs that
Stasiek Michalski 73f0a6
# match against user_id, room_id and the new alias (fully qualified with
Stasiek Michalski 73f0a6
# server name). The action in the first rule that matches is taken,
Stasiek Michalski 73f0a6
# which can currently either be "allow" or "deny".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Missing user_id/room_id/alias fields default to "*".
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If no rules match the request is denied. An empty list means no one
Stasiek Michalski 73f0a6
# can create aliases.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Options for the rules include:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   user_id: Matches against the creator of the alias
Stasiek Michalski 73f0a6
#   alias: Matches against the alias being created
Stasiek Michalski 73f0a6
#   room_id: Matches against the room ID the alias is being pointed at
Stasiek Michalski 73f0a6
#   action: Whether to "allow" or "deny" the request if the rule matches
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The default is:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#alias_creation_rules:
Stasiek Michalski 73f0a6
#  - user_id: "*"
Stasiek Michalski 73f0a6
#    alias: "*"
Stasiek Michalski 73f0a6
#    room_id: "*"
Stasiek Michalski 73f0a6
#    action: allow
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# The `room_list_publication_rules` option controls who can publish and
Stasiek Michalski 73f0a6
# which rooms can be published in the public room list.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The format of this option is the same as that for
Stasiek Michalski 73f0a6
# `alias_creation_rules`.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If the room has one or more aliases associated with it, only one of
Stasiek Michalski 73f0a6
# the aliases needs to match the alias rule. If there are no aliases
Stasiek Michalski 73f0a6
# then only rules with `alias: *` match.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# If no rules match the request is denied. An empty list means no one
Stasiek Michalski 73f0a6
# can publish rooms.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# Options for the rules include:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#   user_id: Matches agaisnt the creator of the alias
Stasiek Michalski 73f0a6
#   room_id: Matches against the room ID being published
Stasiek Michalski 73f0a6
#   alias: Matches against any current local or canonical aliases
Stasiek Michalski 73f0a6
#            associated with the room
Stasiek Michalski 73f0a6
#   action: Whether to "allow" or "deny" the request if the rule matches
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# The default is:
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#room_list_publication_rules:
Stasiek Michalski 73f0a6
#  - user_id: "*"
Stasiek Michalski 73f0a6
#    alias: "*"
Stasiek Michalski 73f0a6
#    room_id: "*"
Stasiek Michalski 73f0a6
#    action: allow
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# Server admins can define a Python module that implements extra rules for
Stasiek Michalski 73f0a6
# allowing or denying incoming events. In order to work, this module needs to
Stasiek Michalski 73f0a6
# override the methods defined in synapse/events/third_party_rules.py.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
# This feature is designed to be used in closed federations only, where each
Stasiek Michalski 73f0a6
# participating server enforces the same rules.
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
#third_party_event_rules:
Stasiek Michalski 73f0a6
#  module: "my_custom_project.SuperRulesSet"
Stasiek Michalski 73f0a6
#  config:
Stasiek Michalski 73f0a6
#    example_option: 'things'
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
## Opentracing ##
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
# These settings enable opentracing, which implements distributed tracing.
Stasiek Michalski 73f0a6
# This allows you to observe the causal chains of events across servers
Stasiek Michalski 73f0a6
# including requests, key lookups etc., across any server running
Stasiek Michalski 73f0a6
# synapse or any other other services which supports opentracing
Stasiek Michalski 73f0a6
# (specifically those implemented with Jaeger).
Stasiek Michalski 73f0a6
#
Stasiek Michalski 73f0a6
opentracing:
Stasiek Michalski 73f0a6
    # tracing is disabled by default. Uncomment the following line to enable it.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #enabled: true
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # The list of homeservers we wish to send and receive span contexts and span baggage.
Stasiek Michalski 73f0a6
    # See docs/opentracing.rst
Stasiek Michalski 73f0a6
    # This is a list of regexes which are matched against the server_name of the
Stasiek Michalski 73f0a6
    # homeserver.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    # By defult, it is empty, so no servers are matched.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #homeserver_whitelist:
Stasiek Michalski 73f0a6
    #  - ".*"
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    # Jaeger can be configured to sample traces at different rates.
Stasiek Michalski 73f0a6
    # All configuration options provided by Jaeger can be set here.
Stasiek Michalski 73f0a6
    # Jaeger's configuration mostly related to trace sampling which
Stasiek Michalski 73f0a6
    # is documented here:
Stasiek Michalski 73f0a6
    # https://www.jaegertracing.io/docs/1.13/sampling/.
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #jaeger_config:
Stasiek Michalski 73f0a6
    #  sampler:
Stasiek Michalski 73f0a6
    #    type: const
Stasiek Michalski 73f0a6
    #    param: 1
Stasiek Michalski 73f0a6
Stasiek Michalski 73f0a6
    #  Logging whether spans were started and reported
Stasiek Michalski 73f0a6
    #
Stasiek Michalski 73f0a6
    #  logging:
Stasiek Michalski 73f0a6
    #    false
Sasi Olin 7fa55e
Sasi Olin 7fa55e
experimental_features: { spaces_enabled: true }