So I finally did the thing I've been putting off since Google announced back in March that Reader is getting killed off on July 1st. I spent most of Sunday afternoon setting up Tiny Tiny RSS on my own little Linode box instead of just picking a hosted replacement like a normal person.
I want to be clear that this wasn't really necessary. Feedly works fine. I used it for about two weeks. It quietly grabs your Reader subscriptions through the old API while that's still alive and syncs everything over, and if you just want your feeds to keep working past July with minimal fuss, that's genuinely the easy answer. But every blog post from the Feedly team has this weirdly chipper "we're so excited for the future of RSS" tone that bugs me, because this isn't really an exciting moment, it's Google breaking something a lot of us relied on every single day and everyone else scrambling to fill the hole. I don't need my feed reader's marketing copy to be upbeat about it.
Anyway. Self-hosting.
What I actually did
I'm running Tiny Tiny RSS (tt-rss) 1.7.9 on Ubuntu 12.04, which is what my Linode was already running for a couple of small side projects. The install itself is not bad if you've touched a LAMP stack before:
sudo apt-get install php5 php5-mysql php5-curl php5-gd
sudo apt-get install mysql-server
Then you grab the tt-rss tarball, drop it somewhere under your web root, create a database and user in MySQL, and copy config.php.dist to config.php and fill in your DB credentials. There's a web-based installer that walks you through the rest at /install/. Took maybe twenty minutes end to end, most of which was me trying to remember my own MySQL root password.
A few things that tripped me up, in case anyone else is doing this:
- The update daemon doesn't run itself. You need a cron job hitting
update_daemon2.phpevery so often or your feeds just sit there stale forever, which took me an embarrassingly long time to figure out because I kept refreshing the page wondering why nothing was new. - Favicon fetching is slow the first time it crawls a big OPML import. I dumped in about 140 feeds from my Reader export and it chugged for a solid ten minutes.
- The default mobile theme is ugly. Not broken, just ugly, in a sort of early-2000s phpBB way. There's a "Mobile" theme option in preferences that's marginally better but I ended up just pointing Reeder on my phone at tt-rss's Fever-compatible API instead and using that as my actual reading app. tt-rss added Fever API emulation a while back specifically so people could keep using their existing Reader-era apps, and it works better than I expected.
Why bother
Honestly the main reason is just that I don't like handing my reading habits to another company's server only to have the rug pulled again in two years. Google Reader lasted, what, eight years, and I got comfortable enough that losing it actually stung a little, which is a dumb thing to feel about an RSS reader but here we are. Running it myself means if tt-rss stops being maintained I still have my data sitting in a MySQL table I can export whenever I want, on a box I already pay $20 a month for anyway for other stuff.
It's also just satisfying in a way that's hard to explain to someone who doesn't already get it. There's a specific kind of quiet pleasure in ssh-ing into your own machine and watching a service you set up yourself pull down 140 feeds without needing anyone's permission.
That said I wouldn't push this on someone who just wants their feeds back with the least hassle possible. If that's you, go use Feedly or throw your name on the NewsBlur waitlist (it was still capped and queuing new signups as of last week, apparently their servers got hammered way harder than they expected). This route is for people who already have a server lying around and enjoy tinkering more than is strictly rational, which, if you're reading a blog like this one, might just be you too.
Next thing on my list is figuring out a decent way to back the database up automatically, because right now my disaster recovery plan is "hope Linode doesn't have a bad day," which is not really a plan at all.