Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maubot moanos #1894

Merged
merged 54 commits into from
Jul 20, 2022
Merged
Show file tree
Hide file tree
Changes from 24 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
f57aed8
Add a setting to make nginx forward node_exporter and postgres_exporter
moan0s Jun 20, 2022
d24cb7d
Initial maubot commit
moan0s Jun 23, 2022
eb25d54
Merge branch 'master' of https://github.com/spantaleev/matrix-docker-…
moan0s Jun 23, 2022
1316656
Rename to bot_maubot and fix permission error
moan0s Jun 23, 2022
4d40b61
Fix config error, add nginx
moan0s Jun 24, 2022
d7eb2d0
Fix yamllint (emptylines)
moan0s Jun 24, 2022
8806598
Add option to proxy management UI (now defaults to false)
moan0s Jun 24, 2022
0ea1469
Make exposing management UI configurable
moan0s Jun 24, 2022
2f1d78f
Make true and false lowercase
moan0s Jun 24, 2022
2309a61
Fix minor naming issue
moan0s Jun 24, 2022
d5c82a5
Remove logging to /var/log and make readonly
moan0s Jun 24, 2022
6ed105b
Rename service from matrix-maubot to matrix-bot-maubot
moan0s Jun 24, 2022
ba0caf3
Create dckr-src file path only when neccessary
moan0s Jun 24, 2022
6d1650c
Remove config dir
moan0s Jun 24, 2022
2f167f2
Rename docker container to matrix-bot-maubot
moan0s Jun 24, 2022
2e2e504
Merge branch 'maubot_moanos' of https://github.com/moan0s/matrix-dock…
moan0s Jun 24, 2022
8e9d165
Another rename to matrix-bot-maubot
moan0s Jun 24, 2022
a289116
Use tagged release
moan0s Jun 24, 2022
90447a2
Use correct registration secret
moan0s Jun 24, 2022
7baf477
Remove unnecessary variable
moan0s Jun 24, 2022
64fbc5f
Replace spaces with tabs
moan0s Jun 25, 2022
a295ec3
Change to matrix_bot_maubot_bot_server_public
moan0s Jun 25, 2022
2e5ad5c
Remove unused variable
moan0s Jun 25, 2022
9ed7018
Use safer |to_json
moan0s Jun 25, 2022
9d06ece
Merge branch 'master' of https://github.com/spantaleev/matrix-docker-…
moan0s Jun 28, 2022
6cc9285
enable setting database URL
Cadair Jun 29, 2022
320978c
Enable setting database URI and other things
Cadair Jun 29, 2022
be54af1
Merge pull request #1 from Cadair/maubot_moanos
moan0s Jul 9, 2022
ab94cb2
Merge branch 'maubot_moanos' of https://github.com/moan0s/matrix-dock…
moan0s Jul 9, 2022
59806ec
Fix typo in variable name
moan0s Jul 9, 2022
07cfd3b
Use custom invocation instead of provided script
moan0s Jul 9, 2022
4ab516f
Fix linter
moan0s Jul 9, 2022
9ee5785
Add postgres to service dependencies
moan0s Jul 9, 2022
135096e
Add defaults
moan0s Jul 9, 2022
a842e9c
Fix uninstall (did not remove service)
moan0s Jul 9, 2022
bcd7ec7
Add postgres configuration
moan0s Jul 9, 2022
05c1333
Restrict permissions of container
moan0s Jul 9, 2022
f64c132
Make database switchable
moan0s Jul 10, 2022
27b1835
Fix uninstall (for real this time)
moan0s Jul 10, 2022
2e15bd8
Rename with addition "unshared"
moan0s Jul 10, 2022
07fdb09
Rename with addition "url"
moan0s Jul 10, 2022
e62632b
Change from spaces to tabs
moan0s Jul 10, 2022
ffa2035
Use http_bin_port and make networking clearer
moan0s Jul 10, 2022
acf53f6
Fix homserver configuration url
moan0s Jul 10, 2022
29b336f
Add docs
moan0s Jul 11, 2022
1ffc0d9
Add maubot configuration docs
moan0s Jul 11, 2022
6b7191c
Fix tabs issue for real
moan0s Jul 11, 2022
d6d311e
Fix plugin database issue
moan0s Jul 20, 2022
73ebbdc
Move maubot nginx config
moan0s Jul 20, 2022
d2e6ab6
Fix some CI lint errors
moan0s Jul 20, 2022
f8a8870
Use FQCN
moan0s Jul 20, 2022
04a817a
Use explicit version for self build
moan0s Jul 20, 2022
f2dcbe5
Name all tasks
moan0s Jul 20, 2022
e306d00
Add project introduction to maubot's defaults file
spantaleev Jul 20, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions group_vars/matrix_servers
Original file line number Diff line number Diff line change
Expand Up @@ -1058,6 +1058,41 @@ matrix_bot_matrix_registration_bot_systemd_required_services_list: |
#
######################################################################

######################################################################
#
# matrix-bot-maubot
#
######################################################################

# We don't enable bots by default.
matrix_bot_maubot_enabled: false

matrix_bot_maubot_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}"

matrix_bot_maubot_systemd_required_services_list: |
{{
['docker.service']
+
['matrix-' + matrix_homeserver_implementation + '.service']
+
(['matrix-nginx-proxy.service'] if matrix_nginx_proxy_enabled else [])
}}

matrix_bot_maubot_registration_shared_secret: |-
{{
{
'synapse': matrix_synapse_registration_shared_secret,
'dendrite': matrix_dendrite_registration_shared_secret,
}[matrix_homeserver_implementation]
}}


######################################################################
#
# /matrix-bot-maubot
#
######################################################################


######################################################################
#
Expand Down
33 changes: 33 additions & 0 deletions roles/matrix-bot-maubot/defaults/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---

matrix_bot_maubot_enabled: true
matrix_bot_maubot_container_image_self_build: false
matrix_bot_maubot_docker_repo: "https://mau.dev/maubot/maubot.git"
matrix_bot_maubot_docker_src_files_path: "{{ matrix_bot_maubot_base_path }}/docker-src"

matrix_bot_maubot_version: v0.3.1
matrix_bot_maubot_docker_image: "dock.mau.dev/maubot/maubot:{{ matrix_bot_maubot_version }}"
matrix_bot_maubot_docker_image_force_pull: "{{ matrix_bot_maubot_docker_image.endswith(':latest') }}"

matrix_bot_maubot_base_path: "{{ matrix_base_data_path }}/maubot"
matrix_bot_maubot_data_path: "{{ matrix_bot_maubot_base_path }}/data"
matrix_bot_maubot_config_path: "{{ matrix_bot_maubot_base_path }}/config"

matrix_bot_maubot_bot_server_public: "https://{{ matrix_server_fqn_matrix }}"
matrix_bot_maubot_proxy_management_interface: false
matrix_bot_maubot_expose_management_interface: true


matrix_bot_maubot_secret: ''
matrix_bot_maubot_admin_user: ''
matrix_bot_maubot_admin_password: ''
matrix_mau_environment_variables_extension: ''
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These variables seem to be unused.

Suggested change
matrix_bot_maubot_admin_user: ''
matrix_bot_maubot_admin_password: ''
matrix_mau_environment_variables_extension: ''


# A list of extra arguments to pass to the container
matrix_bot_maubot_container_extra_arguments: []

# List of systemd services that matrix-bot-maubot.service depends on
matrix_bot_maubot_systemd_required_services_list: ['docker.service']

# List of systemd services that matrix-bot-maubot.service wants
matrix_bot_maubot_systemd_wanted_services_list: []
5 changes: 5 additions & 0 deletions roles/matrix-bot-maubot/tasks/init.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---

- set_fact:
matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-bot-maubot.service'] }}"
when: matrix_bot_maubot_enabled|bool
23 changes: 23 additions & 0 deletions roles/matrix-bot-maubot/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---

- import_tasks: "{{ role_path }}/tasks/init.yml"
tags:
- always

- import_tasks: "{{ role_path }}/tasks/validate_config.yml"
when: "run_setup|bool and matrix_bot_maubot_enabled|bool"
tags:
- setup-all
- setup-bot-maubot

- import_tasks: "{{ role_path }}/tasks/setup_install.yml"
when: "run_setup|bool and matrix_bot_maubot_enabled|bool"
tags:
- setup-all
- setup-bot-maubot

- import_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"
when: "run_setup|bool and not matrix_bot_maubot_enabled|bool"
tags:
- setup-all
- setup-bot-maubot
113 changes: 113 additions & 0 deletions roles/matrix-bot-maubot/tasks/setup_install.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
---

- name: Ensure maubot paths exist
file:
path: "{{ item.path }}"
state: directory
mode: 0755
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
with_items:
- {path: "{{ matrix_bot_maubot_base_path }}", when: true}
- {path: "{{ matrix_bot_maubot_data_path }}", when: true}
- {path: "{{ matrix_bot_maubot_docker_src_files_path }}", when: "{{ matrix_bot_maubot_container_image_self_build }}"}
when: "item.when|bool"

- name: Ensure maubot configuration file created
template:
src: "{{ role_path }}/templates/config/config.yaml.j2"
dest: "{{ matrix_bot_maubot_data_path }}/config.yaml"
owner: "{{ matrix_user_username }}"
group: "{{ matrix_user_groupname }}"
mode: "u=rwx"

- name: Generate Maubot proxying configuration for matrix-nginx-proxy
set_fact:
matrix_bot_maubot_matrix_nginx_proxy_configuration: |
location ~ ^/(_matrix/maubot/.*) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This only works if you provide the trailing slash.

What's the magic incantation to make the trailing slash optional?

Copy link
Contributor Author

@moan0s moan0s Jul 10, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Mhhh true.

What's the magic incantation to make the trailing slash optional?

I don't know

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about:

location /_matrix/maubot/ {
.....
.....
# Just hostname + port here, no paths
set $backend "matrix-maubot:{{ matrix_bot_maubot_port }}";
# Note the trailing slash here
proxy_pass http://$backend/;

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So I tried the following which was inspired by the official docs (did not work, just wanted to leave it here). Will try

- name: Generate Maubot proxying configuration for matrix-nginx-proxy
  set_fact:
    matrix_bot_maubot_matrix_nginx_proxy_configuration: |
      location /_matrix/maubot {
      {% if matrix_nginx_proxy_enabled|default(False) %}
        {# Use the embedded DNS resolver in Docker containers to discover the service #}
         resolver 127.0.0.11 valid=5s;
         proxy_pass http://matrix-bot-maubot:29316";
         proxy_set_header X-Forwarded-For $remote_addr;
      {% else %}
        {# Generic configuration for use outside of our container setup #}
        proxy_pass http://localhost:{{ matrix_bot_maubot_management_interface_port }};
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
      {% endif %}
      }
      location /_matrix/maubot/v1/logs {
      {% if matrix_nginx_proxy_enabled|default(False) %}
        resolver 127.0.0.11 valid=5s;
        proxy_pass http://matrix-bot-maubot:29316";
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-For $remote_addr;
      {% else %}
        proxy_pass http://localhost:29316;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-For $remote_addr;
      {% endif %}
      }

@spantaleev Your approach redirects https://synapse.hyteck.de/_matrix/maubot to https://synapse.hyteck.de:8443/_matrix/maubot/ and https://synapse.hyteck.de/_matrix/maubot/ results in a 404

Copy link
Owner

@spantaleev spantaleev Jul 11, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think hardcoding proxy_pass http://matrix-bot-maubot:29316"; makes nginx try to resolve matrix-bot-maubot just once, on startup.

This can fail if the bot service is not running yet. If it works, it's still not good, because if the bot service restarts for whatever reason and gets a new IP address, nginx would still use the old one.

With the resolver 127.0.0.11 valid=5s; and set $backend dance, we force nginx to resolve the IP address once every 5 seconds.


Why would my approach redirect https://synapse.hyteck.de/_matrix/maubot to https://synapse.hyteck.de:8443/_matrix/maubot/? Did you mean it forwards it to https://synapse.hyteck.de:29316/_matrix/maubot/?

I would expect that it would forward https://synapse.hyteck.de/_matrix/maubot/SOMETHING to https://synapse.hyteck.de:29316/SOMETHING. I figured that that is your intention -- removing the /_matrix/maubot prefix from the URL when forwarding to the bot. If you'd like to preserve prefix instead, then, you'd need to remove the trailing slash from the proxy_pass line, like this: proxy_pass http://$backend;

You can also try my approach without the trailing slash in the location statement, like this: location /_matrix/maubot.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I honestly don't know why your approach behaves that way. I am puzzled myself.
I also tried rewrite ^/_matrix_maubot$ ^/_matrix/maubot/ permanent; and it resulted in the same behavior (rewriting https://synapse.hyteck.de/_matrix/maubot to https://synapse.hyteck.de:8443/_matrix/maubot/)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here is a snippet of my nginx conf


rewrite ^/_matrix/maubot$ $scheme://$server_name/_matrix/maubot/ permanent;
location ~ ^/(_matrix/maubot/.*) {
     resolver 127.0.0.11 valid=5s;
   set $backend "matrix-bot-maubot:29316/$1";
   proxy_pass http://$backend;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "upgrade";
}

rewrite ^/synapse-admin$ $scheme://$server_name/synapse-admin/ permanent;

I included the synapse admin bit because this woks with rewriting to the correct location.

Maybe we can merge this without solving it? I know it is not as satisfying, on the other hand I don't see it as strictly necessary.

{% if matrix_nginx_proxy_enabled|default(False) %}
{# Use the embedded DNS resolver in Docker containers to discover the service #}
resolver 127.0.0.11 valid=5s;
set $backend "matrix-maubot:{{ matrix_bot_maubot_port }}/$1";
moan0s marked this conversation as resolved.
Show resolved Hide resolved
proxy_pass http://$backend;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
{% else %}
{# Generic configuration for use outside of our container setup #}
proxy_pass http://127.0.0.1:{{ matrix_bot_maubot_port }}/$1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
{% endif %}
}
when: matrix_bot_maubot_proxy_management_interface|bool

- name: Register Maubot's proxying configuration with matrix-nginx-proxy
set_fact:
matrix_nginx_proxy_proxy_matrix_additional_server_configuration_blocks: |
{{
matrix_nginx_proxy_proxy_matrix_additional_server_configuration_blocks|default([])
+
[matrix_bot_maubot_matrix_nginx_proxy_configuration]
moan0s marked this conversation as resolved.
Show resolved Hide resolved
}}
when: matrix_bot_maubot_proxy_management_interface|bool

- name: Warn about reverse-proxying if matrix-nginx-proxy not used
debug:
msg: >-
NOTE: You've enabled Maubot but are not using the matrix-nginx-proxy
reverse proxy.
Please make sure that you're proxying the `/_matrix/maubot`
URL endpoint to the matrix-maubot container.
when: "matrix_bot_maubot_enabled|bool and matrix_bot_maubot_proxy_management_interface|bool and matrix_nginx_proxy_enabled is not defined"


- name: Ensure maubot image is pulled
docker_image:
name: "{{ matrix_bot_maubot_docker_image }}"
source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
force_source: "{{ matrix_bot_maubot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_maubot_docker_image_force_pull }}"
when: "not matrix_bot_maubot_container_image_self_build|bool"
register: result
retries: "{{ matrix_container_retries_count }}"
delay: "{{ matrix_container_retries_delay }}"
until: result is not failed

- name: Ensure maubot repository is present on self-build
git:
repo: "{{ matrix_bot_maubot_docker_repo }}"
dest: "{{ matrix_bot_maubot_docker_src_files_path }}"
force: "yes"
become: true
become_user: "{{ matrix_user_username }}"
register: matrix_bot_maubot_git_pull_results
when: "matrix_bot_maubot_container_image_self_build|bool"

- name: Ensure maubot image is built
docker_image:
name: "{{ matrix_bot_maubot_docker_image }}"
source: build
force_source: "{{ matrix_bot_maubot_git_pull_results.changed if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}"
force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mailer_git_pull_results.changed }}"
build:
dockerfile: Dockerfile
path: "{{ matrix_bot_maubot_docker_src_files_path }}"
pull: true
when: "matrix_bot_maubot_container_image_self_build|bool"

- name: Ensure matrix-bot-maubot.service installed
template:
src: "{{ role_path }}/templates/systemd/matrix-bot-maubot.service.j2"
dest: "{{ matrix_systemd_path }}/matrix-bot-maubot.service"
mode: 0644
register: matrix_bot_maubot_systemd_service_result

- name: Ensure systemd reloaded after matrix-bot-maubot.service installation
service:
daemon_reload: true
when: "matrix_bot_maubot_systemd_service_result.changed|bool"

- name: Ensure matrix-bot-maubot.service restarted, if necessary
service:
name: "matrix-bot-maubot.service"
state: restarted
36 changes: 36 additions & 0 deletions roles/matrix-bot-maubot/tasks/setup_uninstall.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---

- name: Check existence of matrix-maubot service
stat:
path: "{{ matrix_systemd_path }}/matrix-maubot.service"
register: matrix_bot_maubot_service_stat

- name: Ensure matrix-maubot is stopped
service:
name: matrix-maubot
state: stopped
enabled: false
daemon_reload: true
register: stopping_result
when: "matrix_bot_maubot_service_stat.stat.exists|bool"

- name: Ensure matrix-maubot.service doesn't exist
file:
path: "{{ matrix_systemd_path }}/matrix-maubot.service"
state: absent
when: "matrix_bot_maubot_service_stat.stat.exists|bool"

- name: Ensure systemd reloaded after matrix-maubot.service removal
service:
daemon_reload: true
when: "matrix_bot_maubot_service_stat.stat.exists|bool"

- name: Ensure Matrix maubot paths don't exist
file:
path: "{{ matrix_bot_maubot_base_path }}"
state: absent

- name: Ensure maubot Docker image doesn't exist
docker_image:
name: "{{ matrix_bot_maubot_docker_image }}"
state: absent
10 changes: 10 additions & 0 deletions roles/matrix-bot-maubot/tasks/validate_config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---

- name: Fail if required settings not defined
fail:
msg: >-
You need to define a required configuration setting (`{{ item }}`).
when: "vars[item] == ''"
with_items:
- matrix_bot_maubot_secret
- matrix_bot_maubot_admins
123 changes: 123 additions & 0 deletions roles/matrix-bot-maubot/templates/config/config.yaml.j2
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
# 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: postgresql://username:password@hostname/dbname
database: sqlite:////data/maubot.db
moan0s marked this conversation as resolved.
Show resolved Hide resolved

# Separate database URL for the crypto database. "default" means use the same database as above.
crypto_database: default

# Additional arguments for asyncpg.create_pool() or sqlite3.connect()
# https://magicstack.github.io/asyncpg/current/api/index.html#asyncpg.pool.create_pool
# https://docs.python.org/3/library/sqlite3.html#sqlite3.connect
# For sqlite, min_size is used as the connection thread pool size and max_size is ignored.
database_opts:
min_size: 1
max_size: 10
plugin_directories:
# The directory where uploaded new plugins should be stored.
upload: /data/plugins
# The directories from which plugins should be loaded.
# Duplicate plugin IDs will be moved to the trash.
load:
- /data/plugins
trash: /data/trash

# Configuration for storing plugin databases
plugin_databases:
# The directory where SQLite plugin databases should be stored.
sqlite: /data/dbs
# The connection URL for plugin databases. If null, all plugins will get SQLite databases.
# If set, plugins using the new asyncpg interface will get a Postgres connection instead.
# Plugins using the legacy SQLAlchemy interface will always get a SQLite connection.
#
# To use the same connection pool as the default database, set to "default"
# (the default database above must be postgres to do this).
#
# When enabled, maubot will create separate Postgres schemas in the database for each plugin.
# To view schemas in psql, use `\dn`. To view enter and interact with a specific schema,
# use `SET search_path = name` (where `name` is the name found with `\dn`) and then use normal
# SQL queries/psql commands.
postgres:
# Maximum number of connections per plugin instance.
postgres_max_conns_per_plugin: 3
# Overrides for the default database_opts when using a non-"default" postgres connection string.
postgres_opts: {}

server:
# The IP and port to listen to.
hostname: 0.0.0.0
port: 29316
# Public base URL where the server is visible.
public_url: {{ matrix_bot_maubot_bot_server_public }}
# The base management API path.
base_path: /_matrix/maubot/v1
# The base path for the UI.
ui_base_path: /_matrix/maubot
# The base path for plugin endpoints. The instance ID will be appended directly.
plugin_base_path: /_matrix/maubot/plugin/
# Override path from where to load UI resources.
# Set to false to using pkg_resources to find the path.
override_resource_path: /opt/maubot/frontend
# The base appservice API path. Use / for legacy appservice API and /_matrix/app/v1 for v1.
appservice_base_path: /_matrix/app/v1
# The shared secret to sign API access tokens.
# Set to "generate" to generate and save a new token at startup.
unshared_secret: {{ matrix_bot_maubot_secret|to_json }}
moan0s marked this conversation as resolved.
Show resolved Hide resolved

# Known homeservers. This is required for the `mbc auth` command and also allows
# more convenient access from the management UI. This is not required to create
# clients in the management UI, since you can also just type the homeserver URL
# into the box there.
homeservers:
{{ matrix_domain }}:
# Client-server API URL
url: {{ matrix_server_fqn_matrix }}
# registration_shared_secret from synapse config
# You can leave this empty if you don't have access to the homeserver.
# When this is empty, `mbc auth --register` won't work, but `mbc auth` (login) will.
secret: {{ matrix_bot_maubot_registration_shared_secret|to_json }}

# List of administrator users. Plaintext passwords will be bcrypted on startup. Set empty password
# to prevent normal login. Root is a special user that can't have a password and will always exist.
admins: {{ matrix_bot_maubot_admins | combine( {"root": ""} ) }}

api_features:
login: true
plugin: true
plugin_upload: true
instance: true
instance_database: true
client: true
client_proxy: true
client_auth: true
dev_open: true
log: true

# 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:
colored:
(): maubot.lib.color_log.ColorFormatter
format: '[%(asctime)s] [%(levelname)s@%(name)s] %(message)s'
normal:
format: '[%(asctime)s] [%(levelname)s@%(name)s] %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: colored
loggers:
maubot:
level: DEBUG
mau:
level: DEBUG
aiohttp:
level: INFO
root:
level: DEBUG
handlers: [console]
Loading