In the next few (maybe one more post) posts I'll explain how I run my own personal Mastodon instance, and why.

As a disclosure, I need to reminds you that I am not an expert on running Mastodon, nor how to fix their issues/problems, but I know one thing or two about how to run it, and I am sharing my experience with you.

Mastodon on K3s:

  1. Part 1, the Hardware.
  2. Part 2, the Software.
  3. Part 3, the Installation.

My Personal Instance:

My personal Mastodon instance (https://micro.srvr.dev) was created at first on my own RPI cluster which runs K3s, and it was accessible to the outside with the help of Cloudflare tunnel.

After a few days, I decided that it is better to run it on a dedicated resources, as I need my RPI cluster to be something I can format/redos .. etc at any moment.

Why to have a Personal Instance?

If you are like me, you might like to have your data under your control, we already give a huge amount of data for other companies, but if we should control what we can control. 

Mastodon have an export functionality, but it wont export your posts, only media (and some other data) but not your posts.

Plus, I know that most of the free instances are running by individuals, so no need for me to add more cost on them if I can afford having my own instance.

Lastly, I don't want to be under childish rules, sadly some server mods started to act like (not sure if you are old enough to remember) the forum mods ?‍♂️, and that they have a say in everything you say and they will warn you over or even limit your access ..etc. I think we are all adults here ?‍♂️ .

 The Hardware:

I wanted to take this experience as a way to continue learning K3s on my own peace while also forcing myself to maintain it, as nothing will be more better than having something live to learn and experiment with.

So, I decided to rent 3 servers to mimic my RPI setup, I didn't go for high end servers, at the end its a playground experience for me, so I picked 3 budget KVM servers hosted in Frankfurt, DE, with the following spec:

  • 4096MB RAM
  • 2048MB SWAP
  • 35GB SSD RAID-10 Hard drive
  • 2 cores @ E5v4 CPU
  • 1 IPv4
  • /112 IPv6
  • 4TB Bandwidth
  • 10Gbps Port
  • Linux OS

With a $25/y cost for each server, so in total I am paying $75/y for the hardware.

I got asked where I got the servers, I got them from https://greencloudvps.com/ but keep in mind that I am not associated with them in anyway, I am just a customer and this is my first experience with them, till now they are nice.

The Media Storage:

This is something everyone had talked about, running your own instance will acquire a huge amount of media cached from other servers, so you will need to be careful, and since the storage of my servers is not big, I decided to take the advice of my friend Arda, who also run his own instance, and use S3 buckets, for sure I stayed away from AWS and tried Cloudflare R2, and finally switched to iDrive e2, since its much cheaper (1TB is $40/y) and Arda is using it ? ..

To give you an idea of how much data you will acquire, check the image below, in one day I acquired nearly 11GB of cached media

So you will need to have something cheap and always cleanup your media caching folder from time to time.

But, you may not acquire such data as it will depend on how popular your instance will become, and if you ever decided to add some relays to your instance.

I on the other hand, added a few relays, a move that I found good to make my timeline more alive.

The Services:

For this one, you will need to make sure that you have an account with Cloudflare and have enabled their Zero Trust service too.

Also, you will need a domain name that is managed via Cloudflare.

The Management App:

You are free to use your console or do like me, setup the servers using the console then use Lens (or OpenLens) app to manage your Kubernetes (K3s) cluster. Both apps are the same except one will ask you to login using your paid license (which you can do a small trick to remove), the other one, from the name is Open ?‍♂️.

This is how my RPI looks like when I use OpenLens

In next post, I'll explain more how I get everything up and running.