I've been working more on my P2P imageboard software peerchan, and after the underlying p2p database engine (Peerbit) has undergone some major upgrades, the performance and stability are a lot more robust now. There are also a lot more UX improvements recently based on user feedback. I've attempted to keep the dependencies minimal and make the install process as simple as possible. There are several nodes online to my knowledge but I don't necessarily have a full map or total knowledge of the network. Feel free to try it out and join the swarm lol.
https://gitgud.io/threshold862543/peerchanFor moderation I've kept a totally "flat" architecture where each node is free to delete any content at any time. But this deletion only applies to the node itself by default. If you want to be able to delete things on other user's nodes, they have to subscribe to your node as a moderator, and then when you delete something, that deletion action will be broadcast to others and they will accept it in their own local database. So you can subscribe to other people as moderators if you trust them to be able to delete things for you.
Each board is it's own independently-seeded topic and you can watch (join) or unwatch (leave) a board topic at any time.
There are various config options to customize your experience too.
Posts and file uploads are made under a newly generated temporary identity every time (by default) for the sake of anonymity. If you want to anonyitymax at the networking level I recommend using Whonix to connect, though ideally eventually native integration with Tor can be developed for Peerbit or libp2p itself. That being said, already there is no association between a post and the uploading IP, when you receive a post from another node, the original poster is not known, as posts and files are relayed from node to node without recording the source.
This is the Peerbit p2p database system it uses which is built on libp2p.
https://peerbit.org/#/To explain the setup a bit, the default configuration opens a webserver on localhost port 8000 that serves pageviews to you and allows you to browse and post to the p2p database, which connects to other nodes in the background.
If you want to make this into a publicly facing website via nginx or something, there is the option to enable "gateway mode" where you can enable or disable certain features (like the ability to delete posts) for public users accessing it over the internet. Essentially this allows other people to interact with your node over the internet and post using the traditional client-server concept. You can also disable all features when not logged in, making it so only you can browse and post and moderate when logged in (eg. from your phone or another computer elsewhere) but other internet users won't be able to access the content on your node.
I've gotten a node to work and successfully replicate posts and files on Android in the past too, using Termux, so you can also do that as well.
Live instance at
https://peerchan.net