Let's keep a list of NodeBB installations here :
If you are running your own NodeBB let us know we will add it to the list!
I talk to computers all day. Sometimes they talk back.
Let's keep a list of NodeBB installations here :
If you are running your own NodeBB let us know we will add it to the list!
Just merged the group-chat branch into master, it will be available in our next release which will most likely be 1.0.0.
There are some breaking changes and schema changes in this merge.
The upgrade script will go through all the chat messages and assign them to rooms. This might take a while depending on how many chats messages there are in the system. The upgrade script should show the progress in the console.
For all the changes check out this PR https://github.com/NodeBB/NodeBB/pull/3968/files
This NodeBB plugin pulls RSS feeds and creates topics in predefined categories.
https://github.com/barisusakli/nodebb-plugin-rss
To customise options for the parser, please consult the "RSS" page in the administration panel, under the "Plugins" heading.
npm install nodebb-plugin-rss
I have run some tests to check the memory usage.
The redis INFO command was reporting 811kb at the beginning since I was running the tests on db1. An empty NodeBB installation starts with roughly 405kb of memory usage.
start 811.44 kb
**Users **
100 users 1.04M diff (254kb) per user = 2.54kb
1000 users 3.61M diff( 2,885kb) per user = 2.885kb
10000 users 29.88M diff( 29,786kb) per user = 2.97kb
Posts (500 chars each)
336 posts 30.71M diff(849kb) per post = 2.52kb
996 posts 32.70M diff(2,887kb) per post = 2.89kb
9995 posts 54.39M diff (25,098kb) per post = 2.51kb
The memory usage per user is roughly 3kbs at 10,000 users. This value goes up as we have other structures that grow as the user count grows.
The memory usage per post is about 2.5kbs per post, keep in mind the posts I created are all 500 characters long.
So for 2,000,000 posts and 400,000 users :
2,000,000 x 2.5kb + 400,000 x 3kb = 5.9gb
So theoretically 6gb should be enough.
Hope that helps.
We recently added a new system group called Global Moderators, this group has access to the moderator tools but can't access the ACP. They can also ban users. We will let this group see banned users and flagged posts as well.
We have assigned some users as global mods on this forum as well https://community.nodebb.org/groups/global-moderators.
If you think we missed someone or you want to be a global mod ask for it here.
This plugin shows who is currently viewing a topic. This was a core feature that we removed a while ago, now it is back as a plugin
npm install nodebb-plugin-browsing-users
More info at https://github.com/barisusakli/nodebb-plugin-browsing-users
Notes
Currently only persona supports this, if you want to add it to your custom theme make these changes.
This is just a simple theme based on persona that modifies the topic view with a sidebar.
Here is a screenshot when you are at the top of a topic.
And here is one when scrolled down.
The sidebar is a bootstrap affix so it is always visible when you scroll down, useful when using infinite scroll as well.
The sidebar also reduces the width of the posts so I find it easier to read compared to long horizontal lines.
Reply, sort by and watch are always visible previously they would go out of screen.
There is a lot more room for browsing user images.
You can install it with npm i nodebb-theme-peace
Thanks to @Ben-Lubar we now have replies to posts. https://github.com/NodeBB/NodeBB/pull/5050
Right now it only displays one level of replies but you can modify your theme and remove this conditional https://github.com/NodeBB/nodebb-theme-persona/blob/master/templates/partials/topic/post.tpl#L87-Lundefined then you will get nested replies as well.
You can update to master or wait for 1.3.0 to get the feature. It looks like this.
As usual please report any bugs you find on our tracker at github.
It was inevitable. I will start...
Me and my wife in Turkey last summer.
This should be fixed on master and on this forum as well.
You are correct, when the input element loses focus it hides the dropdown hence it might miss the click on the result if you click hold a while and release.
Try to setup some swap if you can, and yes memory can be an issue over time if the database is on the same server as well.
You said you hit step 3 so that means the build was succesfull with async.waterfall
it means it is getting stuck in one of the plugins that is using 'static:app.preload'
you can find which plugins use it with the above grep command.
Looks like sounds module is just logging the error but not preventing the flow.
I suggest switching to async.waterfall and checking the plugins using 'static:app.preload'
hook and making sure the server has enough memory.
Does it work in prod if you disable sounds with this?
function (next) {
next();
// meta.sounds.init(function (err) {
// console.log('2.sounds');
// next(err);
//})
},
If it goes to next step with waterfall, it could be due to the server not having enough ram to run all the build process in parallel.
Keep it as a waterfall and take a look at your active plugins that are using the hook 'static:app.preload'
one of them is not calling the callback properly or has an issue.
You can run grep -rnw "static:app.preload" node_modules/
to search for that in the node_modules folder.
Ok now modify it again to the below to figure out which of those steps is breaking. Like below:
async.waterfall([
async.apply(cacheStaticFiles),
async.apply(meta.themes.setupPaths),
function(next) {
console.log('1');
plugins.init(app, middleware, next);
},
function(next) {
console.log('2');
async.waterfall([
function (next) {
meta.templates.compile(function (err) {
console.log('2.compile');
next(err);
});
},
function (next) {
if (!skipJS) {
meta.js.minify('nodebb.min.js', function (err) {
console.log('2.b.minify');
next(err);
})
} else {
meta.js.getFromFile('nodebb.min.js', function (err) {
console.log('2.b.getFromFile');
next(err);
});
}
},
function (next) {
if (!skipJS) {
meta.js.minify('acp.min.js', function (err) {
console.log('2.b.minifyjs');
next(err);
})
} else {
meta.js.getFromFile('acp.min.js', function (err) {
console.log('2.b.getFromFilejs');
next(err);
});
}
},
function (next) {
if (!skipLess) {
meta.css.minify(function (err) {
console.log('2.b.minifycss');
next(err);
})
} else {
meta.css.getFromFile(function (err) {
console.log('2.b.getFromFileCss');
next(err);
});
}
},
function (next) {
meta.sounds.init(function (err) {
console.log('2.sounds');
next(err);
})
},
function (next) {
meta.sounds.init(function (err) {
console.log('2.blaclist');
next(err);
})
}
], next);
},
function(results, next) {
console.log('3');
plugins.fireHook('static:app.preload', {
app: app,
middleware: middleware
}, next);
},
function(next) {
console.log('4');
routes(app, middleware);
next();
}
], callback);
Sorry it's a bit long due to all the callbacks and error logging.
@nicolas What logs did you get did it not print 3
?
@nicolas Ok if it's not triggering for ./nodebb start
you will have to add some more console.logs in here basically add a console.log for each block in that async.waterfall(). My guess is one of the steps before routes(app, middleware);
is breaking in production mode, like a build step or a plugin that uses static:app.preload
. Change the code to look like this .
async.waterfall([
async.apply(cacheStaticFiles),
async.apply(meta.themes.setupPaths),
function(next) {
console.log('1');
plugins.init(app, middleware, next);
},
function(next) {
console.log('2');
async.parallel([
async.apply(meta.templates.compile),
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'nodebb.min.js'),
async.apply(!skipJS ? meta.js.minify : meta.js.getFromFile, 'acp.min.js'),
async.apply(!skipLess ? meta.css.minify : meta.css.getFromFile),
async.apply(meta.sounds.init),
async.apply(meta.blacklist.load)
], next);
},
function(results, next) {
console.log('3');
plugins.fireHook('static:app.preload', {
app: app,
middleware: middleware
}, next);
},
function(next) {
console.log('4');
routes(app, middleware);
next();
}
], callback);
Run it in prod mode and let me know the output.
I am not sure if 1.0.2 has ./nodebb plugins
command but if it has run that and paste the output. If it doesn't have that command you can run the following in mongodb cli db.objects.find({_key: "plugins:active"});
Also put a console.log here and check if it is triggered in dev and ./nodebb start.