Skip to content

Technical Support

5.0k Topics 28.3k Posts

Need help with installing or configuring NodeBB? Look here.

This category can be followed from the open social web via the handle [email protected]

Subcategories


  • User documentation for NodeBB

    47 47
    47 Topics
    47 Posts
    julianJ
    The hardest part of building a community is getting your users. If you don't have users, you don't have content, and if you don't have content, users won't join your forum. This chicken-and-egg game leads to many communities closing down due to lack of usage. Federation allows you to bypass this step by allowing you to "adopt" the fediverse as a source of content, so you don't have to worry about retaining users, but just creating content. NodeBB ships with a couple of powerful features that allow you to jump-start any new forum with live conversation and discussion with only a few clicks. This guide introduces you to these tools and teaches you how to use them. This article is part of the NodeBB Answers category, where you can learn more about setting up, maintaining, and using your NodeBB forum. Relays & Hashtags Relays are one of the easiest way to get content to stream into your instance. Not only do they provide content to you, setting up a relay subscription also allows you to send a copy of any local content for syndication to other relay subscribers. N.B. We recommend setting up a subscription to the FediBuzz Relay, see below. A good directory of relays can be found at the aptly-named Relay List. Note that different relays have different strengths depending on the type of content you'd like to receive. Some are specific to certain languages, others specific to topic. You can administer your relays by navigating to ACP > Federation > Relays. Each relay has a specific address that you should subscribe to. When looking into a relay, you'll want to add the "Pleroma"-style relay address — it usually ends with /actor. [image: 1772481161928-cba6aa2a-4690-411c-940e-d28beafc0067-image.jpeg] FediBuzz A specific type of relay called the #FediBuzz Relay allows you to set up a relay specific to a instance or a hashtag. This allows you to drill down to specific interest groups and drastically increase the signal-to-noise ratio of incoming content. For example, if you are starting a forum about guitars, it would make a lot of sense for you to receive any and all topics that are tagged #guitar. In that case, a selection of FediBuzz relays to use could be: https://relay.fedi.buzz/tag/guitar https://relay.fedi.buzz/tag/acousticguitar https://relay.fedi.buzz/tag/electricguitar https://relay.fedi.buzz/tag/music You can add these relays using the same interface as above. Note that different hashtags have different levels of noise depending on how focused your forum intends to be. For example, the music hashtag could contain a lot of topics about all types of music, not being limited to guitar music. In that case, that conversation might be related, but not a good fit for a guitar-focused forum. Auto-categorization Rules Getting content into your instance is only one step in kickstarting your community. By default, all remote content that is received is visible in the /world page. Getting this content imported into your forum is the other half of the equation, allowing you to bring this discussion into the local categories themselves. While you could manually find the topics and move them into your local categories, it is a lot easier (and faster!) to automate this by setting up an "auto-categorization rule" in the admin panel. You can find this page in ACP > Federation > Categorization. [image: 1772481823506-e096fbe6-af3a-4196-a900-2f4a58390265-image.jpeg] In this dialog you can instruct NodeBB to automatically categorize content into a specific category based on author or hashtag. Try it today! By combining relays, hashtags, and auto-categorization rules, it is possible to jump-start discussion on your forum around a specific topic, even though you may not have the local users to support it. At the end of the day, discussion can live on your forum or it can live on other instances, on the fediverse. Federation merely allows you to join that discussion and contribute your own.
  • NodeBB guides, how-to's and general tips and tricks

    87 630
    87 Topics
    630 Posts
    ShruogS
    If anyone ever has problems creating and authenticating their Gmail app, believe me, it's because of something very simple, lmao. When you generate the password, copy it and paste it along with your email. Once you've entered it, save the changes using the "save changes" button at the top right of the screen. Again, enter the information normally and click to save at the top of the page.
  • 25 203
    25 Topics
    203 Posts
    julianJ
    @CharlieF Yes! Go for it! Our entire front-end is powered by the Read API, so building an alternative front-end using that same API is completely supported. To make changes (e.g. post, reply, vote, etc.), use the Write API. While some small aspects of modifying NodeBB are still using websockets, if this is important to you, open an issue and we will convert it to a Write API route.
  • NodeBB DB Migration

    Unsolved
    9
    0 Votes
    9 Posts
    181 Views
    yasasY
    @[email protected] @baris RAM seems fine as I'm using the same spec from my previous VM except this one is Ubuntu 24 LTS. I did run ./nodebb reset -p but the issue still persists. I'll try a brand new installation
  • Base URL change

    Unsolved
    5
    0 Votes
    5 Posts
    921 Views
    Plerps PlerpsP
    If anyone runs into this in the future, I had success running this with Pangolin (using the config lines above and a X-Forwarded-Proto: https line)
  • Can I make share in Nodebb link?

    Unsolved
    2
    0 Votes
    2 Posts
    105 Views
    <baris☮️>B
    Yes for example on this forum, https://community.nodebb.org/compose?cid=2&title=Some topic&body=Some short text [read more](https://domain.com)
  • Is this possible to have multiple accounts with the same email address?

    Unsolved
    2
    2 Votes
    2 Posts
    100 Views
    julianJ
    @[email protected] the email confirmation logic will probably unset any other users with that email. You can set the email with setUserField, but it would not be confirmed. It is likely just to prevent users sharing emails. Perhaps you can try username+differentiator @example.com?
  • error: MongoServerError: Authentication failed.

    Unsolved
    2
    0 Votes
    2 Posts
    114 Views
    <baris☮️>B
    https://docs.nodebb.org/configuring/databases/mongo/#step-6-adding-a-new-database-with-users try the steps here.
  • "Make uploaded files private" and federation

    Unsolved
    7
    0 Votes
    7 Posts
    195 Views
    <baris☮️>B
    Uploaded files are not tied to category privileges. So if they know the url they can see the uploads even if they were uploaded to a post in a private category.
  • Blocking docs.nodebb.org from Claude?

    Unsolved
    11
    1 Votes
    11 Posts
    337 Views
    Dave JensenD
    It works now. Thank you!
  • NodeBB upgrade using Docker Compose

    Unsolved upgrade docker nodebb
    4
    2 Votes
    4 Posts
    745 Views
    M
    Thank you Julian!
  • Unread message counter not visible in pagination block

    Solved
    3
    1
    0 Votes
    3 Posts
    156 Views
    <baris☮️>B
    I created an issue for this https://github.com/NodeBB/NodeBB/issues/14055
  • Chat widget expand button tooltip persists after click

    Unsolved
    2
    0 Votes
    2 Posts
    130 Views
    <baris☮️>B
    I couldn't reproduce this, do you have other custom javascript that calls .tooltip? The widget creates the tooltip with the below code, which creates the tooltip inside the #content element. When you navigate to another page the contents of that element are cleared so the tooltip disappears for me. chatModal.find('[data-bs-toggle="tooltip"]').tooltip({ trigger: 'hover', container: '#content', });
  • 1 Votes
    5 Posts
    286 Views
    DownPWD
    seems to be good but must have WAF rules and page rules on Cloud Flare for websocket.io I can share if someone is interrested.
  • Cannot configure some plugins

    Solved
    9
    0 Votes
    9 Posts
    341 Views
    <baris☮️>B
    nodebb/[email protected] should work on 3.x and 4.x
  • Problem with logo

    Solved
    4
    0 Votes
    4 Posts
    237 Views
    DownPWD
    @baris said: You should change your selectors so it doesn't look at the entire document. You probably only want to apply fancybox to stuff inside the #content element which is what changes when the user navigates around the page. So use $('#content a').... for your selectors then the forum logo in the header won't be selected. I modified the JS Fancybox code now and this code and it seem better [image: 1772480990542-c0bc6074-bb0e-4406-adcc-25e90cc78903-image.jpeg] // --------------------------------------------- // Fancybox Media Reader (Without Website Logo) // --------------------------------------------- if (top.location.pathname !== '/login') { $(window).on('action:posts.loaded', function(data) { console.log("Polling DOM for lazyLoaded images to apply Fancybox"); $(document).ready(function() { $('#content a').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); }); }); }); } if (top.location.pathname !== '/login') { $(document).ready(function() { $(window).on('action:ajaxify.end', function(data) { $('#content a').not('.logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); data.preventDefault() // Strip out the images contained inside blockquotes as this looks nasty :) $('#content blockquote img').remove(); }); Fancybox.bind( '#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]', { groupAll: true, } ); }); }); } // Chat fancybox - fires when chat module loaded and AJAX calls new chat $(document).ready(function() { $(window).on('action:chat.loaded', function(data) { // >>> Se limiter au contenu principal uniquement <<< $('#content img').not('.forum-logo').not(".avatar").not(".emoji").not(".bmac-noanimate").each(function() { var newHref = $(this).attr("src"); $(this).wrap("<a class='fancybox' href='" + newHref + "'/>"); $('#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]').addClass("noanimate"); data.preventDefault(); // Strip out the images contained inside blockquotes as this looks nasty :) $('#content blockquote img').remove(); }); Fancybox.bind( '#content a[href*=".jpg"], #content a[href*=".jpeg"], #content a[href*=".png"], #content a[href*=".gif"], #content a[href*=".webp"]', { groupAll: true, } ); }); }); For the logo, I must use overflow: visible !important; on [component="brand/logo"] /* --- Logo --- */ [component="brand/logo"] { max-height: 50px; width: auto; height: auto; max-width: 100%; display: block; object-fit: contain; object-position: left center; overflow: visible !important; } Better result !! [image: 1772481090993-388ae2fc-edde-4aa2-ac2a-f8ebc2a32362-image.jpeg] Thank you for your help @baris
  • uploaded avatar : Gif files broken

    Solved
    4
    2 Votes
    4 Posts
    212 Views
    DownPWD
    Thank you @baris
  • Move or Hide 'Uncategorized'

    Solved
    7
    0 Votes
    7 Posts
    3k Views
    CrakilaC
    Just to wanted to update this by saying that I have resolved this. (I did use AI to assist me with this) While the following did help me, and the 'World' (fka. 'Uncategorized') has been removed, it may not be the correct method, so YMMV. (I am of course not responsible for anything that happens to your installation) This is carried out on v4.9.0 Backup the database first mongodump -d <database_name> -u <username> -p -o ./nodebb_backup Connect to MongoDB mongosh "mongodb://<username>:<password>@localhost/<database_name>" Find orphaned references to cid -1 // In children sorted sets db.objects.find({ _key: { $regex: /^cid:/ }, value: "-1" }) // In privileges db.objects.find({ _key: { $regex: /^privileges:-1/ } }) Delete the orphaned references // Remove from children sorted sets db.objects.deleteMany({ _key: { $regex: /^cid:/ }, value: "-1" }) // Remove privilege references db.objects.deleteMany({ _key: { $regex: /^privileges:-1/ } }) // Clear category cache db.objects.deleteMany({ _key: "cache:category" }) Rebuild and restart NodeBB cd /path/to/nodebb ./nodebb build ./nodebb restart --- :)
  • Federation problems

    Unsolved
    13
    2 Votes
    13 Posts
    723 Views
    J
    I'm going to wait until the Yunohost people push that upgrade! (Also, I'd love to chat about possible collab around our upcoming Toronto Games Week event in June: we'd like to do a special focus on open source/open web. I'm [email protected] if you feel like dropping a line!)
  • Pages display some HTML elements improperly until reloaded

    Solved
    8
    2
    0 Votes
    8 Posts
    406 Views
    Mel RussellM
    Seems like doing both of those fixed it. There was a trailing slash, thank you for noting that. I didn't realize that wasn't supposed to be included in the URL. I also went ahead and rebuilt/restarted and it looks like everything is good now. Thanks!
  • Have post tools always visible

    Solved
    3
    2 Votes
    3 Posts
    183 Views
    G
    Thank you very much! Works perfectly
  • Docker instance failing to fully launch.

    Unsolved
    2
    0 Votes
    2 Posts
    244 Views
    tankerkiller125T
    I ended up running the container as root, it was the was the only way to fix it. Once it sorted it's chmod and chown stuff I was able to run it without root again. In compose you can just add a user: root option to the nodebb service.
  • 0 Votes
    6 Posts
    382 Views
    <baris☮️>B
    The docs for it is linked from docs.nodebb.org, it is actually here https://docs.nodebb.org/api/read/#tag/users/paths/~1api~1user~1{userslug}~1edit~1email/get