Taking on the Mammoth
And nuking it from orbit: The quest for self-hosted social media
I mentioned self-hosting previously, and there I talked about one of my goals for 2026 being to self host my social media presence online, becoming entirely self-reliant.
My current mastodon instance, masto.ai is an excellent one, hosted by a guy named Stux who runs several of the larger non .social instances around. He's done a great job over the several years I've been on masto.ai (since 2022), so much so I subbed to his Patreon to help with running costs.
However the itch to roll my own server got stronger over the latter half of 2025. More for the experience of running my own social-media instance than anything else.
The hunt begins...
So I began by looking at the obvious choice, Mastodon. The primary issue with it is that it's extremely resource-hungry. Mainly around storage space due to the way federated media is handled.
Given my VPS had only 50Gb of storage, and half of that will normally be taken up by backups, I discounted Mastodon.
I then looked at other options, and settled on GoToSocial. I was mainly restricted by the options afforded to me by Yunohost, the software I have installed on the VPS to help administer server-side apps such as ActivityPub instances.
The choices were mainly few: Mastodon, GoToSocial and Pleroma. And the Pleroma installer was broken, as was the Mastodon one, which had the wrong version of the ruby Bundler GEM in the install script.
So I installed a GoToSocial instance, mainly to play around with and get a feel for it, and how it worked, both front and back of the house. It was... fine? It isn't resource-intensive, like Mastodon, and that suited me grand.
So I had it up for about 3 or 4 days when I discovered that it was missing one fairly important (to me) feature: lack of quote-post support. It may sound like a small thing, and in reality it is, but to me I enjoy using quote-posts and have done since ye olde twitter days.
So that kinda killed the idea of using GTS for me.
So I started looking at the other options, and lo and behold, as a result of me nagging the Yunohost devs on Github, they'd updated the install script for Mastodon!
So I thought, "Screw it" and upgraded my VPS to and installed the damn thing!
Administration
After I got the Mastodon instance up and running, I was working with it for a day or so and realised I couldn't set up 2FA on the admin account!
This is down to how Yunohost handles the installation, which rather annoyingly enforces an LDAP SSO system, meaning I had to login to the instance with the same account I use on Yunohost. Eurgh.
I went through umpteen potential fixes, but nothing worked, so in the end I had to nuke the instance from orbit and go again.
This time I switched off LDAP prior to even logging in, nuked the pre-installed Yunohost LDAP account, and manually created my actual "local" user account, all of which had to be done with tootctl, the Mastodon CLI tool, via the terminal.
Once that was done and I got logged in, the account I had was divorced from Yunohost and I was able to setup 2FA and secure my account properly.
After all that, I started poking around the admin & moderation options, to get a feel for how things really worked behind the scenes. To say it's been enlightening would be an understatement, and I've enjoyed getting to know the ins and outs of managing the instance.
There are some unpleasant aspects of it, namely moderation of federating instances and setting up domain blocks on instances that you do NOT want material from to federate onto your server's media cache. So right now I have a few dozen federation blocks in place to prevent that, and that's part of the regular maintenance of being a Mastodon Admin, having to maintain this blocklist to keep myself safe. Thankfully there are some blocklists already out there from other Mastodon admins, who are kind enough to provide an uncensored list of their blocks for other admins to use on their own instances, which has been a huge help.
All that aside, after one day's operation, the server is sitting at around 7Gb in size, 95% of which is cached media.
So I've set up a bunch of cron jobs to prune remote media older than 4 days, dead remote accounts once a month, and preview card thumbnails older than 14 days.
This should help longer term, but I know that this initial spike in server space usage is due to the software caching the media (mainly avatars and headers) from the regulars and others on my timeline. This design decision means that the usage of space will be scalloped in shape, with a huge spike at the start, tailing off to a smaller regular churn as time goes by.
There is the option to foist media caching off to Object Storage, such as Backblaze or Scaleway, but that's something for future me to worry and figure out 😄
Usage
The worries I had in the previous article about having an empty timeline on my new feed turned out to be unfounded. Once I had imported* the accounts I was following, my timeline on the instance began filling up exactly as I had been viewing it on the old account. I'm still missing a few people who have manual follower requests turned on, but hopefully they'll come through over the next day or so.
*I imported my followings via CSV, but a lot of them were throttled by the larger instances such as .social, and I ended up having to manually work through all 280+ accounts I had been following. Needless to say it was a tedious process, and disheartening to find how many accounts were actually lying fallow, or were completely dead. Servers that have been closed down, accounts that were moved on elsewhere, and accounts I enjoyed reading and interacting with that I'd forgotten about, as they'd not posted in 2-3 years. As it stands I'm now following nearly 100 less accounts than I used to be about a week ago, but my timeline won't see any difference.
Browsing hashtags, such as #Astronomy on the new instance is a lesser experience compared to the old one. Again that's down to federation issues, which should resolve itself with time.
I'll be pulling the ripcord on the move shortly after publishing this article, and jumping in with both feet and standing on my own in the larger Fediverse.
It's not a thing I can just set and forget, as though I were sitting on someone else's instance such as my masto.ai account. It's something I'll have to be pro-actively maintaining going forwards, especially around storage and federation blocks. But I think it's worth the effort.
It's scary, and exciting, but I think it's worth at least giving it a go.
It might fail, which would be fine, as I can always just move to another hosted instance run by someone else, but on the other hand it might not, which is fun 😃
The new instance is hosted on this domain, and my new account is now located here:
https://social.elderlogs.net/@sar
Beyond Social Media
As for other self-hosting efforts, I've yet to even look at the Geekom mini-PC I bought!
The intention there is a little less defined. Currently I'm thinking of either a local NextCloud instance via ProxMox, or hosting a Jellyfin/Plex server for media at home, or maybe even just using it as an alternative PC, or a retro gaming setup either in parallel with my main PC or attached to our main TV in our living room.
The options are there and plentiful, and with 4Tb of storage there'll be plenty of space for whatever I decide to eventually do with it.
I can tell you one thing though, it definitely won't be a Windows machine 😂