Guide: TT-RSS on Yunohost on a VPS

published on 2022-03-09

I am a big fan of RSS – both as a concept (easily readable and cataloged website updates) as “what it stands for” (an internet made from decentralized, low-weight information sources). The stories of its demise are largely exaggerated and are mostly fueled by the fact that the incumbent social media channels don’t support it – not because they can’t, but because it leads audiences away from their platform. However, close to all CMS have Atom/XML feeds enabled by default; good luck finding a blog or news website without one. Furthermore, there are many community-driven tools to make sure that ‘the rest’ is covered (such as Kill The Newsletter for emails, Nitter for Twitter, and rss-bridge for pretty much everything else).

RSS feeds on their own are awesome, but you’ll need a reader to… read them with. The internet’s reader of choice used to be Google Reader, which is now unfortunately defunct. Luckily, there are tons of great services that do pretty much the same thing:

In most of the free plans coming with the above solutions, you can do the essentials: add (a limited number of) feeds and read them. And for most people, that will be more than enough. However, if you want to have the best experience (no ads, automation, filters, etc.), you’ll have to pay. I should know: I was a paying Inoreader customer for 4 years, and never regretted it.

In 2022, I decided to make the switch towards a self-hosted instance. I won’t go into detail about why/when you should (not) self-host anything, check out Yunohost's own summary for and against self-hosting to make the decision for yourself. As I’m only a bit of a tinkerer, and by no means anything close to an SWE or systems geek, I decided to take a relatively easy route without foregoing usability and security.

After some research, I found the sweet spot: Tiny Tiny RSS via YunoHost on a dirt-cheap Linode VPS. In this dummy-proof blog post, I’d like to cover the A to Z of setting this up in 30 minutes – 2 hours, depending on your technical skill level.

Prepping your server

Your RSS reader needs to live on a server, either one that you plug in your own power outlet or one that you rent. I chose the latter option, because it’s the easiest (especially in terms of securing your box), but don’t let that hold you back. If you’re in it for the long run, it may be cheaper though ($5/mo rent VS $50 for the box and negligible electricity costs).

Many companies offer very low-cost (and low-horsepower) Virtual Private Servers (aka VPS). I chose Linode, but you can just as well go for alternatives such as DigitalOcean or Vultr. All these companies’ options have pretty much the same specs and ‘extras’ for the exact same price range. They even have the same “$100 credit in first 60 days” offer – which we won’t overrun, we’re renting the absolute cheapest box anyway.

After creating an account, follow these steps:

$ ssh [email protected]
The authenticity of host '(([host]))' can't be established.

ECDSA key fingerprint is SHA256:(([fingerprint])).

Are you sure you want to continue connecting (yes((/no/[fingerprint])))?
[email protected]'s password: ((password))

Installing YunoHost

If you’re not comfortable with Docker and an NGINX setup (which is what I prefer), you don’t want to install your RSS reader (and other web applications) directly on the machine. Instead, for this exercise we’re going to make life easy and install YunoHost, a Debian-based OS that does all the hard stuff for you. Similar solutions exist, but the ones I’ve tried are either less mature (CapRover), paid (Cloudron), or don’t have all the bling that we want (Sandstorm).

YunoHost is awesome for a variety of reasons, including the fact that they have a library of one-click app installs. If you want to know more, I suggest consulting their (noob-friendly) documentation.

To install YunoHost, take the following steps:

curl https://install.yunohost.org | bash
Are you sure you want to proceed with the installation of Yunohost?

[YES] (([NO]))
Do you agree to let YunoHost apply those changes to your configuration and therefore affect the way you connect through SSH ?

[YES] (([NO]))
yunohost tools postinstall
Main domain: ((domainname.nohost.me))
New administration password: ((password))
Confirm new administration password: ((password))
yunohost user create ((username))

First name: ((firstname))
Last name: ((lastname))
Password: ((password))
Confirm password: ((password))
Available domains:
- ((domainname)).nohost.me
Domain to use for the user's email address and XMPP account: ((domainname)).nohost.me
Success! User created
fullname: ((firstname lastname))
mail: ((username))@((domainname)).nohost.me
username: ((username))

Installing Tiny Tiny RSS

Finally, we’re ready to install our feed aggregator from Yunohost’s extensive list of one-click install applications. Out of the box, YH offers multiple RSS readers – including the much-loved FreshRSS. Upon trying my options, I decided to stick with my original choice: Tiny Tiny RSS (aka TT-RSS).

To install TT-RSS on YunoHost, follow these steps:

And you’re all set! Enjoy your fully self-hosted Tiny Tiny RSS!

Since it’s outside of the scope of this blog post: if you’re unsure on how to get started with Tiny Tiny RSS, check out the TT-RSS documentation.

Feedly theme (optional)

Tiny Tiny RSS comes with a handful of themes. However, if those don’t suit your needs, you can always switch to the (IMHO more polished) TT-RSS Feedly theme – click the link for screenshots. To do so, take the following steps:

wget https://github.com/levito/tt-rss-feedly-theme/archive/master.zip
unzip master.zip
cd tt-rss-feedly-theme-master
sudo cp -r feedly* /var/www/ttrss/themes/

Third-party applications (optional)

I like to read my feeds on the go. For Android, FeedMe is the best TT-RSS supported feed reader I could find at the time of writing. It’s bulging with features (many more than my previous official Inoreader app, for example) and nothing’s behind and pay/adwall – but you have the option to support the developer from within the app.

Whichever third-party application you choose, you need to take the following steps:

I hope this was a helpful guide. If you have any feedback or questions, you can always contact me via the contact button on the homepage!