Concord: a Discord-alternative theme for Discourse

AI-generated summary

The discussion introduces Concord, a self-hosted, open-source theme that transforms Discourse into a Discord-like community platform with channel-based navigation. awesomerobot explains that the theme maps Discourse categories to forum channels, chat channels to text channels, and voice rooms to voice channels, all displayed in a custom sidebar. Key features include full-page chat views, role-based member lists, and specific handling for subcategories and private voice channels.

Community feedback highlights both enthusiasm and areas for improvement. gilles praises the initiative but notes that chat lacks certain Discord features like polls (though awesomerobot points out an existing poll feature request). jillian sees it as a bridge between user preference for Discord and admin preference for Discourse.

pmusaraj provides technical feedback, suggesting a home button, logo support for site names, and better placement of header outlets. awesomerobot responds by clarifying the Discord-style lack of a traditional homepage while confirming that home buttons, logos, and outlet adjustments are easy additions currently being implemented via pull requests.

Finally, users discuss migration tools from Discord to Discourse, with nathank and RGJ linking to exporters and plugins that facilitate moving message history, easing the transition for communities.

:information_source: Summary A self-hosted, open-source Discord alternative: turn Discourse into a channel-based community with text, voice, and forum channels.
:hammer_and_wrench: Repository github.com/awesomerobot/concord
:question: Install Guide How to install a theme or theme component
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme

When you use Discourse to run your own independent site you can choose your policies, allow your site to be publicly viewable, and publish content to be indexed by search engines and crawlers. Plus you can extend it and restyle it however you’d like!

Concord makes everything a channel and shows all channels in a custom sidebar:

  • Categories are forum channels
  • Chat channels are text channels
  • Voice rooms (from the voice plugin) are voice channels
  • Tags can optionally be tag channels too

The custom header contains a dropdown menu with site-wide pages (about, groups, badges, admin, etc) which is next to the current channel’s name, description and actions. Direct messages live in their own view, and there’s a member list right sidebar showing who’s online.

:warning: This dramatically changes the layout of Discourse, so it won’t be compatible with every plugin or theme component. It also depends on some very recent changes in core, so make sure you’ve updated Discourse before installing it (you’ll need a build from October 15, 2026 or later).

Setting it up

Concord requires a few site setting changes, so here’s what to check in your Discourse site settings after you install it.

As an admin, you can view all these settings simultaneously by pasting this to the end of your Discourse URL:

/admin/site_settings/category/all_results?filter=any:navigation_menu|default_homepage|chat_enabled|chat_allowed_groups|enable_public_channels|voice_allowed_groups|voice_create_room_allowed_groups|enable_user_status|tagging_enabled

:information_source: Note that you need to enable voice from upcoming changes to see the relevant settings, /admin/config/upcoming-changes

Site Setting What to set it to
navigation menu sidebar (required, the channel list is the sidebar)
chat enabled enabled if you want text channels and DMs
chat allowed groups whoever should be able to chat, include anonymous_users for logged-out viewing
enable public channels enabled so staff can create text channels
live enabled enabled if you want Live channels (audio/video)
live allowed groups whoever should be able to join Live channels
live create room allowed groups whoever should be able to create Live channels
enable user status optional, statuses show up on avatars in the user panel and header
tagging enabled optional, only needed if you turn on the theme’s include tags setting
default homepage optional, but you can now set this to a chat channel of your choosing

Creating channels

The + next to your site name opens a “create channel” modal. It only offers the channel types you’re allowed to create:

  • Forum creates a category (anyone who can create categories)
  • Text creates a chat channel (staff)
  • Voice creates a voice room (the voice create room allowed groups setting)

Each type can be made private to a set of groups. You can change this later from Privacy in the channel’s … menu from the sidebar.

In Discourse, chat channels get their permissions from a category, so each text channel you create in this theme gets an empty “backing” category, nested inside a chat-channels parent category. These categories are hidden from the channel list, so you shouldn’t need to think about them… but don’t post topics in them (regular users aren’t allowed to)! When you delete a text channel from its … sidebar menu, its backing category is deleted too.

Organizing sidebar channels

Channels can be grouped into collapsible sections. Admins can create, rename, reorder and delete sections from the … menu on a section heading, and move channels between them from the … menu on each channel. Anything not in a section is listed at the top, alphabetically.

Sections are site-wide, so everyone sees the same layout. Changes show up for other people the next time they load the page.

Theme settings

Name Description
include tags List the user’s sidebar tags as channels (off by default)
include chat channels List chat channels as text channels (on by default)
ai conversations link Show a button for AI bot conversations next to the site name, for people who can use them (requires Discourse AI with Chatbot enabled)
remember last channel Reopen the channel someone was last in when they come back to your site
chat container category Slug of the category that holds the backing categories for text channels, defaults to chat-channels
sidebar sections The sections and the channels in each, you can manage these from the sidebar, this is just where the data is stored
member list roles Groups shown as roles at the top of the member list, in order (admins and moderators by default)

Other things to note

  • Everyone sees every channel they have access to, there’s no way (yet) for people to hide individual channels from their own list. Muting a channel still works as usual for notifications.
  • Opening a text channel joins it, just like Discord. If someone leaves a channel it’ll still be listed, so muting is the better option for quieting one down.
  • Subcategories don’t get their own spot in the channel list, instead they’re shown as boxes at the top of their parent’s forum channel. The theme generally suggests a flat structure, but you can choose a parent category for a forum channel by editing it after creation.
  • Deleting a text channel from chat’s own settings page is hidden for channels with a backing category, so they’re always deleted from the channel’s … menu (which also cleans up the category). If a channel gets deleted some other way, like through the API, the backing category is left behind and you’ll want to remove it yourself.
  • Chat always opens full page, never in the drawer.
  • “Online” in the member list means active anywhere on the site in the last few minutes, not just in chat. People who hide their presence stay hidden.
  • On sites with a very large number of channels, only the first 500 text channels are loaded into the list. Similarly, a private chat channel’s member list loads its first 250 members up front, and the rest as you scroll.
  • Making a voice channel private adds the current members of the groups you pick (up to 200). People who join those groups later won’t get access automatically, since voice rooms don’t have group permissions. You’ll have to invite additional members manually.
  • If you switch away from Concord later, the backing categories for your text channels will still be there (and visible on /categories), so you may want to delete those.

There’s still so much we can do here, but this is a solid foundation if you’re looking for a Discord alternative you can self-host (or use on our paid discourse.org hosting!).

As always, feedback and thoughts are welcome!

31 Likes

Bravo, that’s a great initiative @awesomerobot. It helps reach other users. But I think the chat is missing quite a few options, like polls or cosmetic goodies. Since I don’t really like Discord, it doesn’t bother me at all :rofl: On the other hand, I love Discourse :smiling_face_with_three_hearts:

4 Likes

Yes, this is still very much Discourse chat in a different wrapper for navigation… if people are interested in more Discord-like chat features that’s always something good for Contribute > Feature (oh which I just noticed you already have for polls! Sondage pour le chat)

5 Likes

Really interesting and perfect for the folks who are stuck between users wanting Discord but admins who want to be on Discourse. I am intrigued!

4 Likes

@awesomerobot some feedback on the theme, been testing it a bit today.

Also

  • I am missing having a way to go back to Home, especially when in an admin screen
  • can the site name be a logo? communities will likely ask for this
  • would be good to render the outlet next to the top-right header icons, for things like the translation dropdown (otherwise it’s invisible)
2 Likes

In true Discord style, there is no homepage really. You land on an introduction channel or whatever you have set as a homepage on first login, but other than that, when you come back you always end up where you were last.

It’s easy enough to add a home button though!

To get out of admin, the supported path is “back to all channels” but I can simplify that area and make it easier

good points, these are easy additions!

Putting the home link and logo behind settings if anyone wants to disable them.

3 Likes

Now all we need is a nice migration tool from Discord to Discourse and we can migrate in those pesky Discord servers sweetly!

This seems to be a good start:

2 Likes

There is also Roberts plugin

5 Likes

It’s a great initiative, but it lacks quite a few options compared to Discord for the chat part. It might be worth offering a free, ready-to-use Discourse Chat version in addition to the Discourse plans. It would be cool to see some providers or service vendors switch from Discord to Discourse Chat in the future.