about summary refs log tree commit diff
path: root/nixpkgs/nixos/modules/services/matrix/maubot.md
blob: f6a05db56cafd97fa0350f13cae73f87d62551ee (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# Maubot {#module-services-maubot}

[Maubot](https://github.com/maubot/maubot) is a plugin-based bot
framework for Matrix.

## Configuration {#module-services-maubot-configuration}

1. Set [](#opt-services.maubot.enable) to `true`. The service will use
   SQLite by default.
2. If you want to use PostgreSQL instead of SQLite, do this:

   ```nix
   services.maubot.settings.database = "postgresql://maubot@localhost/maubot";
   ```

   If the PostgreSQL connection requires a password, you will have to
   add it later on step 8.
3. If you plan to expose your Maubot interface to the web, do something
   like this:
   ```nix
   services.nginx.virtualHosts."matrix.example.org".locations = {
     "/_matrix/maubot/" = {
       proxyPass = "http://127.0.0.1:${toString config.services.maubot.settings.server.port}";
       proxyWebsockets = true;
     };
   };
   services.maubot.settings.server.public_url = "matrix.example.org";
   # do the following only if you want to use something other than /_matrix/maubot...
   services.maubot.settings.server.ui_base_path = "/another/base/path";
   ```
4. Optionally, set `services.maubot.pythonPackages` to a list of python3
   packages to make available for Maubot plugins.
5. Optionally, set `services.maubot.plugins` to a list of Maubot
   plugins (full list available at https://plugins.maubot.xyz/):
   ```nix
   services.maubot.plugins = with config.services.maubot.package.plugins; [
     reactbot
     # This will only change the default config! After you create a
     # plugin instance, the default config will be copied into that
     # instance's config in Maubot's database, and further base config
     # changes won't affect the running plugin.
     (rss.override {
       base_config = {
         update_interval = 60;
         max_backoff = 7200;
         spam_sleep = 2;
         command_prefix = "rss";
         admins = [ "@chayleaf:pavluk.org" ];
       };
     })
   ];
   # ...or...
   services.maubot.plugins = config.services.maubot.package.plugins.allOfficialPlugins;
   # ...or...
   services.maubot.plugins = config.services.maubot.package.plugins.allPlugins;
   # ...or...
   services.maubot.plugins = with config.services.maubot.package.plugins; [
     (weather.override {
       # you can pass base_config as a string
       base_config = ''
         default_location: New York
         default_units: M
         default_language:
         show_link: true
         show_image: false
       '';
     })
   ];
   ```
6. Start Maubot at least once before doing the following steps (it's
   necessary to generate the initial config).
7. If your PostgreSQL connection requires a password, add
   `database: postgresql://user:password@localhost/maubot`
   to `/var/lib/maubot/config.yaml`. This overrides the Nix-provided
   config. Even then, don't remove the `database` line from Nix config
   so the module knows you use PostgreSQL!
8. To create a user account for logging into Maubot web UI and
   configuring it, generate a password using the shell command
   `mkpasswd -R 12 -m bcrypt`, and edit `/var/lib/maubot/config.yaml`
   with the following:

   ```yaml
   admins:
       admin_username: $2b$12$g.oIStUeUCvI58ebYoVMtO/vb9QZJo81PsmVOomHiNCFbh0dJpZVa
   ```

   Where `admin_username` is your username, and `$2b...` is the bcrypted
   password.
9. Optional: if you want to be able to register new users with the
   Maubot CLI (`mbc`), and your homeserver is private, add your
   homeserver's registration key to `/var/lib/maubot/config.yaml`:

   ```yaml
   homeservers:
       matrix.example.org:
           url: https://matrix.example.org
           secret: your-very-secret-key
   ```
10. Restart Maubot after editing `/var/lib/maubot/config.yaml`,and
    Maubot will be available at
    `https://matrix.example.org/_matrix/maubot`. If you want to use the
    `mbc` CLI, it's available using the `maubot` package (`nix-shell -p
    maubot`).