Skip to content

Technical Support

Need help with installing or configuring NodeBB? Look here.

4.8k Topics 26.7k Posts

Subcategories


  • User documentation for NodeBB

    44 Topics
    44 Posts
    Jay MoonahJ
    One of the first important things to do after setting up NodeBB is to set up an emailer plugin. While NodeBB does include a local emailer, if your forum is particularly active we recommend using an third-party emailer such as SendGrid which provides better deliverability for sites that send a high volume of email. Setting up SendGrid in NodeBB is very easy. Open the administrative dashboard using the 'gear' icon on your forum. Open the Extend > Plugins menu, and select the Find Plugins tab. Use the search on the right. Type 'SendGrid' and the plugin should appear -- select Install when you see it. From Installed tab on the Plugins menu, search again for 'SendGrid' and select Activate. Activating the plugin will require a restart of your forum. To restart, select the Dashboard menu and press the Restart button to the right. After NodeBB restarts, the SendGrid plugin will be active. After you restart, there should be a item called Emailer (SendGrid) under the Plugins menu -- if you don't see this right away, try refreshing your browser. Sign up to SendGrid Go to the SendGrid website, open the pricing page and scroll to the bottom. Click on the link and create your free account. Once you've confirmed your SendGrid account via email, you should be able to login to the SendGrid website. On the left side of your SendGrid dashboard, open Settings and click on API Keys. Click the button in the top right to create a new key. Make sure that the key has Full Access for Send Mail and Alerts.  When you are done, the new key to your clipboard. Now, return to the SendGrid menu on your NodeBB admin panel. Paste the API key into the field, and save your changes. Now go back to the Dashboard to restart your forum one more time. SendGrid should now be working for your forum. [image: youtubelogo.png] Setting up SendGrid mailer for NodeBB
  • NodeBB guides, how-to's and general tips and tricks

    83 Topics
    601 Posts
    Z
    not sure the plugin worked for firefox. saw a-z in the sort icon. when i used it, i expected the topics in the category would be sorted a-z. they werent
  • 25 Topics
    201 Posts
    eeeeeE
    I think you answered my point, by agreeing there are issues. I didn't even attempt to deploy nodebb, I had problems with much smaller projects! Nextjs routing was going through a change of design at the time, so perhaps that is less confusing now, but there were multiple other headaches. I would get build errors and issues with package management.
  • Dark/night Mode to ignore or add Less CSS on admin Dashboard

    Solved
    10
    0 Votes
    10 Posts
    1k Views
    dunlixD
    @downpw I meant for you to replace the YOURCSS
  • SOLVED - EACCES errors after rebuilds

    Unsolved
    3
    0 Votes
    3 Posts
    525 Views
    N
    @pitaj Hi, I changed the owner when first installing a month or more ago but I've seen these errors come and go. The owner is nodebb.nodebb based on a document I was following when first installing. I do see the CHANGELOG.md is owned by root. In fact, I see a few files here and there which are owned by root including the install folder. It's possible I ran some things as root while struggling with the conversion. Should I chown everything back to nodebb now and then? UPDATE: I chown everything back to nodebb and restarted the board and no errors. Simple fix. Thank you.
  • This topic is deleted!

    Unsolved
    1
    0 Votes
    1 Posts
    1 Views
  • Wordpress hosted site and nodebb

    3
    0 Votes
    3 Posts
    977 Views
    D
    Does this sso-wordpress plugin works only with the sites on the WordPress.com or it will work with a wordpress websties hosted on my own server.
  • This topic is deleted!

    Solved
    1
    0 Votes
    1 Posts
    33 Views
  • This topic is deleted!

    Unsolved
    2
    0 Votes
    2 Posts
    83 Views
  • Search by category

    Unsolved
    1
    0 Votes
    1 Posts
    234 Views
    K
    Is there a way to make search results show categories. Let's say I have a 100 categories. Alternatively I can launch each category with a text post with the category's name. But then the post title is not actually a link to the category or can it be?
  • Possible to Prevent Post Number Being Appended to URL While Scrolling

    Unsolved
    1
    0 Votes
    1 Posts
    238 Views
    M
    Hi, I searched the forum and there's only one topic regarding this issue: https://community.nodebb.org/topic/14551/possible-to-prevent-post-number-being-appended-to-url-while-scrolling-through-threads?_=1626385603965 I wonder if there's a way to disable this 'feature'? Thank you!
  • nodebb-plugin-global-chat

    10
    1 Votes
    10 Posts
    2k Views
    DownPWD
    @PitaJ @arranka Hi @all I still have the problem of the user display bug if there are too many members despite the plugin update. ISSUE HERE: https://github.com/NodeBB/nodebb-plugin-global-chat/issues/6 https://camo.githubusercontent.com/50851357330fa4a0d32f8a6d936256b7566271d3e8e91605f13d8db7e5f313a7/68747470733a2f2f692e696d6775722e636f6d2f634d633069776e2e6a7067 I have hidden the list of users with the CSS code ACP: .chats-full [component="chat/header"] .members { display: none; } .chats-full [component="chat/header"]::before { content: "-- Tchatter avec tout les membres --"; font-weight: 500; } The problem is that this code hides users for all discussions and not just the Global Chat How to do this ? Or declare ROOMID on CSS/ACP Another question: How to rename the name of the salon? thanks for considering my comments.
  • How to change default size of dialog used for adding new topic?

    3
    0 Votes
    3 Posts
    3k Views
    libraxssL
    @metalkramp size of new topic composer depends on function resize.reposition lib/composer/resize.js resize.reposition = function(postContainer) { console.info('[resize.js] reposition called'); var ratio = getSavedRatio(); // get size ratio here if (ratio >= 1 - snapMargin) { ratio = 1; postContainer.addClass('maximized'); } resizeIt(postContainer, ratio); }; getSavedRatio: function getSavedRatio() { return localStorage.getItem('composer:resizeRatio') || 0.5; } try setting it before resize.reposition called, like: localStorage.setItem('composer:resizeRatio', 1);
  • 1.17.0 upgrade thumbnail issue

    5
    0 Votes
    5 Posts
    752 Views
    J
    @julian I just updated to 1.17.2 and still have this issue where any topics created before the 1.17.0 upgrade don't display thumbnails.
  • Cannot Add A Group

    Solved
    1
    0 Votes
    1 Posts
    318 Views
    Sampo2910S
    Hi, I would like to add some groups. Clan Member for example for gaming... But when I click the + button the window comes up to name it and describe it but then nothing happens. It cannot get created. Any ideas? Thanks in advance. UPDATE: Need to add the group like clan-member and not write it Clan Member
  • No Sound or Sound Settings? / Email

    Solved
    15
    0 Votes
    15 Posts
    1k Views
    PitaJP
    @sampo2910 of None is the only option that works, then that's probably the only one your email provider supports. It should be fine as long as you don't need your emails to be perfectly secure.
  • Weird Text Over Header Icons

    Solved
    6
    0 Votes
    6 Posts
    753 Views
    barisB
    You can just hard code to english but users using different languages will not be able to see them in their correct language. The correct values are here if you want to fix them https://github.com/NodeBB/NodeBB/blob/master/install/data/navigation.json#L26
  • Error On Install -Please Please Help - Losing The Will To Live

    Solved
    19
    0 Votes
    19 Posts
    4k Views
    PitaJP
    @sampo2910 https://docs.nodebb.org/configuring/running/#systemd
  • After Upgrade to 1.17.1 debugging is not working.

    Solved
    1
    0 Votes
    1 Posts
    327 Views
    E
    Hello, I am upgraded from 1.14.3 to 1.16.1 and 1.17.1. I have a heavily customized theme based on the old Material theme and a dozen of various plugins that I have developed. After making changes to categories, filters, etc., I have the site up and running. However my debug console is filled with service worker and require.js mismatch errors. Debugging is extremely slow down to crawl and most importantly no longer opens up the source maps and goes to Nodebb minified package, why? I am unable to debug and this release still requires more work to become production ready so I am staying at release 1.14.3 for now until I can figure this out and test everything else. Below is my log and thanks in advance for your guidance and help as always. Uncaught (in promise) TypeError: Failed to fetch service-worker.js:1 Uncaught (in promise) TypeError: Failed to fetch adservice.google.com/tt/r:1 Failed to load resource: net::ERR_FAILED require.js:143 Uncaught Error: Mismatched anonymous define() module: function(){return function(e){var t={};function n(i){if(t[i]){return t[i].exports}var r=t[i]={i:i,l:false,exports:{}};e[i].call(r.exports,r,r.exports,n);r.l=true;return r.exports}n.m=e;n.c=t;n.d=function(e,t,i){if(!n.o(e,t)){Object.defineProperty(e,t,{enumerable:true,get:i})}};n.r=function(e){if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})};n.t=function(e,t){if(t&1)e=n(e);if(t&8)return e;if(t&4&&typeof e==="object"&&e&&e.__esModule)return e;var i=Object.create(null);n.r(i);Object.defineProperty(i,"default",{enumerable:true,value:e});if(t&2&&typeof e!="string")for(var r in e)n.d(i,r,function(t){return e[t]}.bind(null,r));return i};n.n=function(e){var t=e&&e.__esModule?function t(){return e["default"]}:function t(){return e};n.d(t,"a",t);return t};n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};n.p="";return n(n.s="./build/index.js")}({"./build/index.js":function(e,t,n){"use strict";function i(e){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){i=function e(t){return typeof t}}else{i=function e(t){return t&&typeof Symbol==="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t}}return i(e)}Object.defineProperty(t,"__esModule",{value:true});t.io=t.Socket=t.Manager=t.protocol=void 0;var r=n("./build/url.js");var o=n("./build/manager.js");var a=n("./node_modules/debug/src/browser.js")("socket.io-client");e.exports=t=l;var s=t.managers={};function l(e,t){if(i(e)==="object"){t=e;e=undefined}t=t||{};var n=r.url(e,t.path||"/socket.io");var l=n.source;var c=n.id;var u=n.path;var f=s[c]&&u in s[c]["nsps"];var d=t.forceNew||t["force new connection"]||false===t.multiplex||f;var p;if(d){a("ignoring socket cache for %s",l);p=new o.Manager(l,t)}else{if(!s[c]){a("new io instance for %s",l);s[c]=new o.Manager(l,t)}p=s[c]}if(n.query&&!t.query){t.query=n.queryKey}return p.socket(n.path,t)}t.io=l;var c=n("./node_modules/socket.io-parser/dist/index.js");Object.defineProperty(t,"protocol",{enumerable:true,get:function e(){return c.protocol}});t.connect=l;var u=n("./build/manager.js");Object.defineProperty(t,"Manager",{enumerable:true,get:function e(){return u.Manager}});var f=n("./build/socket.js");Object.defineProperty(t,"Socket",{enumerable:true,get:function e(){return f.Socket}});t["default"]=l},"./build/manager.js":function(e,t,n){"use strict";function i(e){"@babel/helpers - typeof";if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){i=function e(t){return typeof t}}else{i=function e(t){return t&&typeof Symbol==="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t}}return i(e)}function r(e,t){if(!(e instanceof t)){throw new TypeError("Cannot call a class as a function")}}function o(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||false;i.configurable=true;if("value"in i)i.writable=true;Object.defineProperty(e,i.key,i)}}function a(e,t,n){if(t)o(e.prototype,t);if(n)o(e,n);return e}function s(e,t){if(typeof t!=="function"&&t!==null){throw new TypeError("Super expression must either be null or a function")}e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:true,configurable:true}});if(t)l(e,t)}function l(e,t){l=Object.setPrototypeOf||function e(t,n){t.__proto__=n;return t};return l(e,t)}function c(e){var t=d();return function n(){var i=p(e),r;if(t){var o=p(this).constructor;r=Reflect.construct(i,arguments,o)}else{r=i.apply(this,arguments)}return u(this,r)}}function u(e,t){if(t&&(i(t)==="object"||typeof t==="function")){return t}return f(e)}function f(e){if(e===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}return e}function d(){if(typeof Reflect==="undefined"||!Reflect.construct)return false;if(Reflect.construct.sham)return false;if(typeof Proxy==="function")return true;try{Date.prototype.toString.call(Reflect.construct(Date,[],function(){}));return true}catch(e){return false}}function p(e){p=Object.setPrototypeOf?Object.getPrototypeOf:function e(t){return t.__proto__||Object.getPrototypeOf(t)};return p(e)}Object.defineProperty(t,"__esModule",{value:true});t.Manager=void 0;var h=n("./node_modules/engine.io-client/lib/index.js");var m=n("./build/socket.js");var g=n("./node_modules/socket.io-parser/dist/index.js");var v=n("./build/on.js");var y=n("./node_modules/backo2/index.js");var b=n("./build/typed-events.js");var w=n("./node_modules/debug/src/browser.js")("socket.io-client:manager");var x=function(e){s(n,e);var t=c(n);function n(e,o){var a;r(this,n);a=t.call(this);a.nsps={};a.subs=[];if(e&&"object"===i(e)){o=e;e=undefined}o=o||{};o.path=o.path||"/socket.io";a.opts=o;a.reconnection(o.reconnection!==false);a.reconnectionAttempts(o.reconnectionAttempts||Infinity);a.reconnectionDelay(o.reconnectionDelay||1e3);a.reconnectionDelayMax(o.reconnectionDelayMax||5e3);a.randohttps://requirejs.org/docs/errors.html#mismatch at makeError (require.js:168) at D (require.js:1254) at Object.o [as require] (require.js:1446) at requirejs (require.js:1797) at Function.req.config (require.js:1805) at require-config.js:3 chartist.js:330 Uncaught TypeError: Cannot read property 'querySelectorAll' of null at Object.c.createSvg (chartist.js:330) at f.d [as createChart] (chartist.js:3778) at f.h (chartist.js:1925) jquery.js:10109 Failed to load resource: the server responded with a status of 404 (Not Found) send @ jquery.js:10109 autofill.js:105 Uncaught TypeError: Cannot read property 'tid' of undefined at autofill.js:105 at Object.execCb (require.js:1696) at n.check (require.js:883) at n.enable (require.js:1176) at n.init (require.js:788) at require.js:1460 require.js:772 Uncaught TypeError: e.slice is not a function at n.init (require.js:772) at require.js:1460 :4567/assets/src/modules/jqueryui.js?v=o91jt8lcv8k:1 Failed to load resource: the server responded with a status of 404 (Not Found) require.js:143 Uncaught Error: Script error for "jqueryui" service-worker.js:1 Uncaught (in promise) TypeError: Failed to fetch socket.io.js:3956 GET http://localhost:4567/socket.io/?EIO=4&transport=polling&t=NgHu2XK net::ERR_FAILED e @ socket.io.js:3956 n @ socket.io.js:3875 e @ socket.io.js:3804 e @ socket.io.js:3840 e @ socket.io.js:4230 e @ socket.io.js:4173 e @ socket.io.js:3288 e @ socket.io.js:2687 n @ socket.io.js:2615 e.exports @ socket.io.js:2453 e @ socket.io.js:409 (anonymous) @ socket.io.js:700 setTimeout (async) e @ socket.io.js:692 e @ socket.io.js:666 i.emit @ socket.io.js:1915 e @ socket.io.js:3143 (anonymous) @ socket.io.js:2712 i.emit @ socket.io.js:1915 e @ socket.io.js:3371 e @ socket.io.js:4612 service-worker.js:1 Uncaught (in promise) TypeError: Failed to fetch socket.io.js:3956 GET http://localhost:4567/socket.io/?EIO=4&transport=polling&t=NgHu3cg net::ERR_FAILED
  • Post queue too big (crashing site)

    Unsolved
    2
    0 Votes
    2 Posts
    427 Views
    barisB
    I will post a couple queries to help with this. Get number of queued posts db.objects.count({_key: "post:queue"}); Get latest 20 post queue objects ids db.objects.find({_key: "post:queue"}).sort({score: -1}).limit(20); Using ids from above query you can get the queued posts with db.objects.find({_key: "post:queue:<replace_with_id_from_above_query"}); To delete a post queue from the db with id 123456 db.objects.remove({_key: "post:queue", value: "123456"}); db.objects.remove({_key: "post:queue:123456"}); To remove all queued posts db.objects.remove({_key: /^post:queue/}); Hope that helps.
  • Register a hook but lose another hook

    Solved
    3
    0 Votes
    3 Posts
    375 Views
    D
    Thank you so much. And I spent my afternoon debugging this, feeling so stupid right now
  • Post name without topic/id?

    Unsolved
    3
    0 Votes
    3 Posts
    576 Views
    N
    @julian I see. I love the wordpress permalinks where there are no ID's, it's just the post name so I hoped there was something like that for nodebb. Still better than the last forum sw I was using :). Thanks.
  • Post's Dropdown Menu Doesn't Work

    Unsolved
    3
    0 Votes
    3 Posts
    504 Views
    barisB
    Works fine in latest firefox.