Setting up GoToSocial
It’s been a few weeks, but I finally found time to “join the fediverse” by setting up my own ActivityPub-compatible server. No, it’s not Mastodon, but that doesn’t really matter. TLDR: you can now follow @firstname.lastname@example.org.
So, why? I miss some parts of Twitter, even though I had already been on an extended hiatus last year. A lot of my friends have moved to Mastodon, or in a few cases other fediverse-compatible servers. A bunch more have moved to Cohost, but Cohost isn’t my vibe; it feels like Tumblr 2.0, and while that’s definitely an improvement on Tumblr 1.0, the only Tumblr account I ever had was for submitting to fandom community accounts’ suggestion boxes.
But signing up for a Mastodon server still gave me choice paralysis, and the sense that I was getting the worst of both worlds: no benefits of centralization, but my data was still under someone else’s control. So once I’d seriously decided to make my Twitter hiatus permanent, I started casually looking for a fediverse implementation I could run myself. Or, well, it’s running ““in the cloud””, but at least it’s a business transaction I have control over.
I did think about just using this blog for more short-form stuff, but this blog runs off a static site generator, which makes it a pain to have a conversation. Which is the real thing I value here, though lowering the barrier to entry for short-form posts is also nice. (That’s how the Swift Regrets series happened at all.)
There are lots of problems with ActivityPub and Mastodon and the fediverse, both technical and social, but right now it seems like the best thing to do. And, well, there are technical and social problems with everything else too.
Continuing to dig down the list of “why” questions, you’ll notice I very specifically didn’t say I’m running “Mastodon”. Why not? Because Mastodon is reportedly a big piece of software, tricky to install and manage. And, well, I’ve implemented a blog before, and heavily customized this one. I know how email works. So a part of me was convinced that this should be straightforward, especially if you only need a few accounts controlled by a single person. It should not require lots of knowledge and a beefy server to publish toots and handle replies. (Still have to get used to the deliberately-silly “toot”.) Heck, I’d forgo being able to follow people on this account if it meant I could just run a plain old webapp in Apache or nginx with an attached database. I don’t want to manage a server, especially not when I have limited time and ability for computer hobbies anyway.
But there’s one thing that makes ActivityPub more like email than newsfeeds, and that’s the push model. When you post something, it goes to your followers, like a listserv / email group. That may involve arbitrary fanout to other servers, and that means asynchronous processes (if you don’t want to sit there after every toot hoping one of your followers’ servers hasn’t timed out). So something does have to be running, or at least regularly scheduled, to do that work.
Unfortunately, most of the fediverse projects out there seem to be Mastodon forks, or deliberately aiming for a different niche than Mastodon, or abandoned after Mastodon’s mindshare success, or a one-person passion project that could fold at any time. In fact, the one I was most intrigued by probably falls into that last category: Takahē. Takahē is a Django app (Python) and even has a mode where it can run on a standard web server, with a task polled by a cron job—very close to what I wanted ideologically! But that mode is unsupported, and the full installation steps still seemed like more trouble than I wanted. I don’t want to have to pay attention to this server.
Fortunately, I’d gotten a double recommendation for another “small” Mastodon-compatible server: GoToSocial. Like Takahē, it’s still under development, but it’s slightly further along and seems to have a few more regular contributors. And it’s got a goal of running with low resources, and the setup did seem simpler.
In the past I’d be trying to write my own server that did replies synchronously and everything else via a job queue, like many other people who see ActivityPub and think it looks simple. (There’s a good chance it would come out pretty similar to Takahē.) But I don’t have that choice anymore, so GoToSocial it is.
social.belkadan.com is running on a DigitalOcean “droplet” that’s basically a small VPS. Inside that VPS, somewhat redundantly, is the GoToSocial Docker Compose application, lightly customized. I was mostly able to just follow the installation instructions, even though I have only basic experience with Docker (and with server administration beyond static sites). Then I spent a bit messing with the CSS as a die-hard light-themer. Overall it was pretty easy, though.
This is still not quite what I want. What I really want is to run GoToSocial or Takahē or whatever like you can run Wordpress, on straight-up shared hosting. Failing that, I’d like someone else to manage updating the Linux server, even if I have to update the GoToSocial image myself (the drawback to customization). But all the “managed VPS” plans feel like overkill for running one long-lived Docker container plus some persistent storage, as do the usual “cloud compute” plans designed for other uses of Docker. I can put that $40 a month to better use than my shitposts. So for now I’ll just set a repeating event on my calendar to log in to my “droplet” and run updates every few weeks, and trust DigitalOcean’s initial provisioning with the rest.
If anyone has pointers to the thing I want, toot at me. Or email me, at the same address. (I had hoped it was DigitalOcean’s “Cloudways”, but they only support a limited set of applications right now.)
I’m treating all this as an experiment. Maybe I’ll migrate to another ActivityPub server in the future. Maybe I’ll decide it’s not worth it and just sink the whole domain, permalinks be damned. And maybe the fediverse itself won’t have staying power. I already don’t expect it to have as many non-tech people as Twitter did.
But for now, I’ve got my shitposts, my comments section, and my cool projects network again.