Analytics cookies only (Google Analytics, PostHog). No ad networks, no cross-site tracking. See our privacy policy.
Self-host NodeBB
updated Oct 2026deployed by usprices checked · Jul 2026Install verified on Ubuntu 26.04 · Oct 2026 · how we test
We earn commissions when you shop through the links below. Full disclosure →
A Node.js forum platform with real-time posting and notifications, a plugin and theme ecosystem, and ActivityPub federation so a forum can follow and be followed from the Fediverse. It is GPL-3.0 and stores its data in MongoDB, PostgreSQL or Redis; the official container runs the forum and launches a browser-based installer on first start.
Runs on a VPS from $6/mo (Kamatera 2GB, 2 GB RAM) · prices checked Sep 2026
Our recommendation
Pick NodeBB when you want a modern forum with real-time posting and notifications, a large plugin and theme ecosystem, and ActivityPub federation, so the forum can follow and be followed from the Fediverse. It is GPL-3.0 Node.js backed by MongoDB, PostgreSQL or Redis; our snippet uses the MongoDB pairing from upstream's own compose file and pins the official GHCR image, which launches a browser-based installer on first start where you enter the database details and create the admin account. Upstream's install docs give a hardware minimum of 512 MB of RAM, which is our floor. Against the catalog's other forums: Discourse is the Ruby heavyweight with the bigger footprint, Flarum the lighter PHP option. NodeBB sits between them, and is the one whose Docker route is a stock compose file plus a web installer.
What you need
Any VPS with at least 512 MB of RAM
A domain you control — most self-hosted setups need HTTPS in front of them
NodeBB's Docker docs, compose file and README point to these before you open the port:
non-negotiableThe first visit to port 4567 is the installer, open to whoever gets there first: it asks for the database connection and creates the admin user. Run it yourself as soon as the container is up. With MongoDB the docs tell you to enter admin as the database, because the official Mongo image does not apply MONGO_INITDB_DATABASE the way the setup expects; the user is nodebb with the password from .env.
non-negotiableUpstream calls the Docker configuration community-maintained, routes support to the community forum, and advises against relying on the default compose file for a real deployment. Treat the snippet as a starting point you own.
non-negotiableFirst start runs npm install and a full build inside the container, which takes minutes and needs network access; the entrypoint also runs nodebb upgrade automatically whenever the image's package.json differs from the one in the config volume, so moving the pinned tag is a live upgrade. Your state is spread over four volumes: config (/opt/config), uploads, the build directory and MongoDB's data; back up the config and uploads with the database.
non-negotiableThe forum listens on plain HTTP 4567, so front it with a TLS reverse proxy and set the site URL in the installer to the public address. Upstream's compose publishes MongoDB on 27017 to the host; ours does not, in line with the README's warning that Redis listening on all interfaces is dangerous on a public server.