Good bye Twitter. Hello Fediverse!
If you are not familiar with the Fediverse then get ready for a revolution.
The Fediverse is an open social network of decentralized servers that are run mostly by regular people. There are many platforms that support the Fediverse like Mastodon, Pleroma, and others.
One of the biggest things that attracted me to the Fediverse is that this is a true social networking community. Instead of doom scrolling past content that you have no interest in, you are only shown what you have chosen to see and you are encouraged to interact with not just the content but the people behind it as well.
The Fediverse is also where a great many refugees from Twitter are flocking to right now.
It Alwasy Starts With a Presentation
Well, not always but in this case I got inspired again by a recent presentation my friend Ralph Hogaboom made on a Discord server I participate in.
I started looking into alternative social media platforms many years ago as I was getting tired of my social participation being the drive behind creating billionaires. The first platform I started looking at was Diaspora as it was open source and looked like it would be a great alternative. Unfortunately, this platform had issues that I could not get over and so I dropped it and went back to being a slave to Big Social.
So, back to this presentation. I had heard about Mastodon and the Fediverse but hadn’t really gotten my feet wet in it. We had a really good discussion about the platform and how things worked and the differences between the Fediverse and other social platforms. The fire was lit and I almost pulled an all-nighter reading about the different self-hosting options and such. This lead me to the decision to fire up my own instance and join in the fray.
Pleroma or Bust!
The predominant fediverse platforms are Mastodon and Pleroma and both are really magnificent open-source projects. I ultimately went with the Pleroma platform as it was a bit lighter on resources, still feature-rich, and I felt it needed a little love.
Fediverse Hosting
Sitting next to my desk is a nice little server I run for my home office that has a lot of resources and I almost used it for this project. I relented because if I was going to do this I really wanted it to be available to more than just me and my family, plus I have no control over how Comcrap is going to decide to change their routing and it could break the whole thing. So, I decided that I was going to use some cloud resources I already had available to me on Digital Ocean and launch it right.
Resources, Networking, Storage, Oh My!
You can install Pleroma on a single server and have it host everything, database, application server, storage, etc. Having worked with a lot of web application systems in the past I know that the one server option is just not good when you want to be able to support a large number of users, so I decided to split them up and host everything using Digital Ocean resources.
My model is actually pretty similar to others I have used and uses one server for the application itself and front-end UI, one server for the database, and a storage solution which in this case I used the Digital Ocean Spaces Object Storage.
The Application and Frontend Server
I had debated on installing this under Debian or Ubuntu and Ubuntu won out mostly because Pleroma documentation was much more Ubuntu-centric.
As I was looking to keep the initial costs low I chose a 2 vCPU,
4GB / 80GB Disk droplet as that was about double what the recommendation was.
The Database Server
I had to give this one some thought as Digital Ocean has a very nicely managed database platform that provides backups, high availability, and automatic failover.
The downside to this is that it is more expensive than spinning up a smaller droplet that has more resources, so that is what I did.
The database droplet has 1 vCPU
2GB / 50GB Disk and again is running Ubuntu.
Storage
The included storage for each droplet is fine for starting out but I wanted to make sure that there would be enough space for the long haul. Enter Digital Ocean Spaces.
Spaces is an S3 compatible object storage system that is cheap. $5.00/mo for each 250GB of storage cheap!
Thankfully S3 object storage is becoming more widely used and the creators of Mastodon and Pleroma both support it, even if it is weird to configure.
What's in a Name?
Full disclosure I own a few different domain names and I could have hosted this under any number of them but I really didn’t want this thing looking awkward so I went hunting for a new name that would just be for this project.
After much searching I fell upon the Gaelic word Ceilidh, pronounced Kay-lee, which means social gathering. Perfect! So, I trotted off to my registrar, Namecheap, and was very pleased to see that ceilidh.online was available and grabbed it right up.
Things were getting off to a really nice start.
Putting it together and making it all work
Now that I had all the components figured out it was time to start getting everything configured and talking to each other.
The first step was getting DNS and email configured for the new domain. DNS I hosted on Linode as I like their DNS management better than DO’s and email I hosted on my Zimbra deployment.
Next I got the Object storage deployed and API keys generated for accessing it.
The first server to get spun up was the database server. This one is locked down for access and PostgreSQL itself is only listening on the local loopback and internal private network. Once PostgreSQL was installed and some basic configuration completed I used PGTune to make adjustments to the resource configuration and optimize it’s performance.
The Pleroma server was last to get configured and it honestly went pretty smooth. The Installation Documentation is very complete and made the whole process very easy, except for the S3 Object Storage. Getting the storage component connected was a little bit of a pain because the online documentation didn’t really specify any sample configuration other than how to talk to AWS. After a little trial and error though I was able to get them talking and I was able to upload a photo and see it land on the storage deployment.
For security the database server is locked down to the outside world and the Pleroma server talks to it using the private network option. The Pleroma server is only allowing http and https connections from the outside world and for now I am only doing the configuration using the configuration files. I am hoping that I can isolate the administration front-end onto a different port which would allow me to only allow admin connections from approved IP addresses.
Are You Ready to Join The Fediverse?
I know that a lot of people don’t want to dig into this stuff as much as others and that is okay. I would encourage you to go and explore the Fediverse by finding an instance that suits you and create an account.
It’s a very different experience, so be sure to give it some time and really read what is out there. Once you get used to how things work I’m sure you will want to use it more.
You can find me on there as @tiesa and I welcome you to join my instance at https://ceilidh.online.