Julian Lam e395fb0919 fix 14064 (#14184)
* **feat**: add support for setting watch state via category ID and member UID in route params

* **feat**: update category watch/privilege routes and logic to use `member` param instead of `uid`/`member` body field

* **feat**: add support for unfollowing via actor parameter in category routes

* **feat**: add deprecation warnings for legacy category routes and refactor privilege fetching to inline async call

* docs: add openapi specs for new category routes with path parameters

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* fix: some minor errors in file paths

* feat: support path extraction from req.query in assert.path middleware

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: support message from both query and body in removeQueuedPost

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* fix: remove ai-added check that path is defined, it is not required

* fix: send message as query param instead of in body, when rejecting queued post

* lint: comma dangle

* `feat(openapi): add optional query parameter support for topic delete endpoints`

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: add query parameter and make request body optional for topic thumbnail deletion

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: support query params for thumb path and crosspost id in topics endpoints

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: add query params for mute/unmute reason and timestamp

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* docs: update unmute API to support query params for reason and until timestamp

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* docs: update unmute endpoint to support reason via request body

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: add reason parameter support to users.unmute

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>

* feat: allow unban reason to be sent via req.query

* fix: timestamps are unix timestamps not 8601

* docs: mute shouldn't have been updated

* chore: remove deprecation warnings

---------

Co-authored-by: aider (ollama/ministral-3:8b) <aider@aider.chat>
2026-04-20 09:54:49 -04:00
2026-04-14 21:22:56 -04:00
2021-02-28 17:54:56 -05:00
2026-03-06 22:02:07 -05:00
2026-04-20 09:54:49 -04:00
2026-04-20 09:54:49 -04:00
2021-09-08 14:27:48 -04:00
2020-05-03 22:55:50 -04:00
2026-02-10 12:39:11 -05:00
2025-06-11 13:16:52 -04:00
2026-04-17 09:38:54 -04:00

NodeBB

Workflow Coverage Status Code Climate

NodeBB Forum Software is powered by Node.js and supports either Redis, MongoDB, or a PostgreSQL database. It utilizes web sockets for instant interactions and real-time notifications. NodeBB takes the best of the modern web: real-time streaming discussions, mobile responsiveness, and rich RESTful read/write APIs, while staying true to the original bulletin board/forum format → categorical hierarchies, local user accounts, and asynchronous messaging.

NodeBB by itself contains a "common core" of basic functionality, while additional functionality and integrations are enabled through the use of third-party plugins.

Try it now | Documentation

Screenshots

NodeBB's theming engine is highly flexible and does not restrict your design choices. Check out some themed installs in these screenshots below:

Our minimalist "Harmony" theme gets you going right away, no coding experience required.

Rendering of a NodeBB install on desktop and mobile devices

How can I follow along/contribute?

  • If you are a developer, feel free to check out the source and submit pull requests. We also have a wide array of plugins which would be a great starting point for learning the codebase.
  • If you are a designer, NodeBB needs themes! NodeBB's theming system allows extension of the base templates as well as styling via SCSS or CSS. NodeBB's base theme utilizes Bootstrap 5 as a frontend toolkit.
  • If you know languages other than English you can help us translate NodeBB. We use Transifex for internationalization.
  • Please don't forget to like, follow, and star our repo! Join our growing community to keep up to date with the latest NodeBB development.

Requirements

NodeBB requires the following software to be installed:

  • A version of Node.js at least 22 or greater (installation/upgrade instructions)
  • MongoDB, version 5 or greater or Redis, version 7.2 or greater
  • If you are using clustering you need Redis installed and configured.
  • nginx, version 1.3.13 or greater (only if intending to use nginx to proxy requests to a NodeBB)
  • (Optional) Docker for container-based setup

Installation steps vary by operating system. Please follow the official documentation links above.

Installation

Please refer to platform-specific installation documentation. If installing via the cloud (or using Docker), please see cloud-based installation documentation.

Development Setup Overview

NodeBB uses a CLI-based setup and does not run via standard npm start.

You can run NodeBB locally in two ways:

This approach helps you understand how NodeBB works internally.

Basic flow:

  1. Clone the repository https://github.com/NodeBB/NodeBB.git
  2. Run the setup script cd NodeBB ./nodebb setup
  3. Start the application ./nodebb start

During setup, you will configure:

  • Database (MongoDB / Redis)
  • Admin account
  • Port (default: 4567)

Option 2: Docker Setup (Quick & Isolated)

Requires Docker to be installed: https://docs.docker.com/get-docker/

Run:

docker-compose up

This will start NodeBB along with required services at: http://localhost:4567

For more details, see: https://docs.nodebb.org

Securing NodeBB

It is important to ensure that your NodeBB and database servers are secured. Bear these points in mind:

  1. While some distributions set up Redis with a more restrictive configuration, Redis by default listens to all interfaces, which is especially dangerous when a server is open to the public. Some suggestions:
    • Set bind_address to 127.0.0.1 so as to restrict access to the local machine only
    • Use requirepass to secure Redis behind a password (preferably a long one)
    • Familiarise yourself with Redis Security
  2. Use iptables to secure your server from unintended open ports. In Ubuntu, ufw provides a friendlier interface to working with iptables.
    • e.g. If your NodeBB is proxied, no ports should be open except 80 (and possibly 22, for SSH access)

Upgrading NodeBB

Detailed upgrade instructions are listed in Upgrading NodeBB

License

NodeBB is licensed under the GNU General Public License v3 (GPL-3) (http://www.gnu.org/copyleft/gpl.html).

Interested in a sublicense agreement for use of NodeBB in a non-free/restrictive environment? Contact us at sales@nodebb.org.

Languages
JavaScript 87.3%
Smarty 11.4%
SCSS 0.8%
Shell 0.2%
HTML 0.1%
Other 0.1%