Skip to content

NodeBB Development

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

3.5k Topics 22.2k 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.

    805 Topics
    5k Posts
    赵帅更

    Is anyone using WeChat to scan and log in? The plugin seems to be malfunctioning. Does anyone have a solution? Thx.
    Plugin: https://github.com/NodeBB-China/nodebb-plugin-sso-wechat-web

  • 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

    43 Topics
    500 Posts
    pfefferle@mastodon.socialP

    @julian sure, I will send you a DM!

  • Help Translate NodeBB
  • websocketAddress setting change

    1
    0 Votes
    1 Posts
    1k Views
    barisB

    This was a setting under admin>settings>sockets it has been moved to config.json.

    Old name was websocketAddress now its just address under the socket.io object.

    Sample config.json

    { "url":"yourforum.com", "socket.io": { "address": "", //or url to socket.io server "transports": ["websocket", "polling"] } }

    Relevant commit: https://github.com/NodeBB/NodeBB/commit/14e46a87a63f5e983a58a73109710027297924f3

    The reason is if you put a invalid value here sockets will not connect and since the admin page uses sockets to save settings you can't change it back. 😆

  • 0.6.0 Breaking Changes

    25
    3 Votes
    25 Posts
    15k Views
    barisB

    Updated with header.tpl changes, relevant thread https://community.nodebb.org/topic/3488/header-tpl-changes

  • Nodebb ranks poorly on PageSpeed Insights

    7
    0 Votes
    7 Posts
    3k Views
    A

    @peter setting the number of recent posts on the homepage to 0 got me my 100% usability on mobile. As it removes a lot of the padding issues that it complains about, read more being the main culprit. It's not big enough for mobile.

  • Are Chat messages ever deleted?

    8
    0 Votes
    8 Posts
    4k Views
    MegaM

    @a_5mith @Ted Thank you! 👍

  • Widget system

    2
    0 Votes
    2 Posts
    1k Views
    barisB

    Link Preview Image nodebb-widget-essentials/library.js at master · NodeBB/nodebb-widget-essentials

    Several basic widgets bundled together in one package including 'HTML', 'Markdown', 'Recent Replies', 'Active Users', and 'Moderators' - nodebb-widget-essentials/library.js at master · NodeBB/nodebb-widget-essentials

    favicon

    GitHub (github.com)

    Should give you some ideas, the active users widget changes behaviour based on where it is displayed, if its inside a topic it shows the poster in that topic, if its inside a category it shows recent posters in that category etc. widget.area.url gives the url of the page the widget is in.

  • Simple tags

    8
    0 Votes
    8 Posts
    121k Views
    A

    @h_kirk said:

    I see the predicament. Nasty job to generalize that problem 🙂

    Strtolower solves 100% of issues.

  • 0 Votes
    2 Posts
    2k Views
    julianJ

    @priapo At present, it's lower priority, as it's much easier to maintain the templates for NodeBB when they are all in English.

    However, if there is a need for it, then we will consider the demand when prioritising our tasks 🙂

  • config.json cluster change

    5
    2 Votes
    5 Posts
    8k Views
    wzrdtalesW

    Finally the pull request is open https://github.com/NodeBB/NodeBB/pull/2527.

    I'm out for today guys, hope you get everything. If not just ask, gn8.

  • 0 Votes
    6 Posts
    2k Views
    julianJ

    @riteshsanap A bit of a hint can be found here 😄

  • hot deploy of plugins?

    2
    0 Votes
    2 Posts
    1k Views
    A

    @Macrow-Willson said:

    Hi,
    just checkin in, I know Node can be quite clumsy in that matter and I am wondering how to deploy plugins on the production server, do i need to restart the entire instance?
    thank you!

    Just reload NodeBB from the ACP. Does the same thing, but doesn't take the site offline.

  • Invalid CSRF token

    8
    0 Votes
    8 Posts
    6k Views
    mootzvilleM

    I figured out my issue...

    MongoDB user I was using had a readWrite role, but I guess it needs the dbAdmin role as well. When I tried creating a new user in the nodebb admin area, then it would make things go wonky without the dbAdmin role and result in invalid csrf tokens.

  • This topic is deleted!

    Locked
    9
    0 Votes
    9 Posts
    56 Views
  • New Settings Framework

    7
    3 Votes
    7 Posts
    3k Views
    frissdiegurkeF

    @BDHarrington7
    If you're referring to the master-branch the problem is that you cache the value of

    var userExt = settings.get('strings.extensions');

    (and some further operations) once at plugin-start and don't refresh those values after settings.sync(); (within a callback).

    So you need to re-calculate the regex variable within a callback for settings.sync.

  • Lavender Theme: auto append new topic feature

    3
    0 Votes
    3 Posts
    2k Views
    agarcia17A

    ohhhh ok, got it! thanks @baris 🙂

  • 0 Votes
    2 Posts
    1k Views
    agarcia17A

    nvm, I got it working. I was confused how async.each() worked..! 😣

    here's what I ended up with:

    function getMainPost(topics, callback) { posts.getPostFields(topics.mainPid, ["content"], function (err, data) { topics.content = data.content; callback(null); }); } function getRecentTopics(category, callback) { categories.getCategoryTopics(category.cid, 0, parseInt(category.numRecentReplies, 10), uid, function (err, data) { var topics = data.topics; category.topics = topics; category.topic_count = topics.length; async.each(topics, getMainPost, function (err) { callback(null); }); }); } async.each(categoryData, getRecentTopics, function (err) { next(err, categoryData); });
  • middleware.admin.isAdmin is not needed

    3
    0 Votes
    3 Posts
    1k Views
    julianJ

    @pitaj Yes, isAdmin() is the middleware, whereas isAdministrator is the library method. They are functionally similar, except the middleware handles redirecting the user to 403

  • Security logging?

    3
    0 Votes
    3 Posts
    2k Views
    D

    Yeah, events.js seems like it should contain the functionality for this. It currently only logs UID, but a lot of those functions should probably log the IP of the triggering party as well.

    It seems like the only way to do that is to have IP be a parameter for most of those calls. That's a little tedious.

    my fantasy: events are logged to the db as well as flatfile, have severity/importance levels, contain as much info as possible about who triggered it if the logging fn is passed a socket or request object, there's hooks for events of high severity, by default sends email or notification to admins when high-sev occurs

  • 2 Votes
    13 Posts
    6k Views
    A

    @baris Thanks Baris, that showed the issue, was using // as the URI instead of https which was incorrect apparently. 😆

    Plugin updated to 1.1.5 for 0.6.0 of NodeBB.

  • 0 Votes
    1 Posts
    2k Views
    T

    I am working on a very specific project at the moment and am curious as to whether it would be possible to just manage users and permissions via a MySQL database, and nothing else. Chime in if this is a possibility and what road I would take to achieve this.

  • 0 Votes
    5 Posts
    3k Views
    julianJ

    @bentael yes, I believe that is the case.