Submind YouTube summaries
Thumbnail for DO_BYTE 2026 - Was ist Matrix?

DO_BYTE 2026 - Was ist Matrix?

Watch on YouTube

Video summary

The Matrix is introduced as an open, decentralized network designed for secure communication that functions similarly to email but with chat capabilities. Unlike traditional centralized platforms where a single authority controls all data and messages, Matrix operates on a federated model where users maintain accounts on specific home servers while communicating across multiple independent servers. This architecture ensures that no single entity owns a chat room; instead, room information is duplicated across participating servers, allowing for robust resilience even if one server goes offline. The system supports end-to-end encryption for message content, enabling private conversations where neither the server operator nor third parties can read the data without user consent, while also allowing users to verify identities through cryptographic keys. To utilize this network, users interact with various client applications such as Element Desktop, Element X for mobile devices, and community-driven options like FluffyChat or Neko, which connect to their home servers to retrieve messages and media. The ecosystem includes several server implementations, with Synapse being the most mature and widely used option that supports features like Single Sign-On integration, while lighter alternatives like Conduit and Continuity are suitable for smaller deployments. Beyond basic messaging, the platform offers bridges that allow seamless communication with other services like WhatsApp, Discord, and Signal by translating messages between them and the Matrix network. Additionally, advanced features include built-in video calling via WebRTC, automated moderation tools to handle spam, and federation testing utilities to ensure connectivity between different servers. Despite its strengths, the presentation highlights several challenges inherent to self-hosting and federated systems, including difficulties in discovering public rooms without a central directory and occasional encryption issues when servers are offline or unable to exchange keys. A significant concern is that metadata, such as room names, descriptions, and participant lists, remains unencrypted on the server, though running one's own server mitigates privacy risks regarding personal data. Other practical hurdles involve the complexity of migrating accounts between home servers, which can be a cumbersome process, and the need for clear user guides to manage encryption keys and recovery procedures effectively. The speaker notes that while bridges like those for Telegram or WhatsApp can introduce bugs in larger deployments, they remain valuable for connecting disparate groups, provided expectations are managed regarding their stability. In conclusion, the video advocates for adopting Matrix as a sustainable alternative to commercial chat services, emphasizing the benefits of control, privacy, and interoperability through self-hosting. The presenter shares experience from hosting servers for student associations, demonstrating that even modest hardware configurations can support hundreds of active users effectively. While there are ongoing technical limitations and a learning curve for setting up and maintaining infrastructure, the open-source nature of the protocol allows the community to drive improvements and adapt the system to specific needs. Ultimately, Matrix represents a powerful tool for creating independent communication networks that prioritize user sovereignty and secure, encrypted dialogue across diverse platforms.
Read the full video transcript
Yes, good day. Today I'm going to tell you a little bit about what The Matrix is. I'm delighted that so many people came . Exactly . My agenda today is to give you a little introduction . Why am I standing here? Then the question becomes: what exactly is Matrix ? Next, I will introduce you to possible servers and clients. Next, I'll discuss additional components that you can install, and then I'll address problems and my own experiences . This entire presentation has a focus that leans more towards self-hosting, how to run your own Matrix server, but I will also begin by explaining what that is. Okay, so let's start with what Matrix is. I took a look at the website , matrix.org, and there it says: "An open network for secure decentralized communication". Let's break this down somehow. Let 's start with communication. It's kind of a chat log. It is not technically a chat log, but for all intents and purposes and this presentation, it is a chat log. Okay, so we'll communicate via chat. Decentralized. Decentralized is kind of okay; we communicate between multiple servers. We do n't have a central server, no central server that says, " I am the authority here, I decide which messages are in the chat." Instead, we have decentralized servers, like with email, for example. Each server is its own master of the data. Exactly, secure. We offer end-to-end encryption support. This means all your chat messages can be encrypted. More on that later. And open, it's an open standard. OK. Now we need a few more basics, such as the Matrix ID. I already mentioned it in a way, it 's a bit like email. With email, we're familiar with a kind of local part, so something like your name, then an @ symbol, and then something like your provider, where the server is located. It's similar to Matrix; we have a Local Part, which is the username, and then we have a colon and then the server where the data is located. So, while a chat room (more on that later) is not located on a fixed server, your account is always located on a fixed server, like with email. Exactly, I somehow pressed the blackout button. Exactly, the username is freely selectable and the home server is the domain of the server on which the data is located. So, for example, if you create an account on a Matrix server at fachschaften.org, it will say " fachschaften.org" followed by a colon. This is also so that other servers can figure out where the messages actually need to go . That means you somehow added your username followed by a colon to the server. And that would be @arkul:fachschaften.org, for example. Um, okay, now we've been talking about the server. What exactly is a home server? A home server is, first and foremost, a server, server software that runs somewhere on your computer. Accounts are stored there, chats are stored there. I may mix up chats and rooms in the following section; these two terms are used interchangeably. In The Matrix, everything is always a room, a chat is also a room, so I will use them somewhat equivalently , even if they are not technically completely equivalent terms, and that's where the media lies. This means your home server knows which chats you are in, and your home server has all media stored locally. When a new message comes in, it will be saved to your home server and everything will be temporarily stored there. Your client, on the other hand—oh, I promised not to use a laser pointer— simply sits at the bottom and connects to your home server, then retrieves the current state. Exactly . As I've already mentioned, the whole thing is similar to an email server. We keep all accounts encrypted with each other, and each institution or person can operate their own server . So, now we have one server, now we want multiple servers to be able to communicate with each other . This is federation. Um, here every server knows all the information about all the rooms, because every server knows the rooms you are in and only servers talk to each other, where there is always at least one person in the room, every server knows all the information about the rooms. This is also a bit of a difference to other approaches to federated systems, federated chats, in that there is no server that essentially owns the room, but rather each room is duplicated on each home server. I pressed the wrong button again . Um, so now, if a change happens somehow, that is, a new message is sent, then um, there is the server, so to speak, where the user who caused it is located, and that is then distributed to all other servers where the rooms are located. Of course, there are also things you could go into detail about for an hour, like protocols that sync things retrospectively, if a server was offline or something like that. Yes . Exactly, and then the conclusion: No central server per room. Exactly, then somehow, how does that come about, who else is behind it? There is the Matrix Foundation, which is funded by donations and maintains this specification. The specification is partly developed by other companies and also by the community, but there is the Matrix Foundation, which ultimately takes care of it. It also operates a public Matrix server, matrix.org. And it is governed by a Governing Board, and the Governing Board is elected annually. Then there's Element, Element is somehow the company or its commercial enterprise, initially from Great Britain, and they co- developed the Matrix specification at the beginning; that's where the money came from, at least initially, and they still contribute a fair amount to the Matrix specification. They also develop the most widely used server (we'll look at the different types of servers and the most widely used client in a moment). Okay, now that I've introduced the basic concepts, the question is, why do we actually want to do this ? Why do we want to use Matrix? Um, point one, it's kind of an open standard, as we just mentioned, it's maintained by the Matrix Foundation, there are clearly defined processes, these are Matrix backproposals, for how to change the protocol, how to add new things , how things might be deprecated, the community can contribute, so if you don't like something, you can simply write a Matrix backproposal and suggest changing it. And you can build your own server and client implementations. Of course, this is quite a large protocol by now, so building your own server or client implementation takes some effort, but it is theoretically possible; nobody is stopping you, unlike with other commercial providers where you are not allowed to do so. We've already mentioned the existence of a federation, which is also one of the advantages of The Matrix. We have enabled communication between accounts on different servers. Nobody is permanently tied to any one server, and therefore no server has complete control over the network. Ultimately, if one server is shut down, it initially has no effect on other servers, and they can continue to communicate. For example, there's the really funny story that matrix.org, the biggest server, was down for a few hours last year. I think it was more like a day like this . And then, of course, one could see who was on matrix.org, because one could no longer reach those people , but in one's own cozy little Federation world, everything continued to federate nicely. And each server can manage its own users . This also means that if you set up a Matrix server for a hackspace , for example, you can simply go there and somehow attach your OIDC, your SSO to it and can directly take over your accounts. Furthermore, it is encrypted. This means that all message content can be encrypted. You can choose that. In an open chat, it always depends; you might not want to encrypt because then old messages are even easier to see, and things like that. And it's more of an open chat with an open login. But in a private chat, I might want to encrypt. I've just used the cash audit chat from a year ago as an example. That might be sensitive information. I might even want to prevent my server operator from reading them. And then I just click on encryption. Furthermore, for communication between multiple individuals, it always makes sense to turn on encryption, simply because why not? Exactly, users can verify each other . I think that has faded a bit more into the background in recent years. That 's also what somehow acts as a signal or something, I don't know, but it kind of hides you. This means you can somehow go to another person and say, okay, let's compare emojis here, and then you know afterwards that it is cryptographically ensured that only this other person can see it. And then no one has wedged themselves in the middle, so to speak. And that, in my view, is a great advantage. At least until a few months ago, Signal was opposed, but many still seem to be opposed to encrypted services that allow the use of multiple devices simultaneously . I don't have a main device that everything is somehow connected to . Ultimately, I can connect an unlimited number of devices to my account and communicate with all of them simultaneously, without having to regularly charge my phone or anything like that. OK. Now I'm sure I've convinced you all that you want to try out Matrix . Now let's talk a little bit about how that actually works. There are multiple servers. That's a synapse. This is the server that is being developed by Element, and is also being operated and sold commercially. There is now a Pro version of it. Um. But the community version is perfectly adequate for pretty much everything, unless you have a server with thousands or tens of thousands of users . Then there is Conduit. Conduit is a small, self-developed project in Rust that someone created. And then there are various forks of it, and Continuvity is also worth mentioning. It's basically a fork of a fork and at the end of Conduit. Um. Exactly, and those are the small servers that are poorer in terms of resources. It's also kind of cool to have different servers in the ecosystem, and not just one. But they might also potentially have more bugs and fewer features. Exactly, the ecosystem somehow seems larger when it comes to clients. That means we have Element, which is the client distributed by Element. It's currently somewhat recommendable on desktop operating systems because it works and has the features. Then there is Element X, which is the new development for mobile devices, i.e., iOS and Android. There 's also some kind of new thinking protocol in there now, and then there's FluffyChat. FluffyChat is also a client that originated from the community and is primarily intended for mobile devices. Theoretically, it also works on the web and under Linux. Then there's Neko. Neko is a community- developed application for Windows, macOS and Linux. Cinny took some inspiration from Discord in terms of layout. And it's also available for Windows, macOS, Linux and Web. And Sable is a Cinny fork and has somehow incorporated a few more features. And lastly, you can also use Matrix in Thunderbird. Thunderbird allows you to set up a Matrix account and connect to it. You should n't do that. It's a truly terrible experience. Do n't do it, it will potentially break your account , but it is possible. OK. Exactly, let's go through in more detail the things I just skimmed over , the things I wrote down beforehand. There is Synapse, which is the most widely used server implementation, at least for now. It's also relatively mature, actually stable, and you can easily implement a single sign-on with it, so if you're running some kind of hackspace infrastructure or something like that, as mentioned above, then you'd probably want to use Synapse. And Synapse supports Element X, which I believe the other smaller servers also support by now. Not when I first gave this lecture . Um. Then on to clients. There is Element Desktop, which is a desktop client, obviously. But you can also use it on the web. It has this layout. Um. Exactly, you can see a chat there, you can see information about the chat, you can see a chat list. Um. One could delve even deeper into that. It supports Spaces, for example, which is what's called a server on Discord . Um. Um, or at least a counterpart to that, um, where you can also group your chats . Exactly . Element X is the mobile version, which is new. Um, and it looks like a chat client. Um, I don't know what else I can really say about that. Um, there's a list of rooms, um, chats, which you can filter by private, for example, individual or group chats. Then you can tap on a chat and then you can write messages. Um, great, it 's a chat client. So, you've set up Synapse or something similar, and now you want a little more. Now you want to use some more cool features. Then, um , there is the, uh, exactly, I'll show it to you this way now. So, there is Matrix Authentication Service. Uh, it's kind of an add-on for Synapse, but theoretically other servers could also use it, server software. Uh, it manages all the accounts located on the server and the devices logged into those accounts. This is linked to single sign-on systems. If you want to implement Single Sign-On with Synapse, there are practically no other options available anymore. Uh, and it enables QR code login, so you can say on your phone, okay, I want to scan a QR code, and on your computer I say, I want to connect a device, and then it scans it, like you might know from Signal or similar services. This is a separate piece of software that allows OIDC to communicate with Synapse; it's essentially an OIDC that can be placed alongside it, because theoretically it's designed so that other server software could also be connected to it. Then the topic of moderation always somehow comes up . Especially if you're running a server where not only you are on it, but other people are too, you might want to moderate chats. There are public chat rooms, the Hackspace chat, whatever . Um, and then it receives spam reports from users. Spam reports are currently only reported to the server administrator. And now I want to somehow ban people from servers . For that, there's Traubenier, which is also kind of a bot that you simply place next to it. He then simply opens a chat with you , sends a message, okay, a new spam report has come in. Then you press ban and he bans you once in all the chats where he is supposed to ban. Additionally, there are also community lists, meaning you can, for example, subscribe to Community Moderation Effort in this bot and then say, okay, if trusted community members go here and say that the user should be banned, then he will automatically be banned from all my chats and I don't have to do the work myself, or rather, he ca n't join me there. So, you've somehow set up a Synapse, want to manage it, and perhaps have many users who are in many rooms. There's Kitsune, which is a Synapse Admin fork. Element Admin is now also available, but it can do a bit more. I can easily administer it there; I have a list of rooms, a list of users, and a list of uploaded media. In case of doubt, I can simply deactivate a user, delete user rooms, and similar things. I also see information about the Federation. We've already touched on the fact that there's federation, you know how it is with email, that something might break or get lost, that's also a problem with Matrix. But then I see, for example, that okay, I've already federated with this chat, with these servers, and I last sent a message to this server, and maybe that didn't work, so I try it again and again . If you have a feeling that messages aren't arriving right now, you can always check it and see, ah, okay, the server actually does n't have a connection right now, and then take the next step into the log and see what the reason is. Mostly when you've broken your own internet connection . Then there's Element Call, which is similar to what you might expect from traditional chat apps – the ability to make calls , which was previously implemented via Jitsi . The newer variant is Element Call. This then works directly in Matrix and uses WebRTC. This is also encrypted. Which is somehow an advantage over Jitsi. And it can be used in the browser, in Element Desktop, and in Element X. However, to use it, in addition to your Synapse, you also need a separate Element Call Server, which handles all the call-related tasks. Then you might have the problem, which XKCD illustrates a bit, that you have many groups of people using different chat services, and now you go and say, yes, Matrix is ​​great, I'll do that now, and then you have yet another chat service. Perhaps only another group of people deserve to use it. For this purpose, there are Bridges, which are essentially small pieces of software that you place next to your server, and the Bridges then transfer chat messages, e.g. from WhatsApp, into your Matrix, essentially impersonating a local Matrix account. So that in Matrix it actually looks like you're having a real chat with this person. And the person who is somehow messaging you on WhatsApp wo n't see this either, because they are messaging normally with your WhatsApp account. Exactly, it's available for Discord, Slack, Signal, WhatsApp, Zulip and many other services. They are almost all community maintained, though of course with varying quality and different amounts of time that people put into them. And I've somehow, I don't even know, been productive with WhatsApp Bridge for six or seven years now , and it's definitely improved. And you practically don't need to use WhatsApp for that. And you can still reach the people who only write to you on WhatsApp . Then we briefly talked about federation . Now, of course, I want to test it somehow; I've set up my server, have I configured it correctly? There are instructions, which I can of course follow, but in the end I want to see, okay, it works. For that, there's the Matrix Federation Tester, or rather, several of them these days. This is now the one under federationtester.mtnord.blog. I enter my server domain, press test, and then it tells me green, federation works, or red, it does n't work, something is wrong here. This also works with all server software, including Conduit, Continuity, Synapse, and whatever else is out there. Okay, last but not least, Matrix Docker Ansible Deploy. I just mentioned a lot of services; we need to install them somehow. Um, the way to do this, at least somewhat on the community side, is Matrix Docker Ansible Deploy. I do n't know if any of you have ever used Ansible before. Anyway, it's such a big Ansible playbook with a whole lot of stuff, but in the end I have a config file and I say okay, I'd like Synapse or I'd like Continuity, I'd like to have Element Co next to it , I'd like to have Matrix Authentication Service next to it, I just say true true true, I might have to configure one or two secrets, but it also automatically deploys a database for me, it automatically deploys a reverse proxy, takes care of SSL and then it runs once and it just works and then I can run it again every now and then and then exactly. Will it be updated? This can also work with different bridges; for example, I now simply operate the WhatsApp Bridge by saying, "Okay, create a WhatsApp Bridge for me," and then it does that . Exactly, the alternative is, if you already have a Kubernetes cluster lying around, Element now also offers a Helm package, but it does n't handle things like bridges and such for you, and you can of course install all of that manually. There are Debian packages for Synapse, for example, and there are things for Synapse in Pip, and the bridges are usually Go binaries or something similar. But that becomes quite a lot to manage when deploying something larger, and that's where this tool comes in, which essentially does it all for you. Exactly, I've just told you how expensive all of this is, why you want it, and what you want. Now we'll briefly touch on some problems, especially problems that are mentioned more frequently. That includes, firstly, the ability to find rooms. This is particularly relevant if you are running a public server or if you want to find rooms. There is a central room register once per server, which means that when you are on the server you can see, okay, the server recommends the following rooms for me to join. If the server allows it, you can also check what another server recommends, joining rooms from room to room, but this is always a very manual process that you then have to do on a small scale . Then there are Spaces. Exactly, I already mentioned that it's kind of the equivalent of Discord servers. Ultimately, it's just a room containing a list of rooms, where I can then say, okay, you just need to join this one and then you'll see all the available chats. But of course, I still have to somehow get that to the people. So, the least painful solution right now is either to have automatic invitations. We experienced that ourselves here at Dub IT, for example. This means that if you bought a breakfast ticket, you were asked for your Matrix ID. You could enter your details there and then you were automatically invited to a room. Especially if you're running this on an institutional level, I don't know, in a hackspace for example , you can of course say, okay, all users should be invited to the main hackspace room. Alternatively, as we do in the student council, for example, we simply have a page with lots of links, and then you click on the link and then you can join the room. This isn't exactly the most elegant solution, but from my point of view, other services also have this problem. Then encryption problems. I think that's the first thing you notice when you read up on things about The Matrix on the internet. Lots of "Could not decrypt message". It's really not as bad as some people suggest anymore . It used to be much more broken. A lot of engineering work has gone into making sure that this is no longer the case. It still breaks down from time to time , especially due to fundamental reasons, for example, if a server is offline, then it ca n't send me the encryption data, um, and things like that. Exactly, then the bigger problem from my point of view is that metadata is not encrypted. This means that, in particular, the information, uh, which rooms exist, the description in the rooms, the titles of the rooms, the pictures of the rooms, um, and who is in this room , will not be encrypted. They are simply stored on the server . Um, the conclusion is basically this: just run your own server, then you are in control of this data and then you don't have to worry so much that it is not encrypted. But of course, running your own server is always a good thing in such a federated system. Uh, that increases the federation, uh, that somehow makes the network bigger, that's great. Exactly, and last but not least, uh, UI and UX. As I just showed you, the UI isn't always completely suitable for normal users. Element X is starting to do a really good job; it's easy to use. Otherwise, depending on the client, especially if you're running this in a larger institution, perhaps at work , you'll need some kind of guide that says, okay, um, you'll set up your encryption using the following steps . And yes, the key where you are told to please save the recovery key safely, please save the recovery key safely. Exactly . Um, if in doubt, if you're doing this for a larger number of people, maybe at work, write instructions and help with problems, then it will work. Oh, that wasn't the last problem at all. The last problem, changing the home server, um, exactly. As I mentioned at the beginning , an account is always tied to a home server, um, and cannot be moved. However, there are tools available to automatically move the chats. It's all a bit hacky, not very nice, so you should either find a server you want to stay on or set up your own. I've had to switch home servers twice, and both times it was a bit of a hassle. Exactly, then we'll go into a little more detail , um, perhaps adding this a little later, what actually entitles me to give this talk . Um, exactly. At fachschaften.org, um, that is a project of the KIF e.V. located at the computer science student association of TU Dortmund. Um, we host two Matrix servers for students in the attic. Um, exactly, we now have, this is the statistic, about 400-500 monthly active users. Um, exactly, one is fachschaften.org, um, and the other is KIFrocks, which is uh the one for the conference of computer science student associations. And then I just took a look and saw how much power we actually need right now. This is, mind you, without a database; this is just Synapse. Um, and the data is a bit older, but it's probably still accurate. Uh, we have some kind of VM with eight cores and six gigabytes of RAM. And then you see, we need just about four and a half gigabytes of RAM and about 25% CPU usage, um, but that's already a server where, as I said, there are quite a lot of users and we also have some power users who are in the really big chat rooms, um, with thousands of users, where there's a lot of federation traffic. Um, at home I have a VM with two cores and four gigabytes of RAM with Synapse in it, and it works great. No problem at all. Um, well, you can get by reasonably well with that, and you can also run a Synapse with a reasonable hardware size. Um, otherwise there's Conduit and Continuity, which are both written in Rust and therefore probably much better. Exactly . Bridges, which I just mentioned and praised so highly, um , but in our experience they are more suitable for smaller deployments. Uh, we used to have a Telegram bridge, but that was with the old software; there's a new one now, and we simply had to shut it down after rebuilding it several times because it kept running into bugs. Um, so please do something for home usage; the same Telegram Bridge works great as long as one person is logged in. That's also kind of the case where it's being tested. Um, my WhatsApp Bridge, as I said, has been running for about six years now. It is, it is great. Um, but don't make it for tall people. It's better not to say, "Okay, we have Telegram here, so we're going to do Matrix and bridge all the chats over." This leads to terrible UX on both sides, and it also results in the admin people ending up crying. The admin person in the audience nods. Exactly, so to summarize, Matrix is ​​a federated chat protocol. This means the servers send messages to each other. You don't have a dedicated server. A room does n't have a dedicated server, but your user does. Um, it allows encrypted communication between accounts on two servers or on the same server, obviously. Um, there's something kind of cool about it. Uh, individual configurations, um, through various extensions and different servers. Uh, video calls are now also supported. Exactly, and then the question would be, do you have any further questions? Yes, very cool presentation, thank you. Are the video calls also end-to-end encrypted? Perfect, okay. Basically, I want to encrypt all traffic that passes through it end-to-end. So, if it's an element of a call space, it's ultimately just a matrix space. That means I assume that the room's metadata is also not encrypted. Um, but the video and audio traffic is encrypted. OK. That 's my current understanding. Would you like to elaborate on that? That cannot be said definitively; there are different revisions of the protocol. I believe that in the version that should eventually become stable, at least enough metadata would be encrypted that it would n't be clear that you even started a call, but perhaps negligible in this respect. If there are no further questions, thank you for listening and I hope you have a lot of fun at Do What.