Skip to content

NodeBB Development

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

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

    798 Topics
    5k Posts
    crazycellsC

    when the forum is used as PWA, there is no easy way to navigate between pages...

    Yesterday, I was reading a post on the forum that mentioned another topic, I have encountered an issue when attempting to return to the original post. So, after reading the linked topic, I had to go to categories page and retrace my steps to locate the topic I was reading initially...

    Although this can be achieved by page control arrows on destop and mobile browsers, there is no easy way to achieve this on PWA... so I propose adding some page control buttons that appear at the bottom of the page when scrolled up. (maybe it can be integrated to post navigation bar but I believe those buttons should appear in all pages, not only in topics)

    Here is just a suggestion to distinguish them from other arrows...

    IMG_0029 copy.jpeg

    alternatively the arrows or rewind icons that YouTube uses can be used:

    IMG_0030.jpg

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

    @solmak

    Thank you for spending time on this, that was fast!

    he is quite speedy :rofl: @baris is known to create a new plugin in 3 minutes of it being discussed in the forum... lol

    Link Preview Image How? · Issue #2 · NodeBB/nodebb-plugin-best-posts

    How did you make a plugin in 3 minutes?

    favicon

    GitHub (github.com)

  • Focused discussion related to ActivityPub integration in NodeBB

    27 Topics
    231 Posts
    julianJ

    Please see below for details regarding the first Forasphere/Threadiverse Working Group meeting.

    Following up on the initial announcement post regarding the creation of a working group for threadiverse-type ActivityPub applications, I'm pleased to inform the community-at-large that we have scheduled our first meeting for Thursday, 4 April from 18:00 to 19:00 UTC.

    Thank you @[email protected] for organizing and providing an online meeting space:

    The video-call details are below. The goal of the meeting is to clarify what this group is, what its goals are, and how it will be run. As such, the working agenda is:

    Intro & housekeeping (e.g. consent to record). Who/what we are, nomenclature and overall expectations. Relationship with standards organisations and processes, including Fediverse Developers Network (FediDevs), W3C Social Web Community Group, and FEP process. Organisational, including software (i.e. mailing list), meeting times, facilitation and minutes.

    Topic: Forasphere/Threadiverse Technical Alignment Meeting
    Time: Apr 4, 2024 06:00 PM Universal Time UTC

    Join Zoom Meeting
    https://us06web.zoom.us/j/83819428627?pwd=zEE5EQXwPeEjCbqQNyJnaMR21ZMcSe.1

    If you have any suggestions on the agenda please respond to this post.

  • Help Translate NodeBB
  • header.tpl changes

    3
    2 Votes
    3 Posts
    3k Views
    BaerrusB

    @baris I started working on a more SEO friendly theme/plugin. I hoped I could keep all the changes within a lavender derived theme, but I cannot. Some changes will be in the core. FOr example, server side rendered pagination. I am looking for some advice on how to coordinate making changes in a theme and core 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.