stevegattuso

I'm a programmer who enjoys learning/talking about cities 🌆, energy ⚡️, cooking 🍃, biking 🚲, traveling 🚞, and creating a more sustainable economy 🏴‍☠️. This website is an always-in-progress repository for documenting my latest ideas and projects.

My initial go at running a Mastodon instance

A couple of weeks ago I spun up hackny.social, a Mastodon instance for the hackNY community. I noticed people on our Slack showing frustration over what was going on with the birdsite and some curiosity towards Mastodon and thought it’d be a good way to provide people with a safe space to land within the Fediverse. Though it’s only been a week and change, I wanted to jot down some notes about what the experience of spinning up a node for a small community has been like so far.

While many new communities have opted to use a service like masto.host, by the time I got around to doing this they had already closed new subscriptions. Instead of giving up I decided to opt for the manual approach: I spun up a Heztner VPS (3 vCPUs, 4GB RAM, 80 GB SSD) and followed the official docs on how to install the server software from source.

The installation process was relatively straightforward, or at least I was able to get everything spun up relatively quickly without having to deviate much from the provided instructions. I supplemented the “preparing your machine” docs with some steps from this guide on how to lock down a Linux server + some of my own secret security measures. I’ve also set up backups using borgmatic and borgbase to help out when the seas of linux administration inevitably become rough. Borgmatic has a cool feature that allows you to automatically backup a Postgres database via pg_dump on each backup; I’ve set that up to hopefully mitigate the risk of a catostrophic incident.

Once the instance was set up I went through the process of creating my account, filling out our about page with a code of conduct, and circulating an invite link to the hackNY community on our Slack. A week in and we’ve gotten ~20 signups from a community of ~120 active members. Not bad!

As of now it appears that our VPS is holding up well against the workload of the current set of active users. I haven’t gotten any complaints of things broken just yet, though I am noticing that disk usage has gone up pretty quickly: we just hit 36GB of usage! It appears this is mostly cached media coming in from other instances, though thankfully the admin of Recurse Center’s instance, Wesley Aptekar-Cassels, published this blog post the other week with a suggestion on how to cut the disk usage down a bit. I’ve run the tootctl media remove command a few times manually and it usually cuts down ~5 GB of space or so. Next up on my todo list is to set up a systemd timer to automatically run it on a daily basis to see if we hit an equilibrium point of disk usage.

So far so good on the technical side, however I get the feeling that keeping the server up and running is the easy part. The social work of maintaining a healthy and active community space appears to be where the real work lies. Darius Kazemi’s runyourown.social says it best:

I suppose I’ll repeat what I said multiple times in this document, which is that running a small social network site for your friends is hard work, but it’s worth it. It is first and foremost the work of community building, and only secondarily is it a technical endeavor. And it’s completely possible to do, today, though depending on who you are and what your resources are it’s going to be difficult in different ways.

It’s still early on and thankfully the instance is only open to a small and well trusted community of friends who have already agreed to a shared code of conduct. Internal communications amongst this community is only one side of the coin though. Being on the Fediverse means that we have to deal with bad actors trying to spoil our garden, ie harassment towards members of our community from external instances. We also have to think about how members of our instance are posting with a @hackny.social handle. This means each user is responsible for upholding the reputation of the hackNY community as whole in their public-facing toots. That’s a very different beast to the internal-only community that hackNY has consisted of over the last 10 years of its existence (largely private IRC rooms and/or our community Slack), and an open question for how we want to manage.

Another open question for our instance is solving the bus problem. As of right now I’m acting as the benevolent dictator for our instance, handling the sysadmin/moderation needs largely by myself. Given that hackNY is a community with elected leaders, it doesn’t feel right that I have so much power over this instance if we decide to adopt it as a first-class space for members to congregate. While I’m happy to continue funding/running the server, I’m actively working on proposing a takeover by hackNY’s non-profit entity in order to ensure the instance’s longevity and democratic control of moderation practices.

Difficulties aside, I feel like this endeveour is a worthwhile one. I see this moment in time as a rare opportunity to show people that it is possible to have an alternative to corporate social media; one that is controlled by the community it serves rather than advertisers and monetary interests. If I can enable even a couple of people to shift their social media usage from one of the giants over to the Fediverse that would be one of my prouder accomplishments as a technologist.

I’ll keep everyone posted on how things go 🙂