mirror of
				https://github.com/spantaleev/matrix-docker-ansible-deploy.git
				synced 2025-11-04 00:58:56 +01:00 
			
		
		
		
	Initial maubot commit
This commit is contained in:
		@@ -1053,6 +1053,33 @@ matrix_bot_matrix_registration_bot_systemd_required_services_list: |
 | 
			
		||||
#
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
######################################################################
 | 
			
		||||
#
 | 
			
		||||
# matrix-maubot
 | 
			
		||||
#
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
# We don't enable bots by default.
 | 
			
		||||
matrix_maubot_enabled: false
 | 
			
		||||
 | 
			
		||||
matrix_maubot_container_image_self_build: "{{ matrix_architecture not in ['amd64'] }}"
 | 
			
		||||
 | 
			
		||||
matrix_maubot_systemd_required_services_list: |
 | 
			
		||||
  {{
 | 
			
		||||
    ['docker.service']
 | 
			
		||||
    +
 | 
			
		||||
    ['matrix-' + matrix_homeserver_implementation + '.service']
 | 
			
		||||
    +
 | 
			
		||||
    (['matrix-nginx-proxy.service'] if matrix_nginx_proxy_enabled else [])
 | 
			
		||||
  }}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
######################################################################
 | 
			
		||||
#
 | 
			
		||||
# /matrix-maubot
 | 
			
		||||
#
 | 
			
		||||
######################################################################
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
######################################################################
 | 
			
		||||
#
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										32
									
								
								roles/matrix-maubot/defaults/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								roles/matrix-maubot/defaults/main.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
matrix_maubot_enabled: true
 | 
			
		||||
matrix_maubot_container_image_self_build: false
 | 
			
		||||
matrix_maubot_docker_repo: "https://mau.dev/maubot/maubot.git"
 | 
			
		||||
matrix_maubot_docker_src_files_path: "{{ matrix_maubot_base_path }}/docker-src"
 | 
			
		||||
 | 
			
		||||
matrix_maubot_version: latest
 | 
			
		||||
matrix_maubot_docker_image: "dock.mau.dev/maubot/maubot:{{ matrix_maubot_version }}"
 | 
			
		||||
matrix_maubot_docker_image_force_pull: "{{ matrix_maubot_docker_image.endswith(':latest') }}"
 | 
			
		||||
 | 
			
		||||
matrix_maubot_base_path: "{{ matrix_base_data_path }}/maubot"
 | 
			
		||||
matrix_maubot_data_path: "{{ matrix_maubot_base_path }}/data"
 | 
			
		||||
 | 
			
		||||
matrix_maubot_bot_server: "https://{{ matrix_server_fqn_matrix }}"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
matrix_maubot_logging_level: info
 | 
			
		||||
matrix_maubot_secret: ''
 | 
			
		||||
matrix_maubot_admin_user: ''
 | 
			
		||||
matrix_maubot_admin_password: ''
 | 
			
		||||
matrix_mau_environment_variables_extension: ''
 | 
			
		||||
 | 
			
		||||
# A list of extra arguments to pass to the container
 | 
			
		||||
matrix_maubot_container_extra_arguments: []
 | 
			
		||||
 | 
			
		||||
# List of systemd services that matrix-bot-matrix-registration-bot.service depends on
 | 
			
		||||
matrix_maubot_systemd_required_services_list: ['docker.service']
 | 
			
		||||
 | 
			
		||||
# List of systemd services that matrix-bot-matrix-registration-bot.service wants
 | 
			
		||||
matrix_maubot_systemd_wanted_services_list: []
 | 
			
		||||
							
								
								
									
										5
									
								
								roles/matrix-maubot/tasks/init.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								roles/matrix-maubot/tasks/init.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
- set_fact:
 | 
			
		||||
    matrix_systemd_services_list: "{{ matrix_systemd_services_list + ['matrix-maubot.service'] }}"
 | 
			
		||||
  when: matrix_maubot_enabled|bool
 | 
			
		||||
							
								
								
									
										23
									
								
								roles/matrix-maubot/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								roles/matrix-maubot/tasks/main.yml
									
									
									
									
									
										Normal file
									
								
							@@ -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_maubot_enabled|bool"
 | 
			
		||||
  tags:
 | 
			
		||||
    - setup-all
 | 
			
		||||
    - setup-maubot
 | 
			
		||||
 | 
			
		||||
- import_tasks: "{{ role_path }}/tasks/setup_install.yml"
 | 
			
		||||
  when: "run_setup|bool and matrix_maubot_enabled|bool"
 | 
			
		||||
  tags:
 | 
			
		||||
    - setup-all
 | 
			
		||||
    - setup-maubot
 | 
			
		||||
 | 
			
		||||
- import_tasks: "{{ role_path }}/tasks/setup_uninstall.yml"
 | 
			
		||||
  when: "run_setup|bool and not matrix_maubot_enabled|bool"
 | 
			
		||||
  tags:
 | 
			
		||||
    - setup-all
 | 
			
		||||
    - setup-maubot
 | 
			
		||||
							
								
								
									
										73
									
								
								roles/matrix-maubot/tasks/setup_install.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										73
									
								
								roles/matrix-maubot/tasks/setup_install.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,73 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
- name: Ensure maubot paths exist
 | 
			
		||||
  file:
 | 
			
		||||
    path: "{{ item.path }}"
 | 
			
		||||
    state: directory
 | 
			
		||||
    mode: 0750
 | 
			
		||||
    owner: "{{ matrix_user_username }}"
 | 
			
		||||
    group: "{{ matrix_user_groupname }}"
 | 
			
		||||
  with_items:
 | 
			
		||||
    - {path: "{{ matrix_maubot_base_path }}", when: true}
 | 
			
		||||
    - - {path: "{{ matrix_maubot_data_path }}", when: true}
 | 
			
		||||
    - {path: "{{ matrix_maubot_docker_src_files_path }}", when: true}
 | 
			
		||||
  when: "item.when|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure maubot configuration file created
 | 
			
		||||
  template:
 | 
			
		||||
    src: "{{ role_path }}/templates/config/config.yaml.j2"
 | 
			
		||||
    dest: "{{ matrix_maubot_base_path }}/config.yaml"
 | 
			
		||||
    owner: "{{ matrix_user_username }}"
 | 
			
		||||
    group: "{{ matrix_user_groupname }}"
 | 
			
		||||
    mode: 0640
 | 
			
		||||
 | 
			
		||||
- name: Ensure maubot image is pulled
 | 
			
		||||
  docker_image:
 | 
			
		||||
    name: "{{ matrix_maubot_docker_image }}"
 | 
			
		||||
    source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}"
 | 
			
		||||
    force_source: "{{ matrix_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_maubot_docker_image_force_pull }}"
 | 
			
		||||
  when: "not matrix_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_maubot_docker_repo }}"
 | 
			
		||||
    dest: "{{ matrix_maubot_docker_src_files_path }}"
 | 
			
		||||
    force: "yes"
 | 
			
		||||
  become: true
 | 
			
		||||
  become_user: "{{ matrix_user_username }}"
 | 
			
		||||
  register: matrix_maubot_git_pull_results
 | 
			
		||||
  when: "matrix_maubot_container_image_self_build|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure maubot image is built
 | 
			
		||||
  docker_image:
 | 
			
		||||
    name: "{{ matrix_maubot_docker_image }}"
 | 
			
		||||
    source: build
 | 
			
		||||
    force_source: "{{ matrix_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_maubot_docker_src_files_path }}"
 | 
			
		||||
      pull: true
 | 
			
		||||
  when: "matrix_maubot_container_image_self_build|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure matrix-maubot.service installed
 | 
			
		||||
  template:
 | 
			
		||||
    src: "{{ role_path }}/templates/systemd/matrix-maubot.service.j2"
 | 
			
		||||
    dest: "{{ matrix_systemd_path }}/matrix-maubot.service"
 | 
			
		||||
    mode: 0644
 | 
			
		||||
  register: matrix_maubot_systemd_service_result
 | 
			
		||||
 | 
			
		||||
- name: Ensure systemd reloaded after matrix-maubot.service installation
 | 
			
		||||
  service:
 | 
			
		||||
    daemon_reload: true
 | 
			
		||||
  when: "matrix_maubot_systemd_service_result.changed|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure matrix-maubot.service restarted, if necessary
 | 
			
		||||
  service:
 | 
			
		||||
    name: "matrix-maubot.service"
 | 
			
		||||
    state: restarted
 | 
			
		||||
							
								
								
									
										36
									
								
								roles/matrix-maubot/tasks/setup_uninstall.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								roles/matrix-maubot/tasks/setup_uninstall.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
- name: Check existence of matrix-maubot service
 | 
			
		||||
  stat:
 | 
			
		||||
    path: "{{ matrix_systemd_path }}/matrix-maubot.service"
 | 
			
		||||
  register: matrix_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_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_maubot_service_stat.stat.exists|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure systemd reloaded after matrix-maubot.service removal
 | 
			
		||||
  service:
 | 
			
		||||
    daemon_reload: true
 | 
			
		||||
  when: "matrix_maubot_service_stat.stat.exists|bool"
 | 
			
		||||
 | 
			
		||||
- name: Ensure Matrix maubot paths don't exist
 | 
			
		||||
  file:
 | 
			
		||||
    path: "{{ matrix_maubot_base_path }}"
 | 
			
		||||
    state: absent
 | 
			
		||||
 | 
			
		||||
- name: Ensure maubot Docker image doesn't exist
 | 
			
		||||
  docker_image:
 | 
			
		||||
    name: "{{ matrix_maubot_docker_image }}"
 | 
			
		||||
    state: absent
 | 
			
		||||
							
								
								
									
										11
									
								
								roles/matrix-maubot/tasks/validate_config.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								roles/matrix-maubot/tasks/validate_config.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
---
 | 
			
		||||
 | 
			
		||||
- name: Fail if required settings not defined
 | 
			
		||||
  fail:
 | 
			
		||||
    msg: >-
 | 
			
		||||
      You need to define a required configuration setting (`{{ item }}`).
 | 
			
		||||
  when: "vars[item] == ''"
 | 
			
		||||
  with_items:
 | 
			
		||||
    - matrix_maubot_secret
 | 
			
		||||
    - matrix_maubot_admin_user
 | 
			
		||||
    - matrix_maubot_admin_password
 | 
			
		||||
							
								
								
									
										127
									
								
								roles/matrix-maubot/templates/config/config.yaml.j2
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										127
									
								
								roles/matrix-maubot/templates/config/config.yaml.j2
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,127 @@
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
# 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_maubot_bot_server }}
 | 
			
		||||
    # 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_maubot_secret }}
 | 
			
		||||
 | 
			
		||||
# 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_maubot_bot_server }}
 | 
			
		||||
    # 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_registration_shared_secret }}
 | 
			
		||||
admins:
 | 
			
		||||
    root: ''
 | 
			
		||||
  {{ matrix_maubot_admin_user }}: {{ matrix_maubot_admin_password }}
 | 
			
		||||
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:
 | 
			
		||||
        file:
 | 
			
		||||
            class: logging.handlers.RotatingFileHandler
 | 
			
		||||
            formatter: normal
 | 
			
		||||
            filename: /var/log/maubot.log
 | 
			
		||||
            maxBytes: 10485760
 | 
			
		||||
            backupCount: 10
 | 
			
		||||
        console:
 | 
			
		||||
            class: logging.StreamHandler
 | 
			
		||||
            formatter: colored
 | 
			
		||||
    loggers:
 | 
			
		||||
        maubot:
 | 
			
		||||
            level: DEBUG
 | 
			
		||||
        mau:
 | 
			
		||||
            level: DEBUG
 | 
			
		||||
        aiohttp:
 | 
			
		||||
            level: INFO
 | 
			
		||||
    root:
 | 
			
		||||
        level: DEBUG
 | 
			
		||||
        handlers: [file, console]
 | 
			
		||||
@@ -0,0 +1,36 @@
 | 
			
		||||
#jinja2: lstrip_blocks: "True"
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Maubot
 | 
			
		||||
{% for service in matrix_maubot_systemd_required_services_list %}
 | 
			
		||||
Requires={{ service }}
 | 
			
		||||
After={{ service }}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
{% for service in matrix_maubot_systemd_wanted_services_list %}
 | 
			
		||||
Wants={{ service }}
 | 
			
		||||
{% endfor %}
 | 
			
		||||
DefaultDependencies=no
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
Type=simple
 | 
			
		||||
Environment="HOME={{ matrix_systemd_unit_home_path }}"
 | 
			
		||||
ExecStartPre=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} kill matrix-maubot 2>/dev/null || true'
 | 
			
		||||
ExecStartPre=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} rm matrix-maubot 2>/dev/null || true'
 | 
			
		||||
 | 
			
		||||
ExecStart={{ matrix_host_command_docker }} run --rm --name matrix-maubot \
 | 
			
		||||
			--log-driver=none \
 | 
			
		||||
			--cap-drop=ALL \
 | 
			
		||||
			--user={{ matrix_user_uid }}:{{ matrix_user_gid }} \
 | 
			
		||||
			--read-only \
 | 
			
		||||
			--mount type=bind,src={{ matrix_maubot_base_path }},dst=/data \
 | 
			
		||||
			--network={{ matrix_docker_network }} \
 | 
			
		||||
            -p 29316:29316 \
 | 
			
		||||
			{{ matrix_maubot_docker_image }}
 | 
			
		||||
 | 
			
		||||
ExecStop=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} kill matrix-maubot 2>/dev/null || true'
 | 
			
		||||
ExecStop=-{{ matrix_host_command_sh }} -c '{{ matrix_host_command_docker }} rm matrix-maubot 2>/dev/null || true'
 | 
			
		||||
Restart=always
 | 
			
		||||
RestartSec=30
 | 
			
		||||
SyslogIdentifier=matrix-maubot
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
		Reference in New Issue
	
	Block a user