Matrix guides¶
The Réseau Libre project encourages the use of Matrix instead of proprietary platforms like Discord, Telegram or Facebook. This page explains how to get onboard and use Matrix to run bridges with the mesh.
You can read the rationale behind that choice in the "Why Matrix?" FAQ.
How do I join the Matrix room?¶
So how do you actually join Matrix?
There are many guides for this, but the joinmatrix.org guide is
pretty good. Essentially, it is:
- Register on a home server
- Download a client, app, or use a web client
- Join the room
Picking a home server¶
Here are home servers we recommend:
-
Matrix.org: even though they do not recommend you create an account there because their server is busy, it's still possible to create a
matrix.orgaccount onapp.element.io -
Mozilla.org: the people who make the Firefox web browser. Go to chat.mozilla.org (which also serves as web client) and click on "Continue with...", you can sign up with an already existing Mozilla Accounts, GitHub, or Google account
-
FSFE: the European Free Software Foundation runs a Matrix server for its members, requires a donation, see
chat.fsfe.org -
Linux distributions:
-
Debian: people with an account on the Debian GitLab server ("salsa") can access the
debian.socialhome server -
Ubuntu: members can use register on the
ubuntu.comhome server -
Fedora: people with a Fedora account can use the
fedora.imhome server -
Arch: team members can use the
archlinux.orghome server -
Other servers:
-
Unredacted- privacy focused, based in the United States tchncs.de- based in Germany, also offers other federated services
There is also this list of home servers accepting registration from the public.
Picking an app¶
We recommend those:
- Element X: flagship mobile app
- Element: flagship desktop app
- FluffyChat: good mobile, desktop app
- Cinny: good desktop, minimalist, desktop app
If you want to use the web interface, your home server provider likely
provides one (above), otherwise use the official instance at
app.element.io.
Joining the room¶
Normally, clicking the #reseaulibre:matrix.org Matrix room from
your browser should work, by opening the desktop client.
If not, you can type /join #reseaulibre:matrix.org in any chat
window, or enter the #reseaulibre:matrix.org URL in the "join" (in
element it's "Search") interface of your client.
This is the main room, but there are other rooms in the space,
#reseaulibre-space:matrix.org Matrix room.
Videoconferencing¶
Matrix supports audio and video calls. There are two different implementation:
- legacy, built on top of the Jitsi server at https://meet.element.io/ (but that can be modified for other Jitsi servers)
- native, or "Element call", which is built on top of
Livekit, a WebRTC framework that is slightly easier to deploy than Jitsi, and federates better (each server can run its own Livekit, whereas Element effectively runs all the legacy calls)
We're currently experimenting with Legacy calls, as we want to allow outside people to participate in our calls.
Out of the box, the way legacy calls work is they build a unique (think UUID) identifier for the room, and embed this as a widget. You can find that room identifier by typing this in a Element chat window:
/devtools
Then select "Active widgets", where you'll see a button like:
https://scalar.vector.im/api/widgets/jitsi.html
Select that, and look for the conferenceId, for example:
"conferenceId": "8be4df61-93ca-11d2-aa0d-00e098032b8c",
Then you can tell people to join that room at:
https://meet.element.io/$conferenceId
For example, in the case above:
https://meet.element.io/8be4df61-93ca-11d2-aa0d-00e098032b8c
The widget should also be visible in Explore room state then
im.vector.modular.widgets.
You can also change that widget to point to an existing Jitsi room
that you control better, for example a moderated meeting. In the
first example, change the domain to meet.jit.si and the
conferenceId to the "guest" link, then click "Send", which will
update the room to point to the new widget.
Commit bot¶
A bot was setup to send messages for new commits on the #reseaulibre:matrix.org
Matrix room whenever there is a push. This was done using the
built-in Codeberg Matrix integration, with a twist: a long lived
token was created using the login API. Concretely, it's with that
curl magic:
export PASSWORD=$(rbw get @rl-codeberg-webhook)
curl -XPOST --header 'Content-Type: application/json' \
-d '{"type":"m.login.password", "identifier":{"type": "m.id.user", "user": "rl-codeberg-webhook"}, "password":"'$PASSWORD'"}' \
"https://matrix.org/_matrix/client/r0/login"
On success, it replied with:
{"access_token":"mct_REDACTED_REDACTED","device_id":"E6aFv2IAri","user_id":"@rl-codeberg-webhook:matrix.org"}
Previous attempts at copying the access token from Element typically fail after 24 hours.
This was done instead of setting up a dedicated bot like Maubot with its numerous plugins like a RSS plugin, or a webhook plugin. There is also a dedicated RSS bridge.
Moderation¶
We have a bot called mjolnir in the rooms which enforces common
block lists shared across the Matrix community. It is managed by the
debian.social team, of which anarcat is a member.
Here is a good guide on moderation tools.
Other people have been promoted to moderation roles as well. That has been done manually across all the rooms.
Bug
Unfortunately, Matrix doesn't support syncing moderation status across an entire space yet, see:
We could also use a
communitybot
as an alternative, but then we'd still need to add it to all the
rooms anyways.
asgard.chat possible alternative to Debian's Mjolnir, ran by the
folks who do a lot of stuff in Matrix, people from the MSC core team,
Draupnir, Meowlnir, Continuwuity and so on.
Both run an open source bot called Draupnir. We could run our own to remove trust in other organisations, but it wouldn't resolve the primary goal of the bot which is to remove the single point of failure in the main room admin.