Ref: - https://github.com/etkecc/baibot/pull/83 -create-pull-request/i18n748d2b7fd4/CHANGELOG.md (2026-03-07-version-1150)-748d2b7fd4/docs/configuration/authentication.md
| @@ -39,16 +39,35 @@ Depending on your current `vars.yml` file and desired configuration, **you may r | |||||
| To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: | To enable the bot, add the following configuration to your `inventory/host_vars/matrix.example.com/vars.yml` file: | ||||
| Authentication can be configured in one of two mutually-exclusive ways: | |||||
| - **Password authentication** (`matrix_bot_baibot_config_user_password`) - recommended for most playbook-managed setups, because it integrates with automatic user creation flow used by the playbook, and auto-creates the bot account | |||||
| - **Access-token authentication** (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) - useful for specific [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md)/OIDC setups where password authentication is not available or not desired | |||||
| Even when [Matrix Authentication Service](configuring-playbook-matrix-authentication-service.md) is enabled, password authentication is still typically the best fit for baibot if you're using a playbook-managed bot account. | |||||
| For upstream details, see baibot's [🔐 Authentication](https://github.com/etkecc/baibot/blob/main/docs/configuration/authentication.md) documentation. | |||||
| ```yaml | ```yaml | ||||
| matrix_bot_baibot_enabled: true | matrix_bot_baibot_enabled: true | ||||
| # Uncomment and adjust this part if you'd like to use a username different than the default | # Uncomment and adjust this part if you'd like to use a username different than the default | ||||
| # matrix_bot_baibot_config_user_mxid_localpart: baibot | # matrix_bot_baibot_config_user_mxid_localpart: baibot | ||||
| # Authentication mode (choose exactly one): | |||||
| # | |||||
| # 1) Password authentication (recommended for most setups) | |||||
| # Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`. | # Generate a strong password for the bot. You can create one with a command like `pwgen -s 64 1`. | ||||
| # If you'd like to change this password subsequently, see the details below. | # If you'd like to change this password subsequently, see the details below. | ||||
| matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT' | matrix_bot_baibot_config_user_password: 'PASSWORD_FOR_THE_BOT' | ||||
| # 2) Access-token authentication (for MAS/OIDC-enabled homeservers) | |||||
| # matrix_bot_baibot_config_user_access_token: 'YOUR_MAS_COMPATIBILITY_TOKEN_HERE' | |||||
| # matrix_bot_baibot_config_user_device_id: 'BAIBOT' | |||||
| # | |||||
| # You can generate a compatibility token for MAS with: | |||||
| # mas-cli manage issue-compatibility-token <username> [device_id] | |||||
| # An optional passphrase to use for backing up and recovering the bot's encryption keys. | # An optional passphrase to use for backing up and recovering the bot's encryption keys. | ||||
| # You can create one with a command like `pwgen -s 64 1`. | # You can create one with a command like `pwgen -s 64 1`. | ||||
| # | # | ||||
| @@ -387,13 +406,15 @@ ansible-playbook -i inventory/hosts setup.yml --tags=setup-all,ensure-matrix-use | |||||
| **Notes**: | **Notes**: | ||||
| - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account. | |||||
| - The `ensure-matrix-users-created` playbook tag makes the playbook automatically create the bot's user account when password authentication is used. | |||||
| - If you're using access-token authentication, the bot account must already exist and the configured token + device ID must match that account. This mode is mainly for MAS/OIDC setups where password-based bot login is not suitable. | |||||
| - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` | - The shortcut commands with the [`just` program](just.md) are also available: `just install-all` or `just setup-all` | ||||
| `just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. | `just install-all` is useful for maintaining your setup quickly ([2x-5x faster](../CHANGELOG.md#2x-5x-performance-improvements-in-playbook-runtime) than `just setup-all`) when its components remain unchanged. If you adjust your `vars.yml` to remove other components, you'd need to run `just setup-all`, or these components will still remain installed. | ||||
| - If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. | |||||
| - If you change the bot password (`matrix_bot_baibot_config_user_password` in your `vars.yml` file) subsequently, the bot user's credentials on the homeserver won't be updated automatically. If you'd like to change the bot user's password, use a tool like [synapse-admin](configuring-playbook-synapse-admin.md) to change it, and then update `matrix_bot_baibot_config_user_password` to let the bot know its new password. (This note applies to password authentication mode.) | |||||
| ## Usage | ## Usage | ||||
| @@ -5778,7 +5778,7 @@ matrix_user_creator_users_auto: | | |||||
| 'username': matrix_bot_baibot_config_user_mxid_localpart, | 'username': matrix_bot_baibot_config_user_mxid_localpart, | ||||
| 'initial_password': matrix_bot_baibot_config_user_password, | 'initial_password': matrix_bot_baibot_config_user_password, | ||||
| 'initial_type': 'bot', | 'initial_type': 'bot', | ||||
| }] if matrix_bot_baibot_enabled else []) | |||||
| }] if matrix_bot_baibot_enabled and ((matrix_bot_baibot_config_user_password | default('', true) | string | length) > 0) else []) | |||||
| + | + | ||||
| ([{ | ([{ | ||||
| 'username': matrix_bot_matrix_reminder_bot_matrix_user_id_localpart, | 'username': matrix_bot_matrix_reminder_bot_matrix_user_id_localpart, | ||||
| @@ -17,7 +17,7 @@ matrix_bot_baibot_container_repo_version: "{{ 'main' if matrix_bot_baibot_versio | |||||
| matrix_bot_baibot_container_src_files_path: "{{ matrix_base_data_path }}/baibot/container-src" | matrix_bot_baibot_container_src_files_path: "{{ matrix_base_data_path }}/baibot/container-src" | ||||
| # renovate: datasource=docker depName=ghcr.io/etkecc/baibot | # renovate: datasource=docker depName=ghcr.io/etkecc/baibot | ||||
| matrix_bot_baibot_version: v1.14.3 | |||||
| matrix_bot_baibot_version: v1.15.0 | |||||
| matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_registry_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}" | matrix_bot_baibot_container_image: "{{ matrix_bot_baibot_container_image_registry_prefix }}etkecc/baibot:{{ matrix_bot_baibot_version }}" | ||||
| matrix_bot_baibot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else matrix_bot_baibot_container_image_registry_prefix_upstream }}" | matrix_bot_baibot_container_image_registry_prefix: "{{ 'localhost/' if matrix_bot_baibot_container_image_self_build else matrix_bot_baibot_container_image_registry_prefix_upstream }}" | ||||
| matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}" | matrix_bot_baibot_container_image_registry_prefix_upstream: "{{ matrix_bot_baibot_container_image_registry_prefix_upstream_default }}" | ||||
| @@ -59,8 +59,28 @@ matrix_bot_baibot_config_homeserver_url: "" | |||||
| # so it can start fresh. | # so it can start fresh. | ||||
| matrix_bot_baibot_config_user_mxid_localpart: baibot | matrix_bot_baibot_config_user_mxid_localpart: baibot | ||||
| # Authentication settings (`user.*` configuration keys). | |||||
| # | |||||
| # baibot supports 2 mutually-exclusive authentication modes. | |||||
| # Set EITHER: | |||||
| # - password authentication: `matrix_bot_baibot_config_user_password` | |||||
| # OR: | |||||
| # - access-token authentication: `matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id` | |||||
| # | |||||
| # Password authentication is recommended for most playbook-managed deployments, | |||||
| # because it integrates with the `matrix-user-creator` role and can auto-create | |||||
| # the bot account (via the `ensure-matrix-users-created` playbook tag). | |||||
| # This remains true even on many MAS-enabled deployments where the bot account | |||||
| # is local and playbook-managed. | |||||
| # Controls the `user.password` configuration setting. | # Controls the `user.password` configuration setting. | ||||
| matrix_bot_baibot_config_user_password: '' | |||||
| matrix_bot_baibot_config_user_password: null | |||||
| # Controls the `user.access_token` configuration setting. | |||||
| matrix_bot_baibot_config_user_access_token: null | |||||
| # Controls the `user.device_id` configuration setting. | |||||
| matrix_bot_baibot_config_user_device_id: null | |||||
| # Controls the `user.name` configuration setting. | # Controls the `user.name` configuration setting. | ||||
| # | # | ||||
| @@ -12,7 +12,6 @@ | |||||
| when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" | when: "item.when | bool and lookup('vars', item.name, default='') | string | length == 0" | ||||
| with_items: | with_items: | ||||
| - {'name': 'matrix_bot_baibot_config_user_mxid_localpart', when: true} | - {'name': 'matrix_bot_baibot_config_user_mxid_localpart', when: true} | ||||
| - {'name': 'matrix_bot_baibot_config_user_password', when: true} | |||||
| - {'name': 'matrix_bot_baibot_container_network', when: true} | - {'name': 'matrix_bot_baibot_container_network', when: true} | ||||
| - {'name': 'matrix_bot_baibot_config_homeserver_url', when: true} | - {'name': 'matrix_bot_baibot_config_homeserver_url', when: true} | ||||
| @@ -26,6 +25,58 @@ | |||||
| - {'name': 'matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key', when: "{{ matrix_bot_baibot_config_agents_static_definitions_openai_enabled }}"} | - {'name': 'matrix_bot_baibot_config_agents_static_definitions_openai_config_api_key', when: "{{ matrix_bot_baibot_config_agents_static_definitions_openai_enabled }}"} | ||||
| - name: Fail if baibot authentication mode is not configured | |||||
| ansible.builtin.fail: | |||||
| msg: >- | |||||
| You need to configure one baibot authentication mode: | |||||
| either `matrix_bot_baibot_config_user_password` | |||||
| or (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`). | |||||
| when: >- | |||||
| ( | |||||
| matrix_bot_baibot_config_user_password | default('', true) | string | length == 0 | |||||
| ) | |||||
| and | |||||
| ( | |||||
| matrix_bot_baibot_config_user_access_token | default('', true) | string | length == 0 | |||||
| and matrix_bot_baibot_config_user_device_id | default('', true) | string | length == 0 | |||||
| ) | |||||
| - name: Fail if baibot authentication mode is configured ambiguously | |||||
| ansible.builtin.fail: | |||||
| msg: >- | |||||
| You need to configure exactly one baibot authentication mode. | |||||
| Set either `matrix_bot_baibot_config_user_password`, | |||||
| or (`matrix_bot_baibot_config_user_access_token` + `matrix_bot_baibot_config_user_device_id`) but not both. | |||||
| when: >- | |||||
| ( | |||||
| matrix_bot_baibot_config_user_password | default('', true) | string | length > 0 | |||||
| ) | |||||
| and | |||||
| ( | |||||
| matrix_bot_baibot_config_user_access_token | default('', true) | string | length > 0 | |||||
| or matrix_bot_baibot_config_user_device_id | default('', true) | string | length > 0 | |||||
| ) | |||||
| - name: Fail if baibot access token authentication is incomplete | |||||
| ansible.builtin.fail: | |||||
| msg: >- | |||||
| Access-token authentication requires both | |||||
| `matrix_bot_baibot_config_user_access_token` and `matrix_bot_baibot_config_user_device_id`. | |||||
| when: >- | |||||
| ( | |||||
| matrix_bot_baibot_config_user_password | default('', true) | string | length == 0 | |||||
| ) | |||||
| and | |||||
| ( | |||||
| matrix_bot_baibot_config_user_access_token | default('', true) | string | length > 0 | |||||
| or matrix_bot_baibot_config_user_device_id | default('', true) | string | length > 0 | |||||
| ) | |||||
| and | |||||
| ( | |||||
| matrix_bot_baibot_config_user_access_token | default('', true) | string | length == 0 | |||||
| or matrix_bot_baibot_config_user_device_id | default('', true) | string | length == 0 | |||||
| ) | |||||
| - name: Fail if admin patterns list is empty | - name: Fail if admin patterns list is empty | ||||
| ansible.builtin.fail: | ansible.builtin.fail: | ||||
| msg: >- | msg: >- | ||||
| @@ -15,7 +15,11 @@ homeserver: | |||||
| user: | user: | ||||
| mxid_localpart: {{ matrix_bot_baibot_config_user_mxid_localpart | to_json }} | mxid_localpart: {{ matrix_bot_baibot_config_user_mxid_localpart | to_json }} | ||||
| # Authentication: set EITHER password OR access_token + device_id. | |||||
| password: {{ matrix_bot_baibot_config_user_password | to_json }} | password: {{ matrix_bot_baibot_config_user_password | to_json }} | ||||
| access_token: {{ matrix_bot_baibot_config_user_access_token | to_json }} | |||||
| device_id: {{ matrix_bot_baibot_config_user_device_id | to_json }} | |||||
| # The name the bot uses as a display name and when it refers to itself. | # The name the bot uses as a display name and when it refers to itself. | ||||
| # Leave empty to use the default (baibot). | # Leave empty to use the default (baibot). | ||||