Self-hosted forum software: an open source community comparison
Forum platforms, marketplace and classifieds systems, Q&A engines and comment servers you run yourself — what each one is built on, what licence it carries, and what it asks of whoever keeps it running.
Choosing self-hosted forum software — for coding forums, support boards or anything between — is usually described as a features question. It rarely is. Almost every platform on this site can post a message, nest a reply, attach a file and send a notification. What separates them is the shape of the conversation they encourage, the language and database they oblige you to keep alive, and how much of your week they claim once real people are using them. That applies as much to coding forums for a small engineering team as it does to a support board with thousands of members.
This is a reference on open source community software you run on your own server: forum software for developers and for everyone else, marketplace and classifieds systems, Q&A engines and comment servers. Self-hosted forum software is the largest part of it, and the part where the choice is hardest to reverse.
Those three things — conversational shape, runtime, and maintenance load — are what this reference is organised around. There are 28 entries in the catalogue across 6 categories, and the comparison pages set them against each other on the rows that actually decide the question rather than the rows that pad a table.
Self-hosted forum software starts with the shape of the conversation
A forum and a chat server both let people talk, and they produce completely different communities. A thread that stays open for three years accumulates a searchable answer; a channel that scrolls produces the same question every fortnight. Neither is better. They suit different groups, and the mistake is picking one because it looked modern.
The traditional board — phpBB, MyBB, Simple Machines — puts categories at the top, threads below, and pages through replies. It is the shape most people over thirty recognise, it is navigable without explanation, and it degrades gracefully: a board with four posts a week still reads as a board. Discourse deliberately broke that model, replacing pagination with a reading position, so a long thread behaves like a document you return to rather than a stack of pages. Zulip, which is filed here under chat, threads topics inside channels and ends up closer to a forum than most forums are to each other.
Federated software — Lemmy, Mbin — adds a fourth shape: your instance is one node, and the conversation continues on servers you do not run. That is either the whole point or a liability, depending on whether you want an audience or a boundary.
Then the runtime — the part of open source community software you actually adopt
A platform is a long-term commitment to a language, a database and an upgrade path. The honest question is not which stack is best but which one someone in the room can already debug at eleven at night.
Forum platforms by runtime
The forum category of the catalogue, with the runtime each one commits you to.
| Platform | Runtime | Licence | Hosting |
|---|---|---|---|
| Discourse | Ruby on Rails | GPL-2.0 | Self-hosted or vendor-hosted |
| Flarum | PHP (Laravel) | MIT | Self-hosted |
| NodeBB | Node.js | GPL-3.0 | Self-hosted or vendor-hosted |
| phpBB | PHP | GPL-2.0 | Self-hosted |
| MyBB | PHP | LGPL-3.0 | Self-hosted |
| Simple Machines Forum | PHP | BSD-3-Clause | Self-hosted |
| Vanilla | PHP | GPL-2.0 (open-source edition) | Self-hosted or vendor-hosted |
| Misago | Python (Django) | GPL-2.0 | Self-hosted |
| XenForo | PHP | Commercial | Self-hosted |
| Invision Community | PHP | Commercial | Self-hosted or vendor-hosted |
| Talkyard | Scala | AGPL-3.0 | Self-hosted or vendor-hosted |
Read that table as a staffing question. PHP on MySQL runs on the cheapest hosting there is and almost anyone can patch it, which is why phpBB outlived most of its contemporaries. Discourse asks for PostgreSQL, Redis and a Docker host, and gives back a genuinely better reading experience; it is a fair trade only if somebody is comfortable with that stack. NodeBB wants Node.js and a choice of three databases. Misago is a Django application, which is either an obstacle or a gift depending on what the rest of your infrastructure already speaks.
Licence matters less often than people expect, and then matters enormously all at once. Most of the catalogue is GPL, MIT, Apache or BSD. Two of the forum entries — XenForo and Invision Community — are commercial: you buy a licence, you get the source, and you accept a renewal line in the budget. Communities that outgrew a free board and wanted someone to call have been making that trade for twenty years.
Marketplaces are a different problem wearing similar clothes
A marketplace looks like a forum with listings instead of threads, and the resemblance ends the moment money moves. Once a transaction exists, so do payouts, disputes, tax handling and a legal relationship with both sides of the trade. That is why the marketplace category here splits along a line that has nothing to do with features.
Classifieds software — Osclass, Yclas — puts two parties in touch and stops. No checkout, no escrow, no payout schedule. It is the right answer far more often than it is chosen, because the operator's obligations stay small. Sharetribe and Cocorico carry the transaction itself, which means the operator is now in the middle of it. Medusa and Saleor come at the same ground from commerce: headless cores where the storefront is a separate application you also have to build and keep.
The failure mode is predictable. A project adopts transaction software because the roadmap says payments arrive in phase two, then spends its first year maintaining a checkout nobody uses. Classifieds first, transactions when the volume argues for them, is the cheaper order.
What running one actually costs
Installation is the part everyone plans for and the part that matters least. What arrives afterwards is moderation, spam, upgrades and the slow accumulation of content nobody owns.
Spam shows up before your first real member. Any platform with open registration and a public post form will be found by automated signups within days, and the defences that work — approval queues, rate limits, trust levels that unlock privileges over time — are the ones people disable because they add friction. Discourse's trust levels and Coral's moderation queue exist because both projects concluded that moderation tooling is the product, not a setting.
Upgrades are the second cost. A board on shared hosting with no upgrade discipline becomes unpatchable in about three years, and the migration out is worse than the upgrade would have been. Anything running a supported release, on any of these platforms, is in better shape than the most modern option installed once and left alone.
Hosted or self-hosted is a staffing decision, not a philosophy
Twelve of the entries in this catalogue offer a vendor-hosted option alongside the code. Discourse, NodeBB, Vanilla, Invision Community, Talkyard, Sharetribe, Yclas, Saleor, HumHub, Mattermost, Rocket.Chat and Zulip will all take the server off your hands for a monthly figure. The software is the same. What you are buying is somebody else's on-call rota.
The argument for running it yourself is control and cost at scale: your data stays where you put it, you can modify the source, and a large community is cheaper on a box you rent than on a per-seat plan. The argument against is that the bill for self-hosting is paid in attention rather than money, and attention is the resource small projects actually run out of. A volunteer-run community that loses its one technical member to a new job discovers this within a quarter.
A useful test: if the person who would perform the upgrade cannot name the database version currently in production, the hosted option is cheaper than it looks. That is not a criticism of anyone. It is an accurate description of how side projects staffed by goodwill actually decay.
Identity decides more than the feature list does
Most communities are not the first thing their members log into. There is already an account somewhere — the main site, a company directory, a membership database — and the question of whether the community shares it or duplicates it shapes everything downstream.
Duplicating is simpler on day one and expensive forever: two password resets, two profiles that drift apart, and a moderation problem where a banned member is only banned in one place. Sharing means single sign-on, which means the platform has to support whatever the existing system speaks. Support here is uneven and it is worth checking before rather than after. Discourse, NodeBB, Vanilla, Mattermost and Zulip all have well-trodden SSO paths. The traditional PHP boards can be made to work, usually through a plugin and some patience.
The same question decides whether the community can ever be embedded. Vanilla and Talkyard are both built to sit inside an existing page rather than beside it, which only makes sense if the visitor is already recognised.
Comments and Q&A are the small ends of the same problem
Not every site needs a forum. A publication that wants reactions under an article needs a comment server; a project that keeps answering the same six questions needs a Q&A engine. Both are cheaper to run than a community, and both fail in the same way if moderation is an afterthought.
Isso and Remark42 are deliberately small — one process, a local database, no external service holding your readers' words. Coral comes from newsrooms and treats moderation as the product, which is the right instinct for anything with an audience large enough to attract bad-faith participation. On the Q&A side, Question2Answer runs on the same plain PHP and MySQL as the classic boards, and Apache Answer ships as a single Go binary, which makes it about as easy to deploy as this category gets.
The reason to consider these before a forum is that they fit the actual traffic. A forum with six posts a month reads as abandoned; a comment thread with six replies reads as a conversation. The smaller tool is often the one that does not embarrass you.
The licence line, and what open source really commits you to
Four of the entries here are AGPL: Talkyard, HumHub, Lemmy and Mbin. The distinction from GPL matters specifically to people running software as a service over a network, which is exactly what running a community is. Under GPL, distributing a modified copy triggers the obligation to offer source. Under AGPL, letting people use a modified copy over a network triggers it too. Patch an AGPL platform, run it publicly, and your users are entitled to that patched source.
For most operators this changes nothing, because most operators never touch the code. It becomes real the moment someone adds a custom integration and an employer asks whether that integration has to be published. The answer is usually yes, and it is much cheaper to know that before the work than after it. MIT and BSD entries — Flarum, Cocorico, Medusa, Isso, Remark42, Saleor — carry no such condition; Apache-2.0 adds an explicit patent grant, which is why it turns up in projects with corporate contributors behind them.
None of this is legal advice and none of it should be taken from a table on a website. It is a prompt to read the licence file in the repository you are about to adopt, which takes ten minutes and is skipped almost universally.
Search is the feature that decides whether any of it was worth it
A community accumulates answers. Whether anyone can find them afterwards depends on search, and search quality varies more between these platforms than any other single capability. The PHP boards generally hand the job to the database, which works acceptably up to a few tens of thousands of posts and then degrades into something people stop using. Discourse and NodeBB both invest heavily here because their whole model assumes long threads that get revisited.
The practical consequence is that a board without usable internal search sends its own members to a search engine, which then returns the thread — if the thread is public and indexable. Communities that sit behind a login are invisible to that fallback, so their internal search is not a convenience but the only route back to their own history. That is worth testing with real content before the decision rather than discovering at year three.
One more thing search decides quietly: whether a community can be pruned. Every long-running board carries threads that are wrong now — an answer for a version nobody runs, a recommendation that aged badly. Deleting them is usually the wrong instinct, because the links pointing at them are real. Marking them, and letting search rank the current answer above the old one, keeps both the history and the correction.
A reasonable first week, and where the comparison pages help
Write down the shape first: threads that persist, channels that scroll, listings that expire, or answers that get voted. That single sentence eliminates most of the catalogue before any software is installed.
Then name the runtime someone in the room can already debug, and cross off anything that does not match it. Two constraints usually leave three or four candidates, which is a short enough list to install all of them. Run each on a throwaway host for a week with the moderation settings turned on rather than off, and post into it as if it already had members — a platform that feels awkward with ten posts will not improve with a thousand.
Whatever survives that week, check its migration path before committing. Every platform here can import from somewhere; the question is what it does to your URLs when it does.
One older page on this site sits outside all of that and still earns its place: a walkthrough of how to create an RSS feed, which is the thing every platform here emits and almost none of them documents properly.
The comparison pages are the shortcut through the middle of that. Each one takes a pair of self-hosted forum software candidates people genuinely weigh against each other and names the row that decides it, rather than scoring every row equally. Coding forums, support boards and general community sites tend to arrive at different answers from the same catalogue, which is why the pages argue rather than rank. Forum software for developers is not a separate category here — it is the same open source community software, weighted differently.
The catalogue
Browse the full catalogue · compare two platforms side by side
Questions people actually ask
Is self-hosted forum software actually free?
The licence usually is. Twenty-three of the twenty-eight platforms catalogued here ship under an open licence, three are open core with a paid tier above the free edition, and two are bought outright. What none of them is free of is the runtime you have to keep patched, the services beside it and the hours moderation takes once real people arrive — and those, not the licence, are what decide whether a community is still running in three years.
How many platforms does this site cover, and how were they chosen?
Twenty-eight, across six categories: forum software, marketplace and classifieds, group chat, Q&A, comment servers and federated platforms. The membership rule is that the software has to be runnable on a server you control. Hosted-only products are left out however good they are, because they do not answer the question the catalogue exists to answer.
How current is the information?
The activity date beside each entry is the last commit to that project's public repository, read when the page is built rather than typed in by hand. Licence, runtime and hosting model come from each project's own documentation and change when someone notices they changed. Five of the twenty-eight have no public repository, so they carry no activity date at all.
Where should someone start if they have never run one?
With the shape of the conversation, not the feature list. Threads that persist, channels that scroll, listings that expire and questions with one best answer are four different products, and picking the wrong shape is the one decision that cannot be undone later. The four questions on the choose page work through that in the order that eliminates the most.