Skip to content

Using Beluga, a self-hosted social feed and app

Last week I discovered Beluga, a service that does four things:

This may seem intriguing while also begging the question why? After all, you can micro blog to your own website using native apps with services like micro.blog and the WordPress aside post format. Indeed, I’ve been publishing short notes for years now.

Of course, you could also just sign up for a Mastodon account.

Why use Beluga

Beluga offers a way to easily micro blog to your own web space that’s content management system (CMS) and third-party service agnostic. Which means you don’t have to use micro.blog or WordPress, or have dynamic hosting.

Perhaps more importantly, by posting to your web space you control your content – a basic indieweb principle. No one can monetise or remove your posts if you host them, and no-one’s going to track you or your visitors. Furthermore, Beluga has no servers: all the data is stored in that web space.

So you can perhaps see why it might be attractive, especially when it provides an app. Consider how laborious it is to post a photo from my phone to my website, which is self-hosted and built on a static site generator:

  1. Turn on my laptop
  2. Send the photo to my laptop
  3. Rename the photo
  4. Edit the photo with a servce like Squoosh
  5. Open a terminal
  6. Create a new git branch in my site folder
  7. Open a text editor
  8. Write some YAML
  9. Write some fiddly Markdown
  10. Build the site
  11. Upload it to my hosting
  12. Merge the working branch with my main branch and push it to Github

Compare this with Beluga:

  1. Open the app on my phone
  2. Tap the image icon
  3. Choose the image
  4. Post the image

There are only a handful of feeds in the app, so I haven’t used the public stream.

Using Beluga

I can report that Beluga works well, with a few limitations that seem reasonable for new, free software.

One of those limitations is that it only works with S3 storage, so it won’t simply integrate with your existing website. S3 is not Dropbox, and it is of course provided by huge hosting companies, such as AWS. Having said that, setting up a free Backblaze account, creating a “bucket” and a secret access key, and entering these details into the Beluga app was fairly painless. Just make sure you choose an S3 region that appears in the Beluga app when you sign up for your Backblaze account – not all of them do. eu-central-003 worked for me. Backblaze automatically provide an API key.

The Beluga settings screen.

You only need to enter a few settings in the Beluga app to connect to your S3 storage.

The app itself is good, although it has a few quirks. For example, it doesn’t capitalise the start of a new sentence (which may or may not be a good thing) and it doesn’t pop up in the iOS share sheet, meaning you can’t post to Beluga from a photo – you have to open the photo from the app itself. You can edit existing posts, which is a cool feature, and post several images at once.

The Beluga post screen.

Editing with Beluga is pretty simple, and you can add images to posts.

More seriously, you can’t add alt text to Beluga images. For me, this is a major shortcoming, even in beta software.

Limitations and potential

Beluga feels like a proof of concept – it’s limited, but works well. I have a self-hosted social feed (albeit at an ugly URL) with permalinked posts. Most usefully for someone running a static site, I can post from my phone. I say “useful” – one of the reasons I started POSSEing from my blog was to escape the post/scroll/check/post/scroll/check spiral of social media.

Its audience is niche – technical folk with a few specific requirements. But I’m not aware of any other service that does what it does.

Its major restriction – apart from the fact it’s iOS-only – is that you can only post to S3 storage – I can’t publish Beluga posts on thisdaysportion.com, for example. This isn’t a problem if you’re keeping your main and micro blogs separate, but even then it’d be good if you could host notes on a more meaningful domain (such as notes.thisdaysportion.com).

However, one great thing about Beluga – which mitigates the S3-only problem – is that it generates RSS and json feeds. This opens up a host of possibilities, including integration with your static site. For example, 11ty and Zola can convert json feeds to native posts out of the box, while it’s also possible with a Jekyll plugin.

RSS is the engine of the indieweb, exposing your content to apps and websites. I connected my Beluga feed to my micro.blog account, which means that when I post to Beluga it not only shows up in my micro.blog feed – it’s then crossposted to Mastodon. Although your Beluga feed sits in splendid isolation, it’s relatively easy to syndicate your posts to other social media.

Beluga is an interesting idea. It could choose to polish the existing service – fixing the alt problem would be a good starting point – and encourage users to exploit its RSS and json feeds to crosspost to other services and websites, including your own.

Alternatively, it could connect to other storage systems, such as Git or even shared hosting via FTP, making it easier to post directly to your own domain. It might even be possible to tell Beluga how to add files to your existing site, so posts integrate seamlessly – although this could be too complex a process for an app.

As for me, I won’t use Beluga regularly until it fixes its alt bug. If it does then I have a decision to make. The friction of publishing notes to thisdaysportion.com means I keep away from social media, which all in all is a good thing. On the other hand, being able to post to my own website from my phone sounds interesting, maybe worth the effort of integrating Beluga’s json feed.