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:
make
You 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/bloat
cd /tmp/bloat
grep -vn '^#' bloat.conf
not sure what this one doesmake
sudo make install
cp /tmp/bloat/bloat.conf /etc/bloat.conf
sudo vim /etc/bloat
or whatever text editor you're using, put vim here because I'm a masochistsudo make install
listen_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/static
sudo 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.com
sudo 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/default
sudo 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 nginx
sudo apt install certbot python3-certbot-nginx
systemctl stop nginx
sudo certbot --nginx -d bloatpisscum.mooo.com
It should ask you for your emailsystemctl start nginx
If 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.