Skip to content

Technical Support

Need help with installing or configuring NodeBB? Look here.

4.7k Topics 26.2k 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.

    YouTube Setting up SendGrid mailer for NodeBB

  • NodeBB guides, how-to's and general tips and tricks

    82 Topics
    599 Posts
    barisB

    Quick start plugin has an example on how to add a new api route https://github.com/NodeBB/nodebb-plugin-quickstart/blob/master/library.js#L40-L76.

    The hooks that are fired client side are for client side code in plugins. If you want to pass data from the client to the server you have two options.

    Create an api route like in quick start plugin Create a new socket event listener on the server side and use socket.emit() client side. Example here
  • 25 Topics
    196 Posts
    phenomlabP

    @baris updated to 3.7.2 and now just waiting for the plugin to be updated.

  • 3.7.0 Upgrade Support

    Pinned
    22
    2 Votes
    22 Posts
    733 Views
    crazycellsC

    @phenomlab said in 3.7.0 Upgrade Support:

    @crazycells

    62085e6b-8993-47e4-80d8-2f07f862ca07-image.png

    looks delicious 😄

    Monkey Ape GIF

  • What is Best Option for Running Nodebb forever?

    Unsolved
    8
    0 Votes
    8 Posts
    79 Views
    X

    node app.js continues try to start app. look at this log:

    2024-04-26T13:32:14.000Z [50341/8042] - info: [api] Adding 0 route(s) to `api/v3/plugins` 2024-04-26T13:32:14.019Z [50341/8042] - info: [router] Routes added 2024-04-26T13:32:14.025Z [50341/8042] - info: 🎉 NodeBB Ready 2024-04-26T13:32:14.027Z [50341/8042] - info: 🤝 Enabling 'trust proxy' 2024-04-26T13:32:14.029Z [50341/8042] - error: NodeBB address in use, exiting... Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) 2024-04-26T13:32:14.032Z [50341/8042] - error: uncaughtException: listen EADDRINUSE: address already in use 0.0.0.0:50341 Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Fri Apr 26 2024 13:32:14 GMT+0000 (Coordinated Universal Time)","error":{"address":"0.0.0.0","code":"EADDRINUSE","errno":-98,"port":50341,"syscall":"listen"},"exception":true,"os":{"loadavg":[2.13,1.47,0.75],"uptime":2577.37},"process":{"argv":["/usr/bin/node","/home/vWbHoQZUBwUMl3tH/testn8n/public_html/app.js"],"cwd":"/home/vWbHoQZUBwUMl3tH/testn8n/public_html","execPath":"/usr/bin/node","gid":1003,"memoryUsage":{"arrayBuffers":19144223,"external":21614654,"heapTotal":84533248,"heapUsed":70672856,"rss":160268288},"pid":8042,"uid":1001,"version":"v18.20.2"},"stack":"Error: listen EADDRINUSE: address already in use 0.0.0.0:50341\n at Server.setupListenHandle [as _listen2] (node:net:1817:16)\n at listenInCluster (node:net:1865:12)\n at doListen (node:net:2014:7)\n at process.processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":16,"file":"node:net","function":"Server.setupListenHandle [as _listen2]","line":1817,"method":"setupListenHandle [as _listen2]","native":false},{"column":12,"file":"node:net","function":"listenInCluster","line":1865,"method":null,"native":false},{"column":7,"file":"node:net","function":"doListen","line":2014,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"process.processTicksAndRejections","line":83,"method":"processTicksAndRejections","native":false}]} 2024-04-26T13:32:14.034Z [50341/8042] - error: Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) 2024-04-26T13:32:14.035Z [50341/8042] - info: [app] Shutdown (SIGTERM/SIGINT/SIGQUIT) Initialised. 2024-04-26T13:32:14.036Z [50341/8042] - error: Error [ERR_SERVER_NOT_RUNNING]: Server is not running. at new NodeError (node:internal/errors:405:5) at Server.close (node:net:2161:12) at Object.onceWrapper (node:events:631:28) at Server.emit (node:events:529:35) at emitCloseNT (node:net:2221:8) at process.processTicksAndRejections (node:internal/process/task_queues:81:21) 2024-04-26T13:32:14.361Z [50341/8073] - info: Initializing NodeBB vN/A http://localhost:50341 2024-04-26T13:32:16.071Z [50341/8073] - info: [socket.io] Restricting access to origin: http://localhost:* 2024-04-26T13:32:16.240Z [50341/8073] - warn: [plugins/load] The following plugins may not be compatible with your version of NodeBB. This may cause unintended behaviour or crashing. In the event of an unresponsive NodeBB caused by this plugin, run `./nodebb reset -p PLUGINNAME` to disable it. * nodebb-plugin-composer-default * nodebb-theme-harmony * nodebb-plugin-markdown * nodebb-plugin-mentions * nodebb-widget-essentials * nodebb-rewards-essentials * nodebb-plugin-emoji * nodebb-plugin-emoji-android 2024-04-26T13:32:16.316Z [50341/8073] - info: [api] Adding 0 route(s) to `api/v3/plugins` 2024-04-26T13:32:16.350Z [50341/8073] - info: [router] Routes added 2024-04-26T13:32:16.366Z [50341/8073] - info: 🎉 NodeBB Ready 2024-04-26T13:32:16.368Z [50341/8073] - info: 🤝 Enabling 'trust proxy' 2024-04-26T13:32:16.371Z [50341/8073] - error: NodeBB address in use, exiting... Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) 2024-04-26T13:32:16.378Z [50341/8073] - error: uncaughtException: listen EADDRINUSE: address already in use 0.0.0.0:50341 Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) {"date":"Fri Apr 26 2024 13:32:16 GMT+0000 (Coordinated Universal Time)","error":{"address":"0.0.0.0","code":"EADDRINUSE","errno":-98,"port":50341,"syscall":"listen"},"exception":true,"os":{"loadavg":[2.13,1.47,0.75],"uptime":2579.71},"process":{"argv":["/usr/bin/node","/home/vWbHoQZUBwUMl3tH/testn8n/public_html/app.js"],"cwd":"/home/vWbHoQZUBwUMl3tH/testn8n/public_html","execPath":"/usr/bin/node","gid":1003,"memoryUsage":{"arrayBuffers":19144239,"external":21614670,"heapTotal":85057536,"heapUsed":70311760,"rss":161042432},"pid":8073,"uid":1001,"version":"v18.20.2"},"stack":"Error: listen EADDRINUSE: address already in use 0.0.0.0:50341\n at Server.setupListenHandle [as _listen2] (node:net:1817:16)\n at listenInCluster (node:net:1865:12)\n at doListen (node:net:2014:7)\n at process.processTicksAndRejections (node:internal/process/task_queues:83:21)","trace":[{"column":16,"file":"node:net","function":"Server.setupListenHandle [as _listen2]","line":1817,"method":"setupListenHandle [as _listen2]","native":false},{"column":12,"file":"node:net","function":"listenInCluster","line":1865,"method":null,"native":false},{"column":7,"file":"node:net","function":"doListen","line":2014,"method":null,"native":false},{"column":21,"file":"node:internal/process/task_queues","function":"process.processTicksAndRejections","line":83,"method":"processTicksAndRejections","native":false}]} 2024-04-26T13:32:16.385Z [50341/8073] - error: Error: listen EADDRINUSE: address already in use 0.0.0.0:50341 at Server.setupListenHandle [as _listen2] (node:net:1817:16) at listenInCluster (node:net:1865:12) at doListen (node:net:2014:7) at process.processTicksAndRejections (node:internal/process/task_queues:83:21) 2024-04-26T13:32:16.386Z [50341/8073] - info: [app] Shutdown (SIGTERM/SIGINT/SIGQUIT) Initialised. 2024-04-26T13:32:16.391Z [50341/8073] - error: Error [ERR_SERVER_NOT_RUNNING]: Server is not running. at new NodeError (node:internal/errors:405:5) at Server.close (node:net:2161:12) at Object.onceWrapper (node:events:631:28) at Server.emit (node:events:529:35) at emitCloseNT (node:net:2221:8) at process.processTicksAndRejections (node:internal/process/task_queues:81:21) 2024-04-26T13:32:16.705Z [50341/8102] - info: Initializing NodeBB vN/A http://localhost:50341
  • 0 Votes
    8 Posts
    233 Views
    B-738B

    FreeBSD your solution!

  • Can't get group badges to work

    Solved
    6
    0 Votes
    6 Posts
    159 Views
    M

    With the current codebase, making a group hidden also removes it from the badge selection.

    Yes, it's working now, not sure why it wasn't earlier but thanks everyone!

  • Online users widget & ACP

    Unsolved
    6
    0 Votes
    6 Posts
    98 Views
    barisB

    You can change it to 5 minutes in the ACP using the online cutoff setting.

  • Admin Invites and Registration Queue

    Unsolved
    1
    0 Votes
    1 Posts
    41 Views
    mutahar aliM

    Is there a way to enable registration queue but make it so that user's registering with admin invites are able to register bypassing registration queue and admin approval? Since it would only make sense since the admins are the ones who invited the user.

    Many thanks!

  • 1 Votes
    89 Posts
    13k Views
    nhl.plN

    Quill 2.0 has been released.
    https://slab.com/blog/announcing-quill-2-0/

    Link Preview Image Announcing Quill 2.0 - Knock Down Silos by Slab

    Running weekly updates of every small improvement and bugfix to Slab that miss the headlines.

    favicon

    (slab.com)

  • Email Services Novice and issues sending to Gmail

    Unsolved
    8
    0 Votes
    8 Posts
    166 Views
    PitaJP

    Word that from would bee messed up. Can you try undoing your change and console.loging those values to see what they end up being?

  • 0 Votes
    10 Posts
    180 Views
    Nuran AkimbekN

    @baris Yes, I test develop branch and it's really worked now. But community still loaded slow and shows from time to time 503 error

  • Posting in Activity pub

    Unsolved
    15
    0 Votes
    15 Posts
    299 Views
    julianJ

    @crazycells yes, just like normal topics.

  • Registration email links pointing to 127.0.0.1

    6
    0 Votes
    6 Posts
    2k Views
    julianJ

    @Renan-Birlem-Deves make sure you're not using some other way to send a config in, otherwise config.json may not be read (or its values overridden).

  • Harmony Theme - Help with Chat & File Structure

    Solved
    6
    0 Votes
    6 Posts
    102 Views
    T

    @baris thanks!

  • Docker compose

    Unsolved
    5
    0 Votes
    5 Posts
    911 Views
    F

    @schwach I have two installations dependent on this image and I am stuck as there are no updates for a while, i wouldn't advise using it.

    I'm still looking for an efficient way to setup a docker-compose file that can be used to update with new release (both nodebb and mongodb). I wish updating nodebb was much simpler, i have an old forum started from 1.7, it has been such a pain keeping it up to date because of the need of dependencies.

  • Fresh Install With No Email Being Sent Out.

    Solved
    7
    0 Votes
    7 Posts
    130 Views
    2TonWaffle2

    Found the issue!!

    You must use the main account API key and secret and not a subaccount key for everything to work.

    Getting emails now through both the Cloudron side and NodeBB

  • Guest

    Moved
    6
    0 Votes
    6 Posts
    954 Views
    julianJ

    @tchesley85 when creating a category you can always clone the settings (that includes privileges) of an existing category.

  • Upgrade from v1.19.x to v2.0.x failed

    Unsolved
    7
    1 Votes
    7 Posts
    166 Views
    W

    Yes, the errors are still there with v3.x.

    I even deleted the build/ and node_modules/ directories because I thought there might be outdated files in there. But that didn't help.

    However, since the MongoDB schema upgrades were successful during the ./nodebb upgrade runs, I was able to complete the upgrade by doing a fresh git install and copying back the old config.json before running the setup routine. I then manually restored all the static files in public/uploads via rsync.

  • "tag list" to choose from?

    Solved
    9
    1 Votes
    9 Posts
    818 Views
    barisB

    Not sure how that will be implemented since Tag1 and tag1 would end up being two different tags. Lowercasing solves that problem.

  • dark mode on mobile?

    Solved
    6
    0 Votes
    6 Posts
    112 Views
    phenomlabP

    @crazycells Agree - you can have as many or as few as you'd like though.

  • /user/<xyz>/2factor Access Denied?

    Unsolved
    5
    0 Votes
    5 Posts
    74 Views
    ww9riversW

    @julian - Done! Thank you for the quick responses.

  • Performance insights of NodeBB

    Unsolved
    10
    0 Votes
    10 Posts
    199 Views
    barisB

    Yeah I think having a folder under public/uploads/profile for each user would make deleting easier. We can get rid of the glob and delete that folder on user deletion. But we would have to write an upgrade script to move all files and update the path in the user object since they are stored as "/assets/uploads/profile/1-profileavatar-1709738685611.jpeg"