BloatFE is a web frontend for Mastodon API compatible software (Mastodon, Pleroma and probably some others that I'm unaware of.)
BloatFE is rendered on the server side and requires no Javascript (although there's so called fluoride mode that includes some basic JS functionalities). On the other hand, PleromaFE is pretty much purely Javascript and is rendered in browser (try it yourself, execute curl https://shitpisscum.mooo.com/ and see what you get). This means it's much lighter and can run on machines with much lower specs than required for PleromaFE and it can also work with a lot of "obsolete" browsers that don't support certain Javascript functions required for running PleromaFE.
In order to run BloatFE on your machine (my machine is running Ubuntu but this should work on any Linux distro) you need the following:
makeYou also need TCP ports 80 and 443 accessible so if you're using any firewall (which honestly you should on any internet connected machine) don't forget about that.
sudo apt install make should do the job
This part requires a web browser so if you're doing this on a server wiithout and graphical desktop you'll need another machine. The installation itself goes like this:
https://go.dev/doc/install in a web browser. Under "2. Go install." select Linux.cd ~ to go to your home directory. Execute curl -OL https://go.dev/dl/go1.18.4.linux-amd64.tar.gz replacing the link with the one you copied in the previous step.sudo tar -C /usr/local -xvf go1.18.4.linux-amd64.tar.gz again replacing the file name with the onje you just downloadedsudo apt install nginx should install nginx and create a systed service. Then sudo systemctl enable nginx to make it start at boot and sudo systemctl enable nginx to start it.
Now the fun part:
git clone git://git.freespeechextremist.com/bloat /tmp/bloatcd /tmp/bloatgrep -vn '^#' bloat.conf not sure what this one doesmakesudo make installcp /tmp/bloat/bloat.conf /etc/bloat.confsudo vim /etc/bloat or whatever text editor you're using, put vim here because I'm a masochistsudo make installlisten_address you can change the port or leave the default oneclient_website put the domain you're going to host it on. In my case it's https://bloatpisscum.mooo.comdatabase_path=/tmp/bloat/database, templates_path=/tmp/bloat/templates and static_directory=/tmp/bloat/staticsudo rm -r /tmp/bloat/database/*Try starting Bloat by simply running bloat. It should say something like listening on [WHATEVER]. Kill it with CTRL+C
You should create a systemd service to run it in backround but me and a few other people had no idea how to make it work so I came up with a less elegant but much simpler solution:
nohup bloat & After that press ESC or CTRL+C to exit back to the terminal, it should keep running in backgroundsudo htop find bloat (there should be a few of them, choose any), F9 and choose SIGTERM (should be the default option)sudo mkdir -p /var/www/bloatpisscum.mooo.com/html (out your domain instead of course)sudo chown -R $USER:$USER /var/www/bloatpisscum.mooo.com/html and then sudo chmod -R 755 /var/www/bloatpisscum.mooo.comsudo vim /etc/nginx/sites-available/bloatpisscum.mooo.com. Content of the file should be the following:
server {
listen 80;
server_name bloatpisscum.mooo.com www.bloatpisscum.mooo.com;
location / {
proxy_pass http://127.0.0.1:12345/;
}
}
Replace the server_name doamin with your domain and port in proxy_pass with the one you set in listening_address inside bloat.conf file.
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/defaultsudo vim /etc/nginx/nginx.conf Find the server_names_hash_bucket_size directive and remove the # symbol to uncomment the line. If you are using nano, you can quickly search for words in the file by pressing CTRL and w.sudo nginx -t If it doesn't throw any errors start it sudo systemctl restart nginxsudo apt install certbot python3-certbot-nginxsystemctl stop nginxsudo certbot --nginx -d bloatpisscum.mooo.com It should ask you for your emailsystemctl start nginxIf everything went well you should be able to access BloatFE from any web browser
A quick note about Let's Encrypt certificates: they expire after 90 days. In this configuration certbot should renew them automatically but since it's been less that 90 days since I set it up I can't confirm whether it works. I'll make sure to update this page after it does or does not get renewed. If your domain is close to expiration Let's Encrypt will email you. If that happens you can easily renew your certificate manually, just stop nginx, run sudo certbot renew and start nginx again.