The short answer
For a gaming or hobby community moving off Discord, pick Fluxer: it is built to look and work like Discord, with communities, categories, roles with permissions, voice channels, Go Live-style screen sharing, timeouts, an audit log and Discord-style webhooks, and it comes in Swedish. It needs about 650 MB of memory at rest and 4 GB of images, it does not encrypt messages or calls end to end yet, and it does not federate: everyone needs an account on your instance. Pick Matrix if you want privacy first or a community shared with other organisations: direct messages and private rooms are encrypted end to end, calls in those rooms too, people can join from their own Matrix servers, and it ran in under 200 MB. It feels less like Discord: no voice channels, no timeout, no audit log, no webhooks of its own, and roles are numbers per room. Stoat, formerly Revolt, can be self-hosted from its own repository, but most of its official apps do not connect to your own server; we describe it from its documentation only. For chat at work, see our Slack alternatives instead.
What we tested
We installed both on the same fresh Melonslab VC-P Alloy (2 vCPU, 8 GB) with Debian 13 by following our guides step by step: Fluxer with rootless Podman, and a Matrix server with rootless Podman with the Matrix calls guide. Fluxer's documentation asks for 8 GB, and both fit on that server at once: with both running and idle, the whole server used 1.6 GB, including Caddy and the system. Each ran under a user of its own, behind the same Caddy. Every step in the guides worked as written.
Then we set up the same community, Klubben, in both:
- three people: Anna, who owns it, Bo, the moderator, and Cecilia, an ordinary member, who joined through invitations;
- the channels general and spel, and a private moderatorer for the Moderator role only, plus a voice channel in Fluxer;
- a Moderator role for Bo, allowed to kick, ban and time out members and remove messages;
- the same Swedish messages, such as "Välkomna till Klubben! Semestern börjar vecka 28, glöm inte att söka friskvårdsbidrag före juni." and "Fakturan från Göteborg är betald. Turneringen i Älvsjö är på lördag.", with reactions, a reply, a mention, an edit, and a thread under Anna's first message where Cecilia answered;
- files of 3 MB and 30 MB, which Cecilia downloaded with the same checksum.
We then ran the same Swedish searches as Bo and as Cecilia, sent an alert to an incoming webhook, had Bo time out, kick and ban Cecilia, switched the interface to Swedish, and held a video call between Bo and Cecilia in two headless Chrome browsers with fake cameras and microphones, where Bo also shared his screen. In Matrix, we used Element Web from app.element.io, the same Element our guide suggests. We set most of the community up through each app's API, as the same three people, and used the browsers for setup, threads, calls and the Swedish interface. Finally we rebooted the server and measured memory at rest.
Discord itself was not tested. We did not sign up. What this page says about Discord comes from Discord's own pages, linked where we use them and read on 14 October 2026.
The numbers
| Fluxer 2026.1014.3120 | Matrix: Synapse 1.162.0, with calls | |
|---|---|---|
| Containers | 25 | 2: Synapse, PostgreSQL 18; calls add LiveKit and an authorization service |
| Memory at rest after a reboot | 647 MB (API 188, worker 168, gateway 87, Meilisearch 76) | 171 MB (Synapse 135, PostgreSQL 17, calls 19) |
| Memory during a video call with screen sharing | about 920 MB | about 250 MB |
| Images on disk | 4.0 GB | 0.66 GB, and 0.12 GB for calls |
| Data after the test | 89 MB, 33 MB of it our files | 109 MB, 33 MB of it our files |
From useradd to a working site | about 4 minutes, then a setup wizard in the browser | 63 seconds, and 14 seconds for calls |
| Largest upload, as set up | 500 MB by Fluxer's documentation, with Everyone is premium; 30 MB tested | 50 MB, Synapse's default; 60 MB failed |
| Roles | named roles with permissions, as on Discord | power levels per room: 0, 50, 100 |
| Voice channels | yes | no; calls are started in a room |
| Screen sharing | yes, 1080p received | yes, 1080p received |
| Timeout, audit log | yes, both | no, neither |
| Incoming webhook | Discord and Slack format | none built in |
| End-to-end encryption | none, also not in calls | private rooms, direct messages, and calls in them |
| Federation | no, one instance | yes |
| Swedish interface | yes | yes, in Element |
| Licence | AGPL 3.0 | AGPL 3.0, or a paid commercial licence |
Memory is the sum of each app's containers, measured with podman stats five minutes after a reboot, and again while Bo and Cecilia were in a video call with Bo's screen shared. Times are how long the guide's commands took to run, mostly downloading images, not the time you need to read and type them.
Setup
- Fluxer is 25 containers: its own services, PostgreSQL, Valkey, NATS, Meilisearch, Garage for files, LiveKit for calls and a small Caddy that routes requests. The guide has many files to create, and the first start downloads 4 GB, which took about four minutes. The rest happens in the browser: a setup wizard, opened with a token from the log, creates the admin account and asks for the sign-in method, the registration policy and the premium model. Calls come with it, on UDP port 7892 and TCP port 7891.
- Matrix is two containers, and two more for calls from a second guide. It needs two small files on your main domain, so that addresses can be
@anna:example.com, and that server name cannot be changed later. There is no admin web interface: accounts are created from the command line.
Communities, channels and roles
Fluxer is organised like Discord. A community has categories with text and voice channels, and each channel can be made private for chosen roles. Roles have names, colours and permissions, set the same way as on Discord: we made Moderator with kick, ban, timeout, remove messages and view the audit log, and gave it to Bo. Cecilia did not see moderatorer at all, and reading it answered "You don't have the permissions required to perform this action." Invite links work as on Discord, but on a closed instance, as in our guide, a newcomer first needs a one-time registration link from the admin dashboard.
Matrix, through Element, is built from rooms, gathered in a space. We made a space, Klubben, and let its members join general and spel by themselves. moderatorer was invite-only, and Cecilia got "You are not invited to this room." There are no named roles: each room gives every person a power level, where 50 is moderator and 100 admin, and Element calls them roles. You set them per room, not once for the space. There are no voice channels either; any room can hold a call.
In both, messages arrived at once, and reactions, replies, mentions, edits and threads worked. Fluxer creates a thread from a message, as Discord does, and shows it under the channel in the sidebar; Element shows threads in a side panel.
Search, in Swedish
We ran the same searches as Bo and as Cecilia, and both apps kept Cecilia's results to what she could see.
| Search | Message says | Fluxer | Matrix |
|---|---|---|---|
semestern / semester | "Semestern" | found / found | found / no |
friskvårdsbidrag / friskvård | "friskvårdsbidrag" | found / found | found / no |
bidrag | "friskvårdsbidrag" | no | no |
fakturan / faktura | "Fakturan" | found / found | found / no |
göteborg / goteborg | "Göteborg" | found / found | found / no |
älvsjö / alvsjo | "Älvsjö" | found / found | no / no |
konferensrum | "konferensrummet" | found | not searched: in an encrypted room |
vem | "Vem tar vecka 29?", in the thread | no | found |
Fluxer searches with Meilisearch, which matches the start of words and ignores accents, so shorter forms and words typed without å, ä and ö found their messages. It also returns messages that match only some of the words: vecka 29 found the message about "vecka 28". But messages in threads were not found at all, by anyone.
Synapse matches whole words only, with no Swedish word forms, and does not find älvsjö in lower case, as our Matrix guide explains. It found the thread replies. And it cannot search encrypted rooms at all: there, only Element's desktop app searches, on each person's own computer.
Voice, video and screen sharing
Both made a video call between Bo and Cecilia with sound and video both ways, through LiveKit on our own server, and in both Cecilia received Bo's shared screen at 1920 × 1080.
- Fluxer works like Discord: you click a voice channel and are in, and the bar has the camera, Share your screen and Disconnect. A shared screen shows as LIVE with a Watch stream button, as Go Live does. Fluxer used about 920 MB during the call, against 650 MB at rest.
- Matrix calls are Element Call, started from a room's Video call button; in a group room, Element also offers Jitsi Conference. In the rooms we had created through the API, Cecilia, an ordinary member, could not join until we let members send call events in the room's permissions: Element answered "You don't have permission to post that to the room." Synapse used about 30 MB more and LiveKit about 50 MB during the call.
For our test, LiveKit and Element's authorization service had to trust Let's Encrypt's test certificates; with real certificates, as in the guides, that is not needed.
Moderation
- Fluxer has what a Discord moderator expects. Bo timed Cecilia out for ten minutes, and her next message was refused with "Communication is disabled."; he kicked her, banned her, after which the invite answered that she was banned, and lifted the ban. Every step showed in the audit log, which Bo could read. Community settings also have member verification levels, from a verified email to ten minutes of membership, a filter for explicit images, a 2FA requirement for moderators, and a Discovery listing for your own instance. We found no AutoMod with word filters. The admin dashboard covers the whole instance: users, communities, reports and bans.
- Matrix has kick, ban and message removal per room, all of which Bo could do with power level 50, and a ban stopped Cecilia from joining with "Cannot join user who was banned". There is no timeout, no audit log beyond each room's history, and no automatic filtering in Synapse itself; bots such as Draupnir or Mjolnir add that, which we did not test.
Webhooks and bots
Fluxer has incoming webhooks per channel, with the same URLs as Discord. Our alert in Discord's format, with an embed, was posted as Övervakning, and the same webhook took Slack's format at /slack. Its API follows Discord's closely: the community, channels, roles, invites and messages in this test were made with Discord's endpoints. We did not try existing Discord bots against it.
Matrix has no webhooks of its own; a separate service such as Element's matrix-hookshot adds them, which we did not test. A bot is an ordinary Matrix account that a script logs in as. Our Slack comparison covers this in more detail.
Encryption and privacy
Fluxer encrypts nothing end to end today: messages, files and calls can be read on the server, and LiveKit reported our call as unencrypted. Its home page, read on 14 October 2026, plans end-to-end encryption for calls with DAVE, the protocol Discord uses, and an experimental draft for direct messages in 2026. Uploaded files can be opened by anyone who has their exact address, without logging in, much as on Discord.
Matrix encrypts direct messages and private rooms by default in Element. Bo's message in the encrypted moderatorer was not in Synapse's database as text, only as an encrypted event. Our call in an encrypted direct message was encrypted end to end too, which LiveKit reported. The price is the same as at work: users must keep a recovery key, Element reminds them with "Back up your chats", the server cannot search encrypted rooms, and bots must support encryption. Files need a login to download.
On both, the data stays on your server, in Sweden if the server is. Neither asked our users for their age or an ID.
Federation or one instance
Matrix is federated, like email: a member of your community can use an account on another Matrix server, or on matrix.org, and join your space from there, and your users can join rooms elsewhere. That also means your server stores copies of the rooms your users join on other servers.
Fluxer is one instance: everyone in your community needs an account on your server, and your users cannot join communities on fluxer.app or another instance with that account. Fluxer's home page plans an experimental draft of federation in 2026 and a stable release in 2027.
Apps for computers and phones
- Fluxer runs in the browser. Its download page lists apps for Windows, macOS and Linux, with iOS and Android in public beta. Its 2026 roadmap says the desktop app connects to self-hosted instances as of 12 October 2026; for the phone apps, it does not say. Notifications to the official phone apps go through Fluxer's push relay, once you accept its notice, as our Fluxer guide explains.
- Matrix has Element on the web, for Windows, macOS and Linux, and Element X on Android and iOS, and many other apps, all of which connect to any Matrix server. Push notifications go through Element's push service.
We tested the web apps only: our test server had test certificates that the apps do not trust.
Swedish
Both are translated into Swedish. In Fluxer, the language follows the browser, or Language in the settings; when we switched Cecilia to Swedish, the message menu showed "Lägg till reaktion", "Svara" and "Vidarebefordra", and even errors came in Swedish, such as "Den här användaren är bannlyst från den här communityn." Element switched to Swedish too, with "Trådar", "Videosamtal" and "Sedd av 2 personer".
Resources
Fluxer needs about 650 MB at rest and close to a gigabyte during a call, and its documentation sizes it for 8 GB, 16 GB for a small, busy community. Matrix stayed under 300 MB through the whole test. Both fit side by side on a VC-P Alloy with 8 GB.
Updates and backups
Both guides update with podman auto-update. Fluxer publishes new images several times a day under the v1 tag; Synapse is released every few weeks. Fluxer's backup in its guide stops Fluxer for about a minute to copy its files, search index and queues; Matrix's backup is a database dump and one volume, taken while it runs. Both guides restored their backups in their own tests.
Licence and cost
What follows is from each project's own pages, read on 14 October 2026.
- Fluxer is AGPL 3.0. Its self-hosting page says "There is no license key and no reduced edition", and that there is no Plutonium, its paid plan, on a self-hosted instance. During setup you choose Everyone is premium, which gives everyone the highest limits, or keep free and premium tiers and sell your own premium through Stripe. On Fluxer's own service, Plutonium costs SEK 49 a month or SEK 490 a year, and lifts streaming from 720p at 30 fps to 4K at 60 fps and uploads from 25 MB to 500 MB.
- Synapse is AGPL 3.0, or a paid commercial licence from Element, according to its README. Element's pricing page lists ESS Community, free and AGPL, for 1–100 users, and ESS Pro priced per user and month. Our guides use plain Synapse, which has no paid features.
On your own server, both cost the server and nothing per member.
Discord today
What follows is from Discord's own pages, read on 14 October 2026, not from our tests.
- Price. The Nitro page showed Nitro at $9.99 a month and Nitro Basic at $2.99, in US dollars, with prices that vary by country. Nitro includes two server boosts, custom emoji from any server, bigger profiles and larger uploads.
- Uploads. Discord's pages disagree. Its limits page lists 10 MB for free accounts, 50 MB for Nitro Basic and 500 MB for Nitro, the Nitro page says up to 1 GB, and its attachments FAQ says 20 MB without Nitro and that Discord is "experimenting with various file upload size limits".
- Boosts. Server boosting raises a whole server: level 1 at 2 boosts gives 128 kbps audio and 720p 60 fps streams, level 2 at 7 boosts 1080p 60 fps and 50 MB uploads, and level 3 at 14 boosts 384 kbps audio and 100 MB uploads.
- Go Live. "All users can stream up to 720p/30fps", and Nitro subscribers up to 4K at 60 fps, according to Discord's Go Live article.
- Scale. The limits page lists up to 25 million members per server, 25 people in a voice channel with video, 50 viewers of a Go Live stream, and 10,000 listeners in a stage channel.
- Encryption. Since 2 March 2026, calls in direct messages, group messages, voice channels and Go Live streams are end-to-end encrypted with DAVE, according to Discord's E2EE article; stage channels are not. Text messages are not end-to-end encrypted, as Discord's DAVE post says.
- Privacy. Discord's privacy policy says "we process and store information on servers located in the United States". According to its blog from September 2026, Discord places users in an age group from account signals and asks some to confirm their age, with methods including a video selfie or an ID scan. In October 2025, Discord reported a breach at 5CA, a customer service provider, where about 70,000 users "may have had government-ID photos exposed".
- Discovery. A server set up as a Community server can apply to be listed in Server Discovery, where anyone on Discord can find it.
Stoat, formerly Revolt
Revolt is now called Stoat, at stoat.chat. We did not install it: we have no guide for it, and this is from its own pages, read on 14 October 2026.
- Self-hosting is supported from its self-hosted repository, which renamed its Docker Compose project from revolt to stoat on 5 October 2025, and was last changed on 7 October 2026. The server's latest release was 0.15.7 on 25 September 2026, with 0.16.0 in testing since 13 October. It is AGPL 3.0.
- What it runs: MongoDB, Valkey, RabbitMQ, an S3 store, Caddy and Stoat's own services, with voice and video through LiveKit, which needs TCP port 7881 and UDP ports 50000–50100. The README warns that Stoat "will kick any user that attempts to stream a video that is larger than the maximum size".
- Apps: "Currently, most official clients do not support self-hosted instances. The web client works well", says the README. On your own server, people use the web app.
- Branding: its FAQ says you may not use Stoat's name or branding to promote your own instance, and changes to the code must be published, as the AGPL requires.
- End-to-end encryption is not there yet; an open issue from September 2026 describes plans to build it with MLS.
So Stoat is realistically self-hostable for a community that uses it in the browser. It is close to Discord in layout and actively maintained, but with no phone apps for your own server, Fluxer covers more today.
What you give up compared with Discord
Your own server keeps your community's messages in Sweden, costs a fixed server price, asks nobody for an ID, and no platform can close your server. But be honest about what you leave:
- Reach. On Discord, most of your members already have an account and the app, and Server Discovery brings new people. On Fluxer, everyone signs up on your instance; on Matrix, many need to pick a server first.
- Go Live and voice quality at scale. Discord streams up to 4K at 60 fps with Nitro and holds 25 people on video. We tested two people; how far one 8 GB server carries a busy voice channel, we did not measure.
- Nitro and boosts. Custom emoji across servers, animated profiles and boost perks have no match on Matrix. Fluxer has its own emoji and stickers per community, and Everyone is premium gives everyone its top limits for free.
- Games. Rich presence from games, Activities and Discord's app directory do not come along. Discord bots must be rewritten or adapted; Fluxer's Discord-like API makes that easier.
- Moderation tooling. Discord has AutoMod and a large ecosystem of moderation bots. Fluxer has timeouts, verification levels and an audit log, but we found no word filters; Matrix needs bots for most of it.
- Uptime. Discord runs the service. On your own server, updates, backups and outages are yours.
Which one to pick
Gaming and hobby communities: Fluxer. It is the closest to Discord we have tested: voice channels, screen sharing with a Watch stream button, roles with permissions, timeouts, an audit log, Discord-style webhooks and an API that follows Discord's, in Swedish. Its weak points: 25 containers and 4 GB of images, about 650 MB at rest, no end-to-end encryption yet, no federation, search that skips threads, and phone apps whose support for your own server Fluxer does not yet state. Follow the Fluxer guide, on a VC-P Alloy, the 8 GB Fluxer asks for.
A company's customer or user community: Fluxer or Matrix. If your members are used to Discord, Fluxer feels familiar, has settings for single sign-on with OpenID Connect in its admin dashboard, which we did not test, and keeps the community on your server. If your community overlaps with partners or other organisations, Matrix lets them join with the accounts they have. For chat among your own staff, see our Slack alternatives.
Privacy first: Matrix. Direct messages, private rooms and the calls in them are encrypted end to end, the server is small, at under 200 MB at rest, and people can join from any Matrix server. Its weak points: it feels less like Discord, with no voice channels, timeouts, audit log or webhooks, roles are set per room, Swedish search is weak, and users must keep a recovery key. Follow the Matrix guide and the calls guide, on a VC-P Alloy, where it leaves room for other apps.