We earn commissions when you shop through the links below. Full disclosure →
Community forum software built on Ruby on Rails, Ember.js, PostgreSQL and Redis, licensed GPL-2.0-or-later. Chat, polls, solved answers, reactions, assignments and an AI plugin ship in the core repository. The only officially supported install is Docker through the discourse_docker launcher, which builds one container from YAML templates; there is no Compose file.
Pick Discourse when you want a complete community forum on day one: categories and tags, chat, polls, solved answers, reactions, assignments, topic voting, a Data Explorer for SQL reports and the Discourse AI plugin all live in its core repository, alongside official and community themes, email digests, mailing-list mode and reply-by-email. It is a Ruby on Rails app with an Ember.js front end, PostgreSQL and Redis, licensed GPL-2.0-or-later. The one officially supported install is Docker through upstream's `install-discourse` script and `discourse_docker` launcher, which builds everything into a single container with Let's Encrypt; upstream's floor is 1 GB of RAM with swap, 2 GB or more recommended. If you want a small MIT-licensed forum on PHP hosting you already run, Flarum is the catalog's other forum.
What you need
Any VPS with at least 1024 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# Discourse — the official installer, per docs/INSTALL-cloud.md; Docker via the discourse_docker launcher is the only officially supported install# needs a 64-bit Linux server, ports 80/443 free, and a hostname pointed at it (Discourse will not work on a bare IP)wget -qO- https://raw.githubusercontent.com/discourse/discourse_docker/main/install-discourse | sudo bash# the wizard asks for admin email(s), the hostname and SMTP; skipping SMTP switches login to Discourse ID (id.discourse.com)# it installs Docker if missing, offers swap on small servers, provisions Let's Encrypt and builds in about 5-10 minutes# later changes: edit /var/discourse/containers/app.yml, thencd /var/discourse && ./launcher rebuild app
Discourse's install guide is explicit about what it expects from the server and from you:
non-negotiableDocker via discourse_docker is the only officially supported install; upstream says it "cannot support any other methods of installation". It is not a Compose file: the launcher builds one container (PostgreSQL, Redis, web and workers) from containers/app.yml, and every config change or plugin install is an edit there followed by ./launcher rebuild app, which replaces the container and takes the forum offline for a few minutes.
non-negotiableIt needs a hostname — the sample config says Discourse "will not work with a bare IP number" — and ports 80 and 443 free for the bundled Let's Encrypt setup. Upstream's troubleshooting advice for a port clash is to stop and disable the existing Nginx or Apache on the host.
non-negotiableSMTP is optional in the current installer, but skipping it switches login to Discourse ID, a sign-in service at id.discourse.com run by Discourse, so every login depends on it. Email digests, mailing-list mode and reply-by-email still need SMTP; upstream strongly recommends a dedicated email provider and says to verify the forum's subdomain, not just the parent domain.
non-negotiableThe 1 GB minimum is upstream's figure and assumes swap; the installer offers a 2 GB swap file on small servers and recommends 2 GB of RAM or more. The container itself is stateless: all data lives under /var/discourse/shared/standalone on the host, so back that up or configure Discourse's automatic backups.