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.
  • Private Reply to Post in thread?

    3
    0 Votes
    3 Posts
    447 Views
    E
    Category Notification is even better than what i tried to do, thanks for that. I know there is the Chat function but i was imagining something like a "Reply with PM" function in the Reply dropdown, guess that does not exist or is there a plugin for that as well?
  • Get users Link for header menu

    Solved
    3
    0 Votes
    3 Posts
    432 Views
    dogsD
    @PitaJ Thank you! Note: If I use /me it doesn't work - /me/doesn't work as well. It does not point to the own user profile. Only a reference to a sub-page as mentioned by @PitaJ works. /me/bookmarks works and points to the own bookmarks.
  • XMAPP

    5
    1 Votes
    5 Posts
    594 Views
    S
    @levy318 said in XMAPP: Is it possible to install NodeBB site on XAMPP? No, but not because it is Apache. XMAPP is a platform for PHP and Perl. NodeBB is written in NodeJS. No language can run on another like that. XMAPP can only run Perl or PHP applications. NodeBB will work with Apache, but makes no sense. It'll run on Windows, but that makes no sense either - slow and licensing problems. Bottom line, there is no situation where this question should come up. That said, can NodeBB run on Windows? Of course, no problem. You just install it there. It's a terrible idea, but it will absolutely work. XMAPP is completely unnecessary. Just don't install XMAPP or just completely ignore it and don't start it up, and you'll be fine.
  • 0 Votes
    17 Posts
    2k Views
    Avan SardarA
    @julian You got it.
  • Kategorie existiert nicht / Category is not existent

    Moved
    9
    0 Votes
    9 Posts
    865 Views
    tecyT
  • Handle is not a member of V8

    1
    0 Votes
    1 Posts
    1k Views
    Long LyL
    I tried to setup nodebb locally but encounter these issues: ''' info sharp Detected globally-installed libvips v8.7.4 info sharp Building from source via node-gyp make: Entering directory '/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp/build' TOUCH Release/obj.target/libvips-cpp.stamp CXX(target) Release/obj.target/sharp/src/common.o In file included from ../src/common.cc:27: ../src/common.h:78:20: error: ‘Handle’ is not a member of ‘v8’ 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^~~~~~ ../src/common.h:78:37: error: expected primary-expression before ‘>’ token 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^ ../src/common.h:78:39: error: ‘obj’ was not declared in this scope 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^~~ ../src/common.h:78:56: error: expected primary-expression before ‘attr’ 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^~~~ ../src/common.h:78:60: error: expression list treated as compound expression in initializer [-fpermissive] 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^ ../src/common.h:79:29: error: ‘Handle’ is not a member of ‘v8’ 79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr); | ^~~~~~ ../src/common.h:79:46: error: expected primary-expression before ‘>’ token 79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr); | ^ ../src/common.h:79:48: error: ‘obj’ was not declared in this scope 79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr); | ^~~ ../src/common.h:79:65: error: expected primary-expression before ‘attr’ 79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr); | ^~~~ ../src/common.h:80:38: error: ‘Handle’ is not a member of ‘v8’ 80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr); | ^~~~~~ ../src/common.h:80:55: error: expected primary-expression before ‘>’ token 80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr); | ^ ../src/common.h:80:57: error: ‘obj’ was not declared in this scope 80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr); | ^~~ ../src/common.h:80:74: error: expected primary-expression before ‘attr’ 80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr); | ^~~~ ../src/common.h:81:48: error: ‘Handle’ is not a member of ‘v8’ 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.h:81:65: error: expected primary-expression before ‘>’ token 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^ ../src/common.h:81:67: error: ‘obj’ was not declared in this scope 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^~~ ../src/common.h:81:84: error: expected primary-expression before ‘attr’ 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^~~~ ../src/common.h:81:37: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’ 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.h:81:89: error: expected ‘;’ before ‘{’ token 81 | template<typename T> v8::Local<T> AttrAs(v8::Handlev8::Object obj, std::string attr) { | ^~ | ; ../src/common.h:84:37: error: ‘Handle’ is not a member of ‘v8’ 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.h:84:54: error: expected primary-expression before ‘>’ token 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^ ../src/common.h:84:56: error: ‘obj’ was not declared in this scope 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~~ ../src/common.h:84:73: error: expected primary-expression before ‘attr’ 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~~~ ../src/common.h:84:26: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’ 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.h:84:78: error: expected ‘;’ before ‘{’ token 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~ | ; ../src/common.h:87:37: error: ‘Handle’ is not a member of ‘v8’ 87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) { | ^~~~~~ ../src/common.h:87:54: error: expected primary-expression before ‘>’ token 87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) { | ^ ../src/common.h:87:56: error: ‘obj’ was not declared in this scope 87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) { | ^~~ ../src/common.h:87:61: error: expected primary-expression before ‘int’ 87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) { | ^~~ ../src/common.h:84:26: warning: variable templates only available with ‘-std=c++14’ or ‘-std=gnu++14’ 84 | template<typename T> T AttrTo(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.h:87:70: error: expected ‘;’ before ‘{’ token 87 | template<typename T> T AttrTo(v8::Handlev8::Object obj, int attr) { | ^~ | ; ../src/common.h:93:9: error: ‘Handle’ is not a member of ‘v8’ 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^~~~~~ ../src/common.h:93:26: error: expected primary-expression before ‘>’ token 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^ ../src/common.h:93:28: error: ‘input’ was not declared in this scope 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^~~~~ ../src/common.h:93:70: error: expected primary-expression before ‘&’ token 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^ ../src/common.h:93:71: error: ‘buffersToPersist’ was not declared in this scope 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^~~~~~~~~~~~~~~~ ../src/common.h:93:87: error: expression list treated as compound expression in initializer [-fpermissive] 93 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist); | ^ ../src/common.cc:34:8: error: redefinition of ‘bool sharp::HasAttr’ 34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~~ In file included from ../src/common.cc:27: ../src/common.h:78:8: note: ‘bool sharp::HasAttr’ previously defined here 78 | bool HasAttr(v8::Handlev8::Object obj, std::string attr); | ^~~~~~~ ../src/common.cc:34:20: error: ‘Handle’ is not a member of ‘v8’ 34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.cc:34:37: error: expected primary-expression before ‘>’ token 34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) { | ^ ../src/common.cc:34:39: error: ‘obj’ was not declared in this scope 34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) { | ^~~ ../src/common.cc:34:56: error: expected primary-expression before ‘attr’ 34 | bool HasAttr(v8::Handlev8::Object obj, std::string attr) { | ^~~~ ../src/common.cc:37:15: error: redefinition of ‘std::string sharp::AttrAsStr’ 37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~~~~ In file included from ../src/common.cc:27: ../src/common.h:79:15: note: ‘std::string sharp::AttrAsStr’ previously declared here 79 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr); | ^~~~~~~~~ ../src/common.cc:37:29: error: ‘Handle’ is not a member of ‘v8’ 37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.cc:37:46: error: expected primary-expression before ‘>’ token 37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) { | ^ ../src/common.cc:37:48: error: ‘obj’ was not declared in this scope 37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) { | ^~~ ../src/common.cc:37:65: error: expected primary-expression before ‘attr’ 37 | std::string AttrAsStr(v8::Handlev8::Object obj, std::string attr) { | ^~~~ ../src/common.cc:40:23: error: redefinition of ‘std::vector<double> sharp::AttrAsRgba’ 40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~~~~~ In file included from ../src/common.cc:27: ../src/common.h:80:23: note: ‘std::vector<double> sharp::AttrAsRgba’ previously declared here 80 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr); | ^~~~~~~~~~ ../src/common.cc:40:38: error: ‘Handle’ is not a member of ‘v8’ 40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) { | ^~~~~~ ../src/common.cc:40:55: error: expected primary-expression before ‘>’ token 40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) { | ^ ../src/common.cc:40:57: error: ‘obj’ was not declared in this scope 40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) { | ^~~ ../src/common.cc:40:74: error: expected primary-expression before ‘attr’ 40 | std::vector<double> AttrAsRgba(v8::Handlev8::Object obj, std::string attr) { | ^~~~ ../src/common.cc:50:20: error: redefinition of ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ 50 | InputDescriptor* CreateInputDescriptor( | ^~~~~~~~~~~~~~~~~~~~~ In file included from ../src/common.cc:27: ../src/common.h:92:20: note: ‘sharp::InputDescriptor* sharp::CreateInputDescriptor’ previously defined here 92 | InputDescriptor* CreateInputDescriptor( | ^~~~~~~~~~~~~~~~~~~~~ ../src/common.cc:51:9: error: ‘Handle’ is not a member of ‘v8’ 51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist | ^~~~~~ ../src/common.cc:51:26: error: expected primary-expression before ‘>’ token 51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist | ^ ../src/common.cc:51:28: error: ‘input’ was not declared in this scope 51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist | ^~~~~ ../src/common.cc:51:70: error: expected primary-expression before ‘&’ token 51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist | ^ ../src/common.cc:51:71: error: ‘buffersToPersist’ was not declared in this scope 51 | v8::Handlev8::Object input, std::vector<v8::Localv8::Object> &buffersToPersist | ^~~~~~~~~~~~~~~~ make: *** [sharp.target.mk:184: Release/obj.target/sharp/src/common.o] Error 1 make: Leaving directory '/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp/build' gyp ERR! build error gyp ERR! stack Error: make failed with exit code: 2 gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:194:23) gyp ERR! stack at ChildProcess.emit (events.js:321:20) gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12) gyp ERR! System Linux 5.3.0-29-generic gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild" gyp ERR! cwd /home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/node_modules/sharp gyp ERR! node -v v13.7.0 gyp ERR! node-gyp -v v5.0.5 gyp ERR! not ok npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] install: (node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy) npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] install script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! /home/jordanly/.npm/_logs/2020-02-05T08_20_16_954Z-debug.log Error installing dependencies! message: Command failed: npm install --production stdout: null stderr: null /home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/package-install.js:54 throw e; ^ Error: Command failed: npm install --production at checkExecSyncError (child_process.js:611:11) at Object.execSync (child_process.js:647:15) at Object.installAll (/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/package-install.js:45:9) at Object.<anonymous> (/home/jordanly/JordanLy/My Folder/Sydney-Study/Personal project/nodebb/src/cli/index.js:60:18) at Module._compile (internal/modules/cjs/loader.js:1151:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1171:10) at Module.load (internal/modules/cjs/loader.js:1000:32) at Function.Module._load (internal/modules/cjs/loader.js:899:14) at Module.require (internal/modules/cjs/loader.js:1040:19) at require (internal/modules/cjs/helpers.js:72:18) { status: 1, signal: null, output: [ null, null, null ], pid: 7526, stdout: null, stderr: null } ''' Then after installation, I try to start it, here's the command line result ./nodebb start Starting NodeBB "./nodebb stop" to stop the NodeBB server "./nodebb log" to view server output "./nodebb help" for more commands Lastly, I have tried to find where the forum is running (port 4567, forum.examle.com, etc.) but no luck. Please help me, I followed the installation guide here https://docs.nodebb.org/installing/os/ubuntu/#installing-mongodb
  • Cannot upload any image

    4
    0 Votes
    4 Posts
    714 Views
    PitaJP
    Are there any errors in the server log?
  • Rules or welcome topic

    2
    0 Votes
    2 Posts
    378 Views
    barisB
    You can create a topic and put everything you want there and then use /admin/settings/notifications and set the welcome notification link to the url of the topic. This will send a notification to new users that will take them to this topic.
  • Help with Upgrade to v1.13.x

    7
    0 Votes
    7 Posts
    738 Views
    M
    @PitaJ said in Help with Upgrade to v1.13.x: @Michael-Pfaff yeah I'd check git status before doing anything and run reset if there are changes Much appreciated @PitaJ!
  • Admin can't add New User

    7
    1 Votes
    7 Posts
    973 Views
    KENT SUK
    I try install nodebb at new ubuntu18.04: git clone -b master https://github.com/NodeBB/NodeBB.git nodebb and nodebb/public/src/admin/manage/users.js line:289 has be change function handleUserCreate() { $('#createUser').on('click', function () { Benchpress.parse('admin/partials/create_user_modal', {}, function (html) { bootbox.dialog({ message: html, title: '[[admin/manage/users:alerts.create]]', onEscape: true, buttons: { cancel: { label: '[[admin/manage/users:alerts.button-cancel]]', className: 'btn-link', }, create: { label: '[[admin/manage/users:alerts.button-create]]', className: 'btn-primary', callback: function () { createUser.call(this); return false; }, }, }, }); }); return false; }); } the bug is the same . Thanks
  • createUser "Modal" in ACP

    11
    0 Votes
    11 Posts
    1k Views
    Kent Su 0K
    @baris I tried: sudo git reset --hard origin/master sudo ./nodebb upgrade he ACP user bug is the same .. how can I do ? THX
  • NodeBB crashed after starting

    1
    0 Votes
    1 Posts
    287 Views
    H
    Hello, I was installing NodeBB today and I after a successful install, I tried running nodebb start only for the nodejs script to pop up and the code to crash. This was in my nodebb log : [image: pJjqEde.png] I couldn't find anything questions similar my issue and any help would be appreciated.
  • Mongodb authorisation

    3
    0 Votes
    3 Posts
    426 Views
    S
    PitaJ is correct, that's a text file that you need to edit. The description that you wrote tells all of the details... the two lines given are to be appended to the end of that file. Means the same thing on Linux as it does on Windows or macOS: open a text editor and stick those on the bottom of that file. You'll need to restart MongoDB after you make that change for it to pick it up.
  • How do I create a new theme and upload it?

    8
    0 Votes
    8 Posts
    1k Views
    ButonixB
    @The-Worms Well thank you very much! how do I enable development mode so that when a file is changed, it is hot-loaded? now when you change the file is fully assembled and each change you need to wait for 20 seconds to see the result
  • how to get only current day/week posts of a specific category?

    3
    1 Votes
    3 Posts
    549 Views
    Andre MosinA
    @baris said in how to get only current day/week posts of a specific category?: /api/top?cid=5&term=daily perfect! thanks!
  • Embedding my NodeBB forum link on Facebook messenger shows error message.

    3
    0 Votes
    3 Posts
    577 Views
    hotteshenH
    Sharing a topic using FB messenger works fine. I think only custom home page causes such problem. I've not tried categories page yet.
  • How to hide group members (or show title of hidden group)

    2
    0 Votes
    2 Posts
    425 Views
    J
    Bumpety bumbety!
  • Lost connection to nodebb after setting up ssl

    5
    0 Votes
    5 Posts
    637 Views
    Nam VuN
    @PitaJ @oplik0 it's working, thanks guys!
  • Proxy the path under NodeBB root to another one.

    7
    0 Votes
    7 Posts
    774 Views
    hotteshenH
    I modified html link on my custom home page. from <a href="/app/">App</a> to <a href="javascript:window.location.href=window.location.href + 'app/'">App</a> Pros: no change to NodeBB source, so that I can update NodeBB as new release comes. Cons: The link URL is ugly and can not be copied for quote. Ref: Difference between window.location.href=window.location.href and window.location.reload()
  • 0 Votes
    9 Posts
    1k Views
    omegaO
    Check the credit card!!!