Skip to content

NodeBB Development

Stay tuned here to hear more about new releases and features of NodeBB!

3.5k Topics 22.1k Posts

Subcategories


  • Posts from the NodeBB Development Blog
    96 Topics
    778 Posts
    julianJ

    Occasionally, we will get asked whether there are any differences between our hosted service and the open source project.

    It is as though we are holding back some great features and only allowing our paying customers access them! Conversely, it could be assumed that because we are hosting the software for others, that we would somehow out of self-interest or for economic reasons, deliver an inferior version with limitations.

    I'd like to say upfront that this is not the case for NodeBB.

    When you use our hosted service, you receive the same great NodeBB software that you can get for free off of our GitHub repository.

    What we're selling is support, maintenance, upgrades, and peace of mind delivered by our world-class† support team.

    You definitely can host NodeBB on your own! We've strived for years to deliver a piece of software that runs lean and fast on minimal hardware, great docs (some contributed by other admins!) that help you get up to speed quickly, and a fantastic community that will help you if you get stuck.

    The reason I take this principled stand is simple — I think it's unfair when artificial limitations are placed on software just for the purpose of getting customers to pay more.

    We've seen all this time and time again:

    You can't install any plugin you want, just a select few from a small list You can only have X units (tickets, posts, etc) of whatever you're using You can only have X admins/owners You can't see any messages older than X days

    These limitations are all artificial, and serve to restrict the use of something to the bare minimum. Anything extra is — of course — available for the right price.

    We don't do that. We tell everybody that NodeBB is powerful enough to run huge communities, and we stand by it. We tell everybody that NodeBB is flexible enough to look and function however you want, and we stand by it.

    These are the real limitations we impose on our hosting service:

    Hard drive space for uploads are imposed by our upstream provider and are set, though we are happy to add additional drive volumes for a fee) We have soft "pageview" limits that any user on our hosting can exceed (in fact, many do). We set them purely as a benchmark for the point at which your NodeBB may slow down depending on the type of load that you get, and encourage dialogue to make sure that you're on the right plan (server resources, etc.) We do not allow shell access for security reasons (and if you needed it, you probably could self-host)

    So please do rest assured when I and others tell you that what you see is what you get. No more, no less. I'd rather everybody get to use the best of NodeBB, instead of serving a special feature-reduced version for others.

    † I'm going to go out on limb here and say that we're probably the most qualified people to maintain NodeBB. Feel free to disagree 😉

  • You have a cool idea about NodeBB? Post it here.

    804 Topics
    5k Posts
    Bharat RathiB

    Also, how can we have moderation for posts with images? Like any post with an image should be places in post-queue first and be approved from mods before posting.

  • Found a bug? Why not make a bug report here?
    1k Topics
    7k Posts
    barisB

    Created an issue https://github.com/NodeBB/NodeBB/issues/12474

  • Focused discussion related to ActivityPub integration in NodeBB

    39 Topics
    420 Posts
    julianJ

    Thanks @[email protected] — I think this is (one of) the last piece before two-way federation will start working. Hopefully it will be merged and updated soon 😄

  • Help Translate NodeBB
  • 0 Votes
    2 Posts
    709 Views
    omegaO

    NodeBB SEO is in fine fettle.

    cloudflare is bad for traffic

    Returns this thread as the #1 result in duckduckgo 😳

    Does this answer the question?

  • SOLVED: yii accounts duplicated on nodebb

    8
    0 Votes
    8 Posts
    720 Views
    N

    I updated the original question with my solution to help others.

  • filter:messaging.notify issue

    3
    0 Votes
    3 Posts
    388 Views
    B

    @baris said in filter:messaging.notify issue:

    That is a filter hook so you need to return the data from it.

    myPlugin.filterMessagingNotify = async (hookData) => { // do something with hookData return hookData; };

    That's brilliant @baris thanks for your help once again!

  • 0 Votes
    2 Posts
    431 Views
    barisB

    A hook is fired when that page is loaded it is filter:account/profile.build

  • Group Chat Changes

    72
    17 Votes
    72 Posts
    46k Views
    volanarV

    @faddat said in Group Chat Changes:

    I think that the chat in NodeBB should integrate with either IRC or Matrix Chat. I know that Raocket.Chat, a meteor-based chat application has support for Matrix Chat (ether upcoming, or.... something. Here is a link to the relevant repo: https://github.com/RocketChat/Rocket.Chat.Federation

    Integration with rocket.chat is an ideal option for a forum chat. They have the same stack of technologies, MIT License and rocket.chat features are much larger than the native chat. Why waste resources to improve the native chat, if there is a free rocket.chat? For example, how it is done in https://www.phpfox.com/chatplus/
    https://www.phpfox.com/blog/2021/why-chatplus-is-important-for-your-phpfox-online-community/
    https://docs.phpfox.com/display/FOX4MAN/ChatPlus+solution
    No one will guess that rocket.chat is used here.

  • 0 Votes
    2 Posts
    553 Views
    AntosikA

    Hey!

    I think you should write a plugin.

    Use https://github.com/julianlam/nodebb-plugin-sso-oauth as a template.
    And this - https://www.npmjs.com/package/passport-cognito is a package you can use in your plugin.

    You can also take a look at Google SSO - https://github.com/julianlam/nodebb-plugin-sso-google (as an example)

  • NodeBB Core typings

    2
    0 Votes
    2 Posts
    306 Views
    PitaJP

    I don't think this is realistic until core switches to typescript.

  • Fork and publish unmaintained plugins

    1
    1 Votes
    1 Posts
    205 Views
    AntosikA

    Hi!

    We have many NodeBB plugins that are no longer maintained, but people still want to use them.

    Can we fork them to NodeBB Community (or other) namespace on GitHub and publish under @nodebb-community (or other) namespace on npm?
    To allow the installation of those plugins from ACP - we can increase the range of search to this namespace too.

    What do you think about this idea? 👀

  • Best way to check if you are guest in hook

    5
    0 Votes
    5 Posts
    443 Views
    JenklerJ

    Thanks, filter:post.getPosts works fine and has uid for the logged in user.

    Did use filter:post.getPostSummaryByPids for summary.

    And filter:teasers.get for teasers. All have uid 😉

  • Getting categories by list of ids

    1
    1 Votes
    1 Posts
    211 Views
    Strahil GoranovS

    Hi,
    Is there a way to get categories by list of category ids with read or write API or I have to make N number of calls to get the categories that I want or there is another way to achieve that?

  • 0 Votes
    5 Posts
    516 Views
    Andrei LopatencoA

    @pitaj That makes sense.

    Thank you, I think that answers my question.

  • async / await composer buttons.

    5
    0 Votes
    5 Posts
    502 Views
    JenklerJ

    I fixed it this way 😉

    exports.filterComposerFormatting = async (data) => { data.options.push({ className: 'add-movie-source fa fa-video-camera', name: 'add_movie_source', title: 'Add movie source' }, { className: 'add-movie-review fa fa-video-camera', name: 'add_movie_review', title: 'Add movie review' }, { className: 'add-game-source fa fa-gamepad', name: 'add_game_source', title: 'Add game source' }, { className: 'add-game-review fa fa-gamepad', name: 'add_game_review', title: 'Add game review' }); return data; };

    @baris any example for a noob like me? I just want to load client.js when composer is active due to that it only is needed when working it the composer 🙂

  • No way to flag a post via API?

    2
    0 Votes
    2 Posts
    315 Views
    julianJ

    @andrei-lopatenco You are correct, there is no Flags API at the moment... there never was one for the Write API plugin, and when it got ported into core, we didn't make one either.

    But it sounds like a good idea.

    Link Preview Image Flags API · Issue #9649 · NodeBB/NodeBB

    e.g. POST /api/v3/flags GET/PUT /flags /flags/:flagId

    favicon

    GitHub (github.com)

  • 0 Votes
    1 Posts
    195 Views
    T

    I think it would be cool to add category description to the Get Recent Topics API. Wondering if I can get that in a backlog somewhere.

  • how to create a user having admin role

    Unsolved
    2
    0 Votes
    2 Posts
    345 Views
    dunlixD

    @jawadbiag8 you can go to ACP > Manage > Admins & Mods to add or remove them

  • CSS-Textdesign

    19
    0 Votes
    19 Posts
    1k Views
    phenomlabP

    @ᴅᴀʀᴛʜ-ᴠᴀᴅᴇʀ Anytime.

  • 0 Votes
    2 Posts
    394 Views
    DO MGBKD

    I am seeing similar behavior too for read API (for example get user by email api), master token and _uid are ignored when sending request. The document states that master token can be used, however it doesn't seem to be the case for all APIs.

  • Page loads blank until refresh

    5
    0 Votes
    5 Posts
    473 Views
    T

    Cracked it! I had all this nonsense in my nginx from googling around. here is what worked.

    location /forum { if ($request_method = 'OPTIONS') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-AUTHENTICATION, X-IP, Accept'; add_header 'Access-Control-Max-Age' 1728000; add_header 'Content-Type' 'text/plain charset=UTF-8'; add_header 'Content-Length' 0; return 204; } if ($request_method = 'POST') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-AUTHENTICATION, X-IP, Accept'; } if ($request_method = 'GET') { add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS'; add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,X-AUTHENTICATION, X-IP, Accept'; } add_header 'Access-Control-Allow-Credentials' 'true'; add_header X-Frame-Options "SAMEORIGIN"; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header Host $http_host; proxy_set_header X-NginX-Proxy true; # proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto; proxy_pass http://127.0.0.1:4567; # no subfolder defined here proxy_set_header Host $host; # MAGIC proxy_redirect off; # Socket.IO Support proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
  • How to pass array when calling PUT API?

    1
    0 Votes
    1 Posts
    240 Views
    DO MGBKD

    I am trying to call api/v3/categories/111/privileges/groups:posts:upvote to set privileges for a group. It's a PUT API, and it seems to accept array of privileges on server side. I tried multiple ways to pass array in the URL and all attempts failed.

    for example /api/v3/categories/111/privileges/privilege[]=groups:posts:upvote&privilege[]=groups:posts:delete

    Any idea how to pass array of privileges to PUT API?

    The API doc is here https://docs.nodebb.org/api/write/#tag/categories/paths/~1categories~1{cid}~1privileges~1{privilege}/put

    Thanks in advance!

  • Write API GET works but POST 404s?

    3
    0 Votes
    3 Posts
    466 Views
    T

    Hey all-

    I am a moron.

    I forgot the /api/v3 in the API url.

    fml