51312b8250
As suggested in #63 (Github issue), splitting the playbook's logic into multiple roles will be beneficial for maintainability. This patch realizes this split. Still, some components affect others, so the roles are not really independent of one another. For example: - disabling mxisd (`matrix_mxisd_enabled: false`), causes Synapse and riot-web to reconfigure themselves with other (public) Identity servers. - enabling matrix-corporal (`matrix_corporal_enabled: true`) affects how reverse-proxying (by `matrix-nginx-proxy`) is done, in order to put matrix-corporal's gateway server in front of Synapse We may be able to move away from such dependencies in the future, at the expense of a more complicated manual configuration, but it's probably not worth sacrificing the convenience we have now. As part of this work, the way we do "start components" has been redone now to use a loop, as suggested in #65 (Github issue). This should make restarting faster and more reliable.
272 lines
12 KiB
Django/Jinja
272 lines
12 KiB
Django/Jinja
# Homeserver details
|
|
homeserver:
|
|
# The address that this appservice can use to connect to the homeserver.
|
|
address: https://{{ hostname_matrix }}
|
|
# The domain of the homeserver (for MXIDs, etc).
|
|
domain: {{ hostname_identity }}
|
|
# Whether or not to verify the SSL certificate of the homeserver.
|
|
# Only applies if address starts with https://
|
|
verify_ssl: true
|
|
|
|
# Application service host/registration related details
|
|
# Changing these values requires regeneration of the registration.
|
|
appservice:
|
|
# The address that the homeserver can use to connect to this appservice.
|
|
address: http://matrix-mautrix-telegram:8080
|
|
|
|
# The hostname and port where this appservice should listen.
|
|
hostname: 0.0.0.0
|
|
port: 8080
|
|
# The maximum body size of appservice API requests (from the homeserver) in mebibytes
|
|
# Usually 1 is enough, but on high-traffic bridges you might need to increase this to avoid 413s
|
|
max_body_size: 1
|
|
|
|
# The full URI to the database. SQLite and Postgres are fully supported.
|
|
# Other DBMSes supported by SQLAlchemy may or may not work.
|
|
# Format examples:
|
|
# SQLite: sqlite:///filename.db
|
|
# Postgres: postgres://username:password@hostname/dbname
|
|
database: sqlite:///mautrix-telegram.db
|
|
|
|
# Public part of web server for out-of-Matrix interaction with the bridge.
|
|
# Used for things like login if the user wants to make sure the 2FA password isn't stored in
|
|
# the HS database.
|
|
public:
|
|
# Whether or not the public-facing endpoints should be enabled.
|
|
enabled: true
|
|
# The prefix to use in the public-facing endpoints.
|
|
prefix: {{ matrix_mautrix_telegram_public_endpoint }}
|
|
# The base URL where the public-facing endpoints are available. The prefix is not added
|
|
# implicitly.
|
|
external: https://{{ hostname_matrix }}{{ matrix_mautrix_telegram_public_endpoint }}
|
|
|
|
# Provisioning API part of the web server for automated portal creation and fetching information.
|
|
# Used by things like Dimension (https://dimension.t2bot.io/).
|
|
provisioning:
|
|
# Whether or not the provisioning API should be enabled.
|
|
enabled: false
|
|
# The prefix to use in the provisioning API endpoints.
|
|
prefix: /_matrix/provision/v1
|
|
# The shared secret to authorize users of the API.
|
|
# Set to "generate" to generate and save a new token.
|
|
shared_secret: generate
|
|
|
|
# The unique ID of this appservice.
|
|
id: telegram
|
|
# Username of the appservice bot.
|
|
bot_username: telegrambot
|
|
# Display name and avatar for bot. Set to "remove" to remove display name/avatar, leave empty
|
|
# to leave display name/avatar as-is.
|
|
bot_displayname: Telegram bridge bot
|
|
bot_avatar: mxc://maunium.net/tJCRmUyJDsgRNgqhOgoiHWbX
|
|
|
|
# Authentication tokens for AS <-> HS communication. Autogenerated; do not modify.
|
|
as_token: "This value is generated when generating the registration"
|
|
hs_token: "This value is generated when generating the registration"
|
|
|
|
# Bridge config
|
|
bridge:
|
|
# Localpart template of MXIDs for Telegram users.
|
|
# {userid} is replaced with the user ID of the Telegram user.
|
|
username_template: "telegram_{userid}"
|
|
# Localpart template of room aliases for Telegram portal rooms.
|
|
# {groupname} is replaced with the name part of the public channel/group invite link ( https://t.me/{} )
|
|
alias_template: "telegram_{groupname}"
|
|
# Displayname template for Telegram users.
|
|
# {displayname} is replaced with the display name of the Telegram user.
|
|
displayname_template: "{displayname} (Telegram)"
|
|
|
|
# Set the preferred order of user identifiers which to use in the Matrix puppet display name.
|
|
# In the (hopefully unlikely) scenario that none of the given keys are found, the numeric user
|
|
# ID is used.
|
|
#
|
|
# If the bridge is working properly, a phone number or an username should always be known, but
|
|
# the other one can very well be empty.
|
|
#
|
|
# Valid keys:
|
|
# "full name" (First and/or last name)
|
|
# "full name reversed" (Last and/or first name)
|
|
# "first name"
|
|
# "last name"
|
|
# "username"
|
|
# "phone number"
|
|
displayname_preference:
|
|
- full name
|
|
- username
|
|
- phone number
|
|
|
|
# Show message editing as a reply to the original message.
|
|
# If this is false, message edits are not shown at all, as Matrix does not support editing yet.
|
|
edits_as_replies: false
|
|
# Highlight changed/added parts in edits. Requires lxml.
|
|
highlight_edits: false
|
|
# Whether or not Matrix bot messages (type m.notice) should be bridged.
|
|
bridge_notices: true
|
|
# Whether to bridge Telegram bot messages as m.notices or m.texts.
|
|
bot_messages_as_notices: true
|
|
# Maximum number of members to sync per portal when starting up. Other members will be
|
|
# synced when they send messages. The maximum is 10000, after which the Telegram server
|
|
# will not send any more members.
|
|
# Defaults to no local limit (-> limited to 10000 by server)
|
|
max_initial_member_sync: -1
|
|
# Whether or not to sync the member list in channels.
|
|
# If no channel admins have logged into the bridge, the bridge won't be able to sync the member
|
|
# list regardless of this setting.
|
|
sync_channel_members: true
|
|
# The maximum number of simultaneous Telegram deletions to handle.
|
|
# A large number of simultaneous redactions could put strain on your homeserver.
|
|
max_telegram_delete: 10
|
|
# Allow logging in within Matrix. If false, the only way to log in is using the out-of-Matrix
|
|
# login website (see appservice.public config section)
|
|
allow_matrix_login: true
|
|
# Use inline images instead of m.image to make rich captions possible.
|
|
# N.B. Inline images are not supported on all clients (e.g. Riot iOS).
|
|
inline_images: true
|
|
# Whether or not to bridge plaintext highlights.
|
|
# Only enable this if your displayname_template has some static part that the bridge can use to
|
|
# reliably identify what is a plaintext highlight.
|
|
plaintext_highlights: false
|
|
# Whether or not to make portals of publicly joinable channels/supergroups publicly joinable on Matrix.
|
|
public_portals: true
|
|
# Whether to send stickers as the new native m.sticker type or normal m.images.
|
|
# Old versions of Riot don't support the new type at all.
|
|
# Remember that proper sticker support always requires Pillow to convert webp into png.
|
|
native_stickers: true
|
|
# Whether or not to fetch and handle Telegram updates at startup from the time the bridge was down.
|
|
# WARNING: Probably buggy, might get stuck in infinite loop.
|
|
catch_up: false
|
|
# Whether or not to use /sync to get presence, read receipts and typing notifications when using
|
|
# your own Matrix account as the Matrix puppet for your Telegram account.
|
|
sync_with_custom_puppets: true
|
|
|
|
# Some config options related to Telegram message deduplication.
|
|
# The default values are usually fine, but some debug messages/warnings might recommend you
|
|
# change these.
|
|
deduplication:
|
|
# Whether or not to check the database if the message about to be sent is a duplicate.
|
|
pre_db_check: false
|
|
# The number of latest events to keep when checking for duplicates.
|
|
# You might need to increase this on high-traffic bridge instances.
|
|
cache_queue_length: 20
|
|
|
|
# The formats to use when sending messages to Telegram via the relay bot.
|
|
#
|
|
# Telegram doesn't have built-in emotes, so the m.emote format is also used for non-relaybot users.
|
|
#
|
|
# Available variables:
|
|
# $sender_displayname - The display name of the sender (e.g. Example User)
|
|
# $sender_username - The username (Matrix ID localpart) of the sender (e.g. exampleuser)
|
|
# $sender_mxid - The Matrix ID of the sender (e.g. @exampleuser:example.com)
|
|
# $message - The message content as HTML
|
|
message_formats:
|
|
m.text: "<b>$sender_displayname</b>: $message"
|
|
m.emote: "* <b>$sender_displayname</b> $message"
|
|
m.file: "<b>$sender_displayname</b> sent a file: $message"
|
|
m.image: "<b>$sender_displayname</b> sent an image: $message"
|
|
m.audio: "<b>$sender_displayname</b> sent an audio file: $message"
|
|
m.video: "<b>$sender_displayname</b> sent a video: $message"
|
|
m.location: "<b>$sender_displayname</b> sent a location: $message"
|
|
|
|
# The formats to use when sending state events to Telegram via the relay bot.
|
|
#
|
|
# Variables from `message_formats` that have the `sender_` prefix are available without the prefix.
|
|
# In name_change events, `$prev_displayname` is the previous displayname.
|
|
#
|
|
# Set format to an empty string to disable the messages for that event.
|
|
state_event_formats:
|
|
join: "<b>$displayname</b> joined the room."
|
|
leave: "<b>$displayname</b> left the room."
|
|
name_change: "<b>$prev_displayname</b> changed their name to <b>$displayname</b>"
|
|
|
|
# Filter rooms that can/can't be bridged. Can also be managed using the `filter` and
|
|
# `filter-mode` management commands.
|
|
#
|
|
# Filters do not affect direct chats.
|
|
# An empty blacklist will essentially disable the filter.
|
|
filter:
|
|
# Filter mode to use. Either "blacklist" or "whitelist".
|
|
# If the mode is "blacklist", the listed chats will never be bridged.
|
|
# If the mode is "whitelist", only the listed chats can be bridged.
|
|
mode: blacklist
|
|
# The list of group/channel IDs to filter.
|
|
list: []
|
|
|
|
# The prefix for commands. Only required in non-management rooms.
|
|
command_prefix: "!tg"
|
|
|
|
# Permissions for using the bridge.
|
|
# Permitted values:
|
|
# relaybot - Only use the bridge via the relaybot, no access to commands.
|
|
# user - Relaybot level + access to commands to create bridges.
|
|
# puppeting - User level + logging in with a Telegram account.
|
|
# full - Full access to use the bridge, i.e. previous levels + Matrix login.
|
|
# admin - Full access to use the bridge and some extra administration commands.
|
|
# Permitted keys:
|
|
# * - All Matrix users
|
|
# domain - All users on that homeserver
|
|
# mxid - Specific user
|
|
permissions:
|
|
'{{ hostname_identity }}': full
|
|
|
|
# Options related to the message relay Telegram bot.
|
|
relaybot:
|
|
# Whether or not to allow creating portals from Telegram.
|
|
authless_portals: false
|
|
# Whether or not to allow Telegram group admins to use the bot commands.
|
|
whitelist_group_admins: false
|
|
# Whether or not to ignore incoming events sent by the relay bot.
|
|
ignore_own_incoming_events: true
|
|
# List of usernames/user IDs who are also allowed to use the bot commands.
|
|
whitelist:
|
|
|
|
# Telegram config
|
|
telegram:
|
|
# Get your own API keys at https://my.telegram.org/apps
|
|
api_id: {{ matrix_mautrix_telegram_api_id }}
|
|
api_hash: {{ matrix_mautrix_telegram_api_hash }}
|
|
# (Optional) Create your own bot at https://t.me/BotFather
|
|
bot_token: disabled
|
|
# Telethon proxy configuration.
|
|
# You must install PySocks from pip for proxies to work.
|
|
proxy:
|
|
# Allowed types: disabled, socks4, socks5, http
|
|
type: disabled
|
|
# Proxy IP address and port.
|
|
address: 127.0.0.1
|
|
port: 1080
|
|
# Whether or not to perform DNS resolving remotely.
|
|
rdns: true
|
|
# Proxy authentication (optional).
|
|
username: ""
|
|
password: ""
|
|
|
|
# Python logging configuration.
|
|
#
|
|
# See section 16.7.2 of the Python documentation for more info:
|
|
# https://docs.python.org/3.6/library/logging.config.html#configuration-dictionary-schema
|
|
logging:
|
|
version: 1
|
|
formatters:
|
|
precise:
|
|
format: "[%(asctime)s] [%(levelname)s@%(name)s] %(message)s"
|
|
handlers:
|
|
file:
|
|
class: logging.handlers.RotatingFileHandler
|
|
formatter: precise
|
|
filename: ./mautrix-telegram.log
|
|
maxBytes: 10485760
|
|
backupCount: 10
|
|
console:
|
|
class: logging.StreamHandler
|
|
formatter: precise
|
|
loggers:
|
|
mau:
|
|
level: DEBUG
|
|
telethon:
|
|
level: DEBUG
|
|
aiohttp:
|
|
level: INFO
|
|
root:
|
|
level: DEBUG
|
|
handlers: [file, console]
|