One-month Journey in Self-Hosting Pleroma

It has been two years since i joined the Fediverse, and in the spirit of self-hosting everything i can, i have set up my own Pleroma instance on my VPS.

Technical Aspect

Since i have been setting up everything as a Docker container, i was looking for guides to install Pleroma on Docker. Surprisingly, Pleroma doesn't officially support Docker installation, or at least doesn't recommended it on their docs.

I turn to look for a guide elsewhere, it seems improbable that no-one has tried it.

First i stumbled upon angristan's repo and immediately shot up a docker-compose file.

And the fact that i need to build it first those scared me a bit. I've been enjoying ready-to-use image from Docker Hub for my container, and compling or building sounds too technicaly for my grasp.

But actually the provided Dockerfile does most of the job, i just need to add

      context: .

on my docker-compose file, and it builds itself.

That parts done, and now i stumbled upon error. (To be honest, if i didn't encounter any error during my first try, i'd have been suspicious. At this point, error and failure are the norms, and troubleshooting is the learning path.)

If i remembered correctly, there was two configuration files, and i was confused between the two. And thus it failed to build. (I have take a look at the repo again and it seems clearer now, but in retrospect i just don't understand much about Pleroma.) Took me another three days to pour over reading Pleroma docs. It is quite simple, but arcane for me then. Well, am i not qualified enough to host my own Fediverse instance?

My second try was when i stumbled upon repo.

Upon first look, it's noob friendly. They have prepared a script to manage your installation. First, i need to edit provided .env.dist and config.dist.exs and rename them to remove the 'dist'.

The .env file doesn't need tweaking, maybe just the UID and GID to match your current user.

The config.exs file though, is a different matter. For reference here is the entire config cheat sheet.

The provided file is enough, you just need to tweak the database part, web endpoint (along with the secret key that you can generate), instance part.

I added a few of my tweaks based on reading the Cheat Sheet:

config :pleroma, Pleroma.Web.Endpoint,
  url: [host: "", scheme: "https", port: 443],
  secret_key_base: "v3ry/seCre7-keY-8as3",
## Configure cookie flag and CSP policy
  secure_cookie_flag: true,
  extra_cookie_attrs: [

## Enabling settings from web admin
config :pleroma, configurable_from_database: true

## Disabling shoutbox feature
config :pleroma, :shout,
  enabled: false

Afterwards, the build process is quite seamless once you figured out the quirk on the config file.

Once then, you are good to go to dwelve into your own corner of Fediverse!

Not-so-technical Aspect and Post-Install

This is a must read article for Pleroma or maybe any Fediverse instance out there:

In short, it explains your new and barren instance. The blogpost explains the concept of federation in Fediverse quite simple. To make your instance more lively, you can follow more people, or you can use relay instead.

Note that there are some caveats in using public relay, that i learnt only thanks to others.

1. What it does is repeating posts all over following instances.

So if there are some offensive or malicious instances on the relay, it would be relayed to your instance and your federated timeline. You will need to spend extra time curating the right instances and the right relay. It might be worth your case, but for mine it doesn't.

2. Federation works like email.

Your instance store a local copy of the others' posts, this might need to be taken into consideration for those who have limited storage, like i do in my VPS. This is the dealbreaker for my timid 30GB storage.

In my opinion, the best way to populate your instance is still to follow quality people all over the Fediverse. is a very good reference to start.

The Downside

After one month of self-hosting, i would like to state that it is not a smooth journey. There are, in my observation, some downsides.

1. Lower Exposure

For people who cared a lot about exposure, self-hosting a single-user instance might not suit them well. The fact that your post propagates to a lesser extent than in bigger instances, due to technical factor, is enough for me to rethink again about my position.

The solution seems to use relay and have people following you. So, if you already have a big following, it might not bother you much. If there's an existing solution for better exposure on small instance, please leave a reply!

2. Not So Easy Finding New Accounts to Follow

In the same vein as point one, looking for new accounts to follow is harder. At first, you need to enter the handle of the account to your searchbar to follow them, since most likely you haven't federated with their instances. This forces you to rely on external service (or visiting other instances) to discover accounts to follow.

Also, the fact that you can only see their posts from the moment you follow them (and some pinned posts along with assortment of few posts if you are lucky).

tusky logo: "server can we have data at home?" mastodon logo: "we already have data at home" the data at home: "0 posts 0 follow 0 followers" A highly accurate image depicting newly discovered account. Credit goes to

Solutions might be to follow to discover new accounts, or creating an account on bigger instance just for account discovery.

3. Higher Maintenance Cost

Cost doesn't only mean money, but also time. There is bound to be some quirks along the way, and you need to be ready to troubleshoot them. Of course, some might relish in their journey to troubleshoot problems, but for some this is a no-go.

Alternatives might be using hosted solution, such as or (spacebear have revamped their landing page, it's nice). Thus you only need to spend money and no maintenance hassle.

Closing Remarks

Self-hosting is not everyone of course. Maintaining an instance is not an easy work. For those in bigger instance, you should thank and support your instance admin for their hard work. The less you see them working, the better they are at their job.

But for those who dared to venture into the land of unknowns, Pleroma is simple enough to install, even without Docker. Why not Mastodon? It's a different entity, designed to scale to hundreds of thousands of users and thus, more complex than Pleroma.

For my usage, a VPS with 2-core, 2 GB of memory, and 30 GB of storage is enough. Most of the time Pleroma is only using around 10-20% of the CPU and at around 200-400 MB of memory. I'm hosting my Pleroma instance along with all other services (including this federated WriteFreely blog!), so it should be light on resource. Though it should be better if you have more cores, since it would make the building process faster.

Storage is one you should watch if you have limited space.

Anyway, this is how my journey has been so far. Not the smoothest experience ever, but it is manageable enough. Thanks for all the people who made self-hosting Pleroma possible, i would never reach this far without you!

P.S. If you spot some mistake, please @ me and i'll rectify it. I'm no way expert in Pleroma, Docker, or Fediverse, i'm still learning along the way!

Note: I've migrated my Pleroma instance to Akkoma due to faster development pace. See here.