
Security News
Meet Socket at Black Hat and DEF CON 2025 in Las Vegas
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
matrix-registration-bot
Advanced tools
|Pypi badge| |License| |Docker pulls|
This bot aims to create and manage registration tokens for a matrix
server. It wants to help invitation based servers to maintain usability.
It does not create a user itself, but allows registration only with a
valid token as defined by Matrix standard
MSC3231 <https://github.com/matrix-org/matrix-doc/blob/main/proposals/3231-token-authenticated-registration.md>
__.
The benefit is, that an administrator minimizes manual work and does not
know a user’s password at any time.
This means, that a user that registers on your server has to provide a
registration token to successfully create an account. The token can be
created by interacting with this bot. So to invite a friend you would
send create
to the bot which answers with a token. You send the
token to the friend, and they can use this to create an account.
The feature was added in Matrix v1.2. More information can be found in
the Synapse Documentation <https://matrix-org.github.io/synapse/latest/usage/administration/admin_api/registration_tokens.html>
__
.
If you have any questions, or if you need help setting it up, read the
troublshooting guide <./docs/troubleshooting.md>
__ or join
#matrix-registration-bot:hyteck.de <https://matrix.to/#/#matrix-registration-bot:hyteck.de>
__.
Unrestricted commands
help
: Shows this helpRestricted commands
list
: Lists all registration tokensshow <token>
: Shows token details in human-readable formatcreate
: Creates a token that that is valid for one registration
for seven daysdelete <token>
Deletes the specified token(s)delete-all
Deletes all tokensallow @user:example.com
Allows the specified user (or a user
matching a regex pattern) to use restricted commandsdisallow @user:example.com
Stops a specified user (or a user
matching a regex pattern) from using restricted commandsBy default, any user on the homeserver of the bot is allowed to use
restricted commands. You can change that, by using the allow
command
to configure one (or multiple) specific user. Read the
simple-matrix-bot documentation <https://simple-matrix-bot-lib.readthedocs.io/en/latest/manual.html#allowlist>
__
for more information. If you get locked out for any reason, simply
modify the config.toml that is created in the bots working directory.
matrix-docker-ansible-deploy <https://github.com/spantaleev/matrix-docker-ansible-deploy>
__If you already installed your homeserver with this ansible playbook you
can make use of a very simple setup. Check out the setup instructions in the project’s repo <https://github.com/spantaleev/matrix-docker-ansible-deploy/blob/master/docs/configuring-playbook-bot-matrix-registration-bot.md>
__.
Server configuration
Your server should be configured to a token restricted registration. Add
the following to your ``homeserver.yaml``:
.. code:: yaml
enable_registration: true
registration_requires_token: true
Create a bot account
--------------------
Then you need to create an account for the bot on the server, like you
would do with any other account. A good username is
``registration-bot``. If you want to use token based login, note the
access token of the bot. One way to get the token is to log in as the
bot and got to ``Settings -> Help & About -> Access Token`` in Element,
however you mustn’t log out or the token will be invalidated. As an
alternative you can use the command
.. code:: shell
curl -X POST --header 'Content-Type: application/json' -d '{
"identifier": { "type": "m.id.user", "user": "YourBotUsername" },
"password": "YourBotPassword",
"type": "m.login.password"
}' 'https://matrix.YOURDOMAIN/_matrix/client/r0/login'
Once you are finished you can start the installation of the bot.
Manual Installation
-------------------
The installation can easily be done via
`PyPi <https://pypi.org/project/matrix-registration-bot/>`__
.. code:: bash
$ pip install matrix-registration-bot
Configuration
-------------
Configure the bot with a file named ``config.yml``. It should look like
this
.. code:: yaml
bot:
server: "https://synapse.example.com"
username: "registration-bot"
access_token: "verysecret"
# It is also possible to use a password based login by commenting out the access token line and adjusting the line below
# password: "secretpassword"
prefix: ""
api:
# API endpoint of the registration tokens
base_url: 'https://synapse.example.com'
# Access token of an administrator on the server. If you configured the bot to be an admin on the sever you can use the same token as above.
token: "supersecret"
logging:
level: DEBUG/INFO/ERROR
It is also possible to use environment variables to configure the bot.
The variable names are all upper case, concatenated with ``_``
e.g. ``LOGGING_LEVEL``.
Start the bot
~~~~~~~~~~~~~
Start the bot with
.. code:: bash
python -m matrix_registration_bot.bot
and then open a Direct Message to the bot. The type one of the following
commands.
Automatically (re-)start the bot with Systemd
To have the bot start automatically after reboots create the file
/etc/systemd/system/matrix-registration-bot.service
with the
following content on your server. This assumes you use that you place
your configuration in /matrix/matrix-registration-bot/config.yml
.
::
[Unit] Description=matrix-registration-bot
[Service] Type=simple
WorkingDirectory=/matrix/matrix-registration-bot ExecStart=python3 -m matrix_registration_bot.bot
Restart=always RestartSec=30 SyslogIdentifier=matrix-registration-bot
[Install] WantedBy=multi-user.target
After creating the service reload your daemon and start+enable the service.
.. code:: bash
$ sudo systemctl daemon-reload $ sudo systemctl start matrix-registration-bot $ sudo systemclt enable matrix-registration-bot
To use this container via docker you can create the following
docker-compose.yml
and start the container with
docker-compose up -d
. Explanation on how to obtain the correct
values of the configuration can be found in the Manual installation
section.
.. code:: yaml
version: "3.7"
services: matrix-registration-bot: image: moanos/matrix-registration-bot:latest environment: LOGGING_LEVEL: DEBUG BOT_SERVER: "https://synapse.example.com" BOT_USERNAME: "registration-bot" BOT_PASSWORD: "password" API_BASE_URL: 'https://synapse.example.com' API_TOKEN: "syt_xxxxxxxxxxxxxxxxxxxxxxxx"
git checkout de # End-to-End Encryption
From version 1.2.0 the bot supports E2E encryption. This is a bit safer and also allows to create direct messages (which are by default encrypted). This will be enabled by default.
Feel free to contribute or discuss this bot at
#matrix-registration-bot:hyteck.de <https://matrix.to/#/#matrix-registration-bot:hyteck.de>
__
or simply open issues and PRs here.
Code of Conduct <https://www.contributor-covenant.org/version/2/1/code_of_conduct/>
__
Simple-Matrix-Bot-Lib <https://simple-matrix-bot-lib.readthedocs.io>
__.Synapse Admin <https://github.com/Awesome-Technologies/synapse-admin>
__.. |Pypi badge| image:: https://img.shields.io/pypi/v/matrix-registration-bot.svg .. |License| image:: https://img.shields.io/pypi/l/matrix-registration-bot?color=%23008000 .. |Docker pulls| image:: https://img.shields.io/docker/pulls/moanos/matrix-registration-bot
FAQs
A bot to manage user registration tokens on a matrix server.
We found that matrix-registration-bot demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Meet Socket at Black Hat & DEF CON 2025 for 1:1s, insider security talks at Allegiant Stadium, and a private dinner with top minds in software supply chain security.
Security News
CAI is a new open source AI framework that automates penetration testing tasks like scanning and exploitation up to 3,600× faster than humans.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.