Migrating Your Discord Server
So you run a Discord server and you're thinking about moving to Matrix. This page walks you through recreating your server structure as a Space, setting up permissions, picking bots, and getting your community across without too much chaos.
Recreating Your Server Structure
Discord Server → Matrix Space
A Matrix Space is your Discord server equivalent. It's a container that holds rooms (channels) and can also hold other spaces (like categories). You create one, give it a name and avatar, and people join it to see everything inside.
Categories → Sub-Spaces
Discord uses categories to group channels. On Matrix, you do this with sub-spaces — a space inside your main space. So if your Discord looks like this:
⬟ Discord
📁 GENERAL #welcome #rules #general-chat 📁 GAMING #minecraft #valorant #lfg 📁 MEDIA #art #music #memes
◆ Matrix
🏠 Your Community (Space)
📂 General (Sub-Space)
💬 #welcome
💬 #rules
💬 #general-chat
📂 Gaming (Sub-Space)
💬 #minecraft
💬 #valorant
💬 #lfg
📂 Media (Sub-Space)
💬 #art
💬 #music
💬 #memes
In Cinny, this looks almost identical to Discord's sidebar — sub-spaces collapse and expand just like categories do. That's one of the reasons I recommend it.
How To Create It
- Create your main Space (Home → "+" → Create Space, or use the
/createspacecommand if your client supports it) - For each category, create a sub-space inside it (in Cinny: right-click the space → "Create Space")
- Create rooms inside each sub-space for your individual channels
- Set the space to public or invite-only depending on your needs
- Copy the
matrix.tolink for your top-level space — that's your invite link
#room-name:zeroprocess.de. Pick short, descriptive names — they can't be changed after creation (you can only create a new room and migrate).
Permissions & Roles
Discord has a complex role system with named roles and per-channel overrides. Matrix is simpler — it uses power levels, which are just numbers.
| Discord Role | Matrix Power Level | What They Can Do |
|---|---|---|
| Server Owner | 100 (Admin) | Everything — full control over the space and all rooms |
| Admin | 100 | Same as owner (Matrix doesn't have a separate owner concept per room beyond whoever created it) |
| Moderator | 50 (Moderator) | Kick/ban users, delete messages, manage room settings |
| Trusted / VIP | 25–49 (custom) | Whatever you configure — e.g., ability to change room topic or pin messages |
| @everyone | 0 (Default) | Send messages, react, read history — the basics |
| Muted | -1 | Can read but not send messages |
Key Differences from Discord
- No named roles: Matrix doesn't have "Moderator" or "VIP" labels that show up next to usernames. It's just a number. Some clients show a shield icon for admins/mods, but there's no colored role tags.
- Per-room, not per-server: Power levels are set per room, not globally across a space. You need to set permissions in each room (or use a bot to sync them).
- No role hierarchy: There's no stacking of roles like Discord. A user has one power level per room.
- Space-level defaults: When you add a room to a space, it can inherit some settings, but it's not as automatic as Discord's category permissions.
Recommended Bots
Matrix has a solid bot ecosystem. You won't find exact equivalents for every Discord bot, but the important stuff is covered. Here's what I'd recommend for anyone running a community:
Moderation
🛡️ Draupnir
The go-to moderation bot for Matrix. Think of it as a combination of Discord's AutoMod + Dyno/Carl-bot. It handles:
- Ban lists (subscribe to shared community ban lists)
- Auto-banning spammers and known bad actors
- Room protection (anti-spam, anti-flood)
- Bulk moderation across all your rooms at once
GitHub · Highly recommended if you're running a public community of any size.
General Purpose
🤖 maubot
A plugin-based bot framework. You install one bot, then load whatever plugins you need. There are plugins for:
- RSS feeds (post updates from websites into rooms)
- Reminders and scheduled messages
- Reaction roles (closest thing to Discord reaction roles)
- Polls, dice rolling, translate, and more
- Karma / reputation tracking
GitHub · Very flexible, great for customizing your space.
🔗 Hookshot
Webhooks and integrations for Matrix. Connects your rooms to:
- GitHub / GitLab (commit notifications, issue tracking)
- RSS / Atom feeds
- Generic webhooks (anything that can POST JSON)
- JIRA, Figma, and more
GitHub · Useful if your community is dev/project-oriented.
Bridging (Keep a Foot in Both Worlds)
🌉 mautrix-discord
A bridge that connects Discord channels to Matrix rooms. Messages sent on one side appear on the other. This is great for a gradual migration — you don't have to hard-cut everyone over at once.
- Bridge specific channels ↔ rooms
- Messages, replies, edits, and reactions sync both ways
- File attachments and embeds are forwarded
- Users on Discord see Matrix messages and vice versa
GitHub · Run this during the transition, then shut it down when everyone's moved.
So how do I get a bot in my space?
| Option | How it works | Who does the work |
|---|---|---|
| I host it for you | I run the bot on my hardware, you invite its account (e.g. @draupnir:zeroprocess.de) into your rooms and give it the right power level |
I set it up, you just invite & configure |
| You self-host | You run the bot on your own machine or VPS, register a bot account on any homeserver, and invite it yourself | All you — full control, but you need the technical chops |
| Public bots | Some community-run bots exist on other Matrix servers that anyone can invite via federation — these are rare and often limited | The bot operator — you just invite the account |
Once a bot account exists, inviting it is just like inviting any other user — you only need invite permission in the room (power level 50+ by default). The bot shows up as a regular member, so give it the power level it needs (e.g. 50 for moderation bots so they can kick/ban).
Migration Checklist
Here's a rough step-by-step for moving your community over:
- Plan your structure — Map out which Discord categories/channels become sub-spaces/rooms
- Create your Space on
zeroprocess.dewith sub-spaces and rooms - Set up permissions — Give your mods power level 50 in each room
- Set up Draupnir (or ask me to) — Get moderation tools in place before people arrive
- Optionally bridge — Set up mautrix-discord so people can chat across both platforms during the transition
- Announce the move — Tell your Discord members what's happening, link to this site, share the Space invite link
- Help people get set up — Point them to the Discord → Matrix guide and recommend Cinny
- Run both in parallel for a while — Don't kill the Discord server immediately, let people migrate at their own pace
- Wind down Discord — Once activity has shifted, archive or close the Discord server
Things Server Owners Should Know
You don't need your own homeserver
Your community's space lives on zeroprocess.de. You don't need to run your own Matrix server — just create a Space and you're good. I handle the infrastructure side.
Spaces can be nested
You can have sub-spaces inside sub-spaces. If you had a big Discord server with lots of categories, this maps cleanly. Don't go too deep though — 2 levels is usually plenty.
Room history visibility
You can set whether new members see messages from before they joined. Options are: "Anyone" (like Discord), "Members only from invite", "Members only from join", or "No one." Set this when creating rooms — it's annoying to change later.
There's no "slow mode" (yet)
Matrix doesn't have a built-in slow mode like Discord. If you need rate limiting, Draupnir can help with anti-flood rules, but it's not as elegant.
No built-in welcome screen
There's no fancy welcome/rules popup like Discord's Server Onboarding. The workaround is a pinned message or a dedicated #welcome room with a clear topic/description. maubot can auto-send a welcome DM to new joiners.
Server emoji work differently
Matrix has emoji packs (via the im.ponies.room_emotes spec). You can upload custom emoji to rooms or spaces, and anyone in that room can use them. It's similar to Discord server emoji but not all clients support it equally — Element and Cinny handle it well.