NodeBB v4.0.0 — Federate good times, come on!
Today's the day! :tada:
After nearly a full year in development, NodeBB v4.0.0 has landed, bringing federation between NodeBB instances (and a connection to the wider fediverse of social media) to forum software.
Fedi-what?
Fediverse! Here's a TechCrunch primer about it, but at the end of the day, it doesn't really matter. All you need to know is that NodeBB plugs in to a wider social network so that you don't have to cultivate an audience, they're already there.
The genesis
It was back in mid-2023 when I had the initial idea of interconnecting NodeBB forums. Back then, I had far smaller ambitions... I wanted a singular NodeBB to be able to communicate with other forums running NodeBB. To do that, we'd need to build out a centralized service to act as a bridge between instances, and corresponding slim clients on individual installs to consume the relayed data. At the time, concept like decentralization were not even part of my thought process.
It was during this period when I was doing my research that I stumbled on Mastodon, and later, ActivityPub, the protocol that powers it all. Since then, it's been one wild ride getting NodeBB to speak the same language.
Funding
Soon after dipping my toes into all that Mastodon had to offer, I discovered the NLNet Foundation, and their corresponding fund — NGI Zero Core. With the promise of funding, NodeBB could fully commit to implementing the protocol in short order, instead of piece by piece over time. We sent in an application and were delighted to be approved for the August 2023 call.
Their funding was instrumental in providing the financial stability to experiment with ActivityPub and to participate in developer circles, such as the SWICG, FediForum, and much more.
The fund continues to operate, perhaps you could benefit, or donate to the cause. It has certainly made a difference to NodeBB.
Federate, or not, it's your choice
NodeBB v4 comes shipped with the capability to interact with other NodeBB forums and any other ActivityPub-speaking software, right out of the box. We opted to make this a core feature instead of a plugin, since there were many changes made to core to support even the concept of accepting content from outside itself.
To that end, any users upgrading from v3.x will automatically have federation disabled, in order to reduce surprise. Any new forums will federate automatically.
You can turn federation on and off (and adjust some other fun toggles) directly from ACP > Settings > Federation (ActivityPub)
.
Even after turning federation on, how you use it shapes how well connected you will be. There is no centralized authority artificially boosting your content, so the name of the game is establishing two-way follow relationships to other sites.
The ActivityPub Equalizer
We're not alone in this journey to interoperate with other decentralized services. We're not even the only forum software to attempt to do so.
- Discourse has a working plugin.
- Ghost is building out in the open.
I specifically highlight these two because they both started in the early 2010s, same as NodeBB. It's always been a bit of an informal competition between us, and we always checked in on what the others were doing (growth-wise, pricing-wise, etc.) Truth be told, I don't think the ghost team ever really noticed NodeBB, but I digress...
The funny thing about ActivityPub is that at the end of the day, the overarching goal of seamless communication breaks down any barriers between competing organizations.
NodeBB and Discourse have been vying for the exact same market share (forums, community-building, self-started or enterprise) for over 10 years, and it was only after ActivityPub came around that the dev teams even started talking to one another.
Funny how that works.
So how does it all work?
Our documentation portal has been updated with the latest information about the ActivityPub functionality in v4.
If you have any questions about how it works or how to configure some aspect of it, please don't hesitate to reach out in the corresponding v4 support thread.
If you run NodeBB, the quickest way to see this in action is to upgrade to v4, and then paste this post's URL into your search bar. It should show up automatically, and you should be able to read and reply to it, directly from your own forum. Neat!
If you have deployed NodeBB v4, and you updated to v4.0.1, please update now to v4.0.2 which fixes a regression that silently broke outgoing user follows.
@julian@community.nodebb.org said in NodeBB v4.0.0 — Federate good times, come on!:
Do we need need to refollow?
@projectmoon@forum.agnos.is if you browse to the account it will show as unfollowed, so you will need to refollow, yes.
Hi from Lemmy :)
@julian
Upgrading to 4.02 tonight. Let's see how it federates. Congrats and thank you for your work.
@julian I've been unable to get AP following to work in either direction. I mean it is sometimes possible to follow somebody and get followed by other sites, but no actual posts ever come into or out of my nodebb instance (forum.n66.pl). The only thing that works is importing posts directly by entering their URL in the search area, which is also temperamental – sometimes the same post can be imported and sometimes it can't. I also tried following people from individual categories. It never worked except for one instance where it seems to have been stuck with a "pending" message, but I have no way of accepting or rejecting the follow request on the other side (it should be accepted automatically). Sometimes the same happens when entering followed people's URLs in the search panel. Looking forward to fixes.
Hi @Jakub-Urbanowicz! Let's try to figure out these issues one by one.
Looking at your site it looks to be an upgrade from an existing NodeBB, yes? In that case, ActivityPub is disabled for you and will need re-enabling.
Please make sure that the global toggle is on from the Settings -> Federation page.
Secondly, all of your categories are not automatically federating by default. Go into Manage -> Privileges and make sure that:
@julian Can you give me some ideas what to do next?
@Jakub-Urbanowicz can you give me a example of something that cannot be pulled in?
Also run the forum under dev mode (
./nodebb dev
) for some additional logging around ActivityPub.@julian Some of the users I am following (or so it reads on each user's page):
@ju@pol.social (Mastodon)
@kodmalopolskie@soc.citizen4.eu (Friendica)
@oko_press@101010.pl
@kravietz@agora.echelon.pl
@julian@community.nodebb.org
https://community.nodebb.org/post/102755 – imported by link (can't post remotely)
Nothing special happens when running dev mode. Just some plugin incompatibilities get printed:
2025-02-15T05:36:53.950Z [4567/3360] - 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.I've been able to npm unl / npm i nodebb-theme-harmony, but I wasn't successful with plugin-composer-default or plugin-custom-pages, so I gave up on the rest of them. Every time I ran npm I saw a warning that my nodejs was outside requirements (probably too new, if I got it right).
In trying to fix things I have made changes to nginx reverse proxy configuration, but I seem to have made things even worse, which is not a bad thing, because in that may lie the solution.
I'll be happy to provide log and config files by a secure channel of your choosing.
@julian
Here you are some AP errors from a few days ago, before I made any changes.
Good Idea to give federation issues a separate topic. I have made the changes on your list resulting in posts and chat messages coming out of the forum, but still nothing can be pulled into it, no matter how many people or sites I follow or try to follow. Funny, I couldn't find how to access AP users that I am apparently following other than by re-following them. They are not listed among local forum users.
My forum.n66.pl-proxy.conf is now very similar to official recommendations and doesn't seem to have any effect on AP following/sharing capabilities.
I am unaware of server tweaks to facilitate AP following/sharing.
@Jakub-Urbanowicz your ActivityPub user is resolving, but the URLs are incorrect.
Please update your
config.json
so that it properly reflects your site's url, it should behttps://forum.n66.pl
, with the https@julian That and upgrading to 4.0.4 helped a little – at least direct messages are coming through, but following still not working in either direction. Following seems to be set up correctly and confirmed on both the forum and other AP instances. Testing with Friendica and Mastodon. Only the messages are stopped somewhere.


@julian I am now unable to import threads using the search area. It worked a few days ago (before 4.0.4) and maybe before changing http to https in config.json. Now I can only follow users without actually following their content (no following is operational). While importing threads worked, it was still useless, because I couldn't join in on conversations.
Yesterday I experimented with different proxy_pass values in my nginx proxy.conf file:
*
proxy_pass http://forum_n66_pl;
– original configuration*
proxy_pass http://127.0.0.1:4567;
– no effect on AP behaviour, nodebb's admin privileges affected*
proxy_pass https://forum_n66_pl;
– resulted in a "Bad Gateway" error.I attach the recent log file: https://u.pcloud.link/publink/show?code=XZun2L5Zy2PaNwGjuh72kxKbh6Wl9jEb4FmX
Please tell me you know how to fix it. :face_with_rolling_eyes:
@Jakub-Urbanowicz
http://forum_n66_pl
this suggests there's an upstream block.Can you paste your entire nginx config?
@julian Please find attached a summary of my nginx settings.
The back-end installation of NodeBB was done manually in a home directory, while the reverse proxy is part of on automated server solution called Webinoly. It is typically used for self-hosting WordPress, but not only. It worked pretty well before the advent of Federation capabilities, so I wasn't bothered. I just uncommented some proxy headers in /etc/nginx/apps.d/forum.n66.pl-proxy.conf and added "X-NginX-Proxy true" as per documentation. Mongodb (7.0) is provided from a deb repository as is nodejs.
I'm not sure why the web root directory as mentioned in /etc/nginx/sites-available/forum.n66.pl does not exist (root /var/www/forum.n66.pl/htdocs). I don't even have /var/www/forum.n66.pl/.
Thank you for helping me.
@Jakub-Urbanowicz whatever your nginx config, if it was working before, it should not require any changes to support federation.
I would revert back to a working config if you're seeing issues with regular usage of NodeBB. Otherwise if the site is loading fine then tweaking nginx (probably) won't fix anything and the problem likely lies elsewhere.
I will look into your configs tomorrow.
@julian just a moment; it's a bit complex, because configuration is divided into several files.
Hi! I am also having federation issues on a fresh install of 4.0.3. For example, I can not see the content of all the posts here including the original post. I think I see the content of around half of the posts. I tried to reply on another post on community.nodebb.org, but after ten minutes it is still not visible at community.nodebb.org.
Ironically, I am not sure this reply will reach community.nodebb.org either.
@reynir OK great! This one went through. However, I still only see about half of the posts.
(Finally, sorry for barging in on your topic - perhaps we can fork the topic somehow)
@reynir@forum.fedi.dk the post content being blank issue might be an unrelated bug. I'm still trying to figure out that one.
@julian@community.nodebb.org thanks for the reply! Is there a tracking issue I can subscribe to?
(I am having a lot of fun with our new NodeBB instance btw!)
@reynir@forum.fedi.dk there wasn't, so I added one:
https://github.com/NodeBB/NodeBB/issues/13172
I am afraid I hit a wall, No idea what else I could do short of reinstalling the whole thing.
@julian I read this whole thing wondering how NodeBB posts would look from my instance and then clicked your link at the end and realized I'd been reading one the whole time lol. Super cool, hope this takes off!
@julian It is interesting to see a long form content in the Fediverse. I'm still not used to it.
Pretty cool.
@julian 👏👏👏
@julian Amazing stuff.
Congratulations!!
I have some questions, probably because I am still trying to understand this activitypub thing.
1- If I write this reply here, that means is now public and can be read on other mastodon/activitypub servers/locations?
2- I saw people replying to you on another mastodon servers and their comments appear on the forum as replies, which is amazing, but, can they delete their messages on their mastodon server? And if they can, will that deletion be sent across and be removed from the database of this forum?
3- I also see that the people that replied, got an user and a profile on this forum, will they know about it? can they login and do something about that user? How do you identify "created social users" from "standard registered users" on your nodebb install?
Thanks!
@julian great job!
@julian so cool, can't wait to upgrade my nodebb forum to V4 (I'm exclusively on mobile for a few days)
@julian This is really awesome! Forum software federated with Fedi-Power! Cool stuff. I love it
I've just installed a new instance of NodeBB and it works beautifully. Some questions:
@projectmoon@forum.agnos.is
Is currently outstanding: https://github.com/LemmyNet/lemmy/issues/5354
You should be able to do this, although I may have to double check the logic. There have been reports that it is not working as expected.
@julian@community.nodebb.org said in NodeBB v4.0.0 — Federate good times, come on!:
I'm wondering, as a stopgap solution, would it make sense to have some kind of rules engine that allows topics coming in from the fediverse to automatically be moved to NodeBB categories? Kind of like a somewhat less elegant sync.
@projectmoon@forum.agnos.is thanks for the suggestion, that's definitely something I'd want to consider.
Sort of a post queue for federated content that needs automatic or manual review before it is automatically slotted in a category.
@julian@community.nodebb.org Thanks. Even something as simple as mappin topic tags to categories automatically would work I think.
@projectmoon@forum.agnos.is careful with that though, not all tags are the same, some have a higher signal-to-noise ratio, but others would just be filled with garbage 😬
@julian@community.nodebb.org said in NodeBB v4.0.0 — Federate good times, come on!:
I think the best way, then, would be to have rules that map various group actor URLs to categories, and possibly also tags. Nothing automatic. Only configured. Of course, once Lemmy fixes the ability of Group actors to follow other Group actors, this will be a non-issue.
One other possible solution, which is employed by Misskey et al., is a proxy actor. It's a special user that follows other users, and relays info within its own instance. It's used for doing things like adding a remote user to a list without directly following them. The proxy account follows the user, and then your local instance adds the remote user to your list. But all ActivityPub interactions go through the proxy user.