Skip to content

Technical Support

Need help with installing or configuring NodeBB? Look here.

4.8k Topics 26.5k 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 theme, disablw

    4
    0 Votes
    4 Posts
    468 Views
    M
    I confirm now that with updated version works fine Thanks for the fast fix.
  • Can't register new users

    Solved
    7
    0 Votes
    7 Posts
    2k Views
    S
    Tried this on mine, but no luck. Same issue. Verified that the fix made it in.
  • Meta Description Tag Missing in 1.13.1

    6
    0 Votes
    6 Posts
    580 Views
    barisB
    This should be in 1.13.2 and up.
  • Re asign content of former user to a new user?

    4
    1 Votes
    4 Posts
    580 Views
    N
    @baris thank you
  • After npm install: theme folder was deleted

    2
    0 Votes
    2 Posts
    296 Views
    julianJ
    @pasib -- sorry to hear about that! Yes, npm or yarn will sometimes clobber anything inside node_modules/. Never do anything in that directory as it is considered transient! Look into npm link or yarn link, and develop your theme elsewhere. Then you can use those tools to "link" the theme into the node_modules/ folder, and it will be safe from deletion. Sometimes the link itself will be deleted, but that is trivial to put back in.
  • Deploy not finished after restarting NodeBB app

    3
    0 Votes
    3 Posts
    431 Views
    B
    Are you sure it's the start that's not finishing and not your automation? This may not work but could be worth looking into. cd /home/nestor/nodebb ./nodebb stop ./nodebb start exit 0
  • Assign own translation

    Solved
    4
    0 Votes
    4 Posts
    865 Views
    PitaJP
    @pasib glad you found the issue
  • "Doubled URL" after login success

    8
    0 Votes
    8 Posts
    1k Views
    M
    Just for you guys troubleshooting this problem, if you are using https, then the address needs to be https in the config.json too.
  • Private Reply to Post in thread?

    3
    0 Votes
    3 Posts
    412 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
    363 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
    547 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
    771 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
    633 Views
    PitaJP
    Are there any errors in the server log?
  • Rules or welcome topic

    2
    0 Votes
    2 Posts
    310 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
    690 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
    889 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
    250 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.