2015 may mark the rebirth of the blog. This year, Medium’s raised $25 million, WordPress raised $160 million and Dave Winer is trying to help Facebook tear down the wall around its garden.

I thought it might be a good time to revisit alternatives to now defunct Google Reader, its popular web-based news reader. Certainly there are pre-built options, but I’d like to walk through four do it yourself, self-hosted options.

Below, I’ll walk through the installation of four newsreader apps using a cloud instance at Digital Ocean running Ubuntu 14.04. Digital Ocean instances, called droplets, cost only $5 per month and run on fast SSD drives for high performance.

The Four Do It Yourself News Readers

Of the four readers, two are free open source PHP-based readers (Selfoss and Tiny RSS), the third is an open source Python reader (GoRead) which runs easiest on Google App Engine and my favorite, Fever, whose PHP code costs $30 but can be easily self-hosted. All of them import OPML files – which is handy for migrating from another reader application.

1. Selfoss. A free, open source PHP-based news reader named after a beautiful waterfall in Iceland. It has a nice interface, it offers a plugin system for extensibility, it provides a mobile web interface, it imports OPML files and is fairly easy to install and configure. Install it.

2. Tiny RSS. A free, open source PHP-based news reader which offers an Android client. Install it.

3. GoRead, as close to a clone of Google Reader as you’ll find. It’s free, open source and Python-based. The latter makes it a bit more difficult to self-host. However, it is fairly easy to run at Google App Engine. And, it also offers an Android client. Install it.

4. Fever. A $30 PHP-based news reader that I’ve been using for the past year. Of the four, it’s my favorite. And, there are third party apps available for it, such as Ashes for Fever ($5.99) and Sunstroke (which recently missing from the App Store). Install it.

Let’s get started…

cloud hosting wordpress ssd virtual servers

News Reader Installation Guides

Configure Your Server Instance

digitalocean-home

Digital Ocean is an easy to use, economical hosting option with very fast performance. This tutorial describes how to install the four news readers on Ubuntu 14.04 LTS at Digital Ocean for only $5 monthly. You’ll want to have a domain name or sub-domains registered for your newsreaders. If you don’t have a registrar or need more information, I recommend NameCheap.

Sign up at Digital Ocean now, the process is simple and only requires an email and password:

signup

Digital Ocean’s cloud instances are called Droplets. Once you sign up, you can create your first Droplet using the selections below. You’ll want to have a hostname (domain or sub-domain name) chosen for your readers in mind. You can also select any region closest to you or your typical reader e.g. San Francisco or New York. Under Select Image, choose Applications: LAMP on Ubuntu 14.04 LTS.

[galleria transition=”fade” height=”450″ width=”600″ speed=”1000″ enable=”show_imagenav,pause_on_interaction”][image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/01-digitalocean-menu-1024×576.png[/image][image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/create-droplet-1024×767.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/create-droplet-region-1024×773.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/create-droplet-distro-1024×799.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/03-droplet-creation-status-1024×597.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/05-yoursite-com-1024×769.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/04-droplet-email-1024×373.png[/image]
[image]http://publishingwithwordpress.com/wp-content/uploads/2014/06/06-do-ssh-entry-1024×340.png[/image][/galleria]

Creating a droplet only takes a minute. Digital Ocean will email you your IP address and root password.

Once you have your IP address, you can begin the process of mapping your domains and subdomains e.g. yourdomain.com to your IP address. Visit your domain registrar’s DNS settings and change the A record for your yourdomain.com to the new IP address e.g. 54.234.124.117.

Wait until your DNS changes propagate (sometimes up to 24 hours or more – check them here), try to connect via SSH using your domain and the password provided in the Digital Ocean email.

ssh root@yourhostname.com

You can also use your IP address until your domain name is active:

ssh root@xx.xx.xx.xx

Change your password when prompted, or use:

passwd

There are a few things you’ll want to do to get your droplet ready for installing the newsreaders.

sudo apt-get install zip
sudo apt-get update
sudo apt-get upgrade
sudo a2enmod rewrite

It’s also best to run through the script for securing your MySQL server installation:

mysql_secure_installation

If you’re using the $5 512MB RAM droplet, you may want to create a Swap file for your LAMP stack  to operate reliably:

dd if=/dev/zero of=/swapfile bs=1M count=1024
mkswap /swapfile
swapon /swapfile

Edit the fstab file:

sudo nano /etc/fstab

Add this line:

/swapfile swap swap defaults 0 0

Verify the swap file is active by typing:

free

Installing Selfoss

Selfoss

Selfoss

Installing Selfoss is pretty easy. Sign in to your Droplet via SSH as shown above. Download the code:

mkdir /var/www/selfoss
cd /var/www/selfoss
wget http://selfoss.aditu.de/selfoss-2.11.zip
unzip selfoss-2.11.zip

I had to manually create the .htaccess file as it didn’t unzip properly.
Visit https://github.com/SSilence/selfoss/blob/master/.htaccess and click raw. Copy the file to the clipboard.

Create /var/www/selfoss/.htaccess and paste the contents:

nano /var/www/selfoss/.htaccess

Set the file permissions for Selfoss:

chmod -R 777 /var/www/selfoss/data
chmod 777 /var/www/selfoss/public

Login to MySQL. The password for your MySQL Server is usually shown when you login to your Droplet.

mysql -u root -p

Create a database for Selfoss and grant permissions:

create database selfoss;
grant all privileges on selfoss.* TO "root"@"localhost" identified by "your-password";
flush privileges;
exit;

You’ll have to provide these database settings in the defaults.ini file:

nano /var/www/selfoss/defaults.ini
db_type=mysql
db_host=localhost
db_database=selfoss
db_username=root
db_password=your-password
db_port=3306
db_prefix=

Next, we’ll create an Apache configuration file for the Selfoss website:

nano /etc/apache2/sites-available/selfoss.conf

Paste in the following – replace your sub-domain or domain name:

<VirtualHost *:80>
ServerName selfoss.yourdomain.com 
   DocumentRoot /var/www/selfoss
   DirectoryIndex index.php
      AllowOverride All
      Order Deny,Allow
      Allow from all
</Directory>
</VirtualHost>

Activate the site and reload Apache:

a2ensite selfoss.conf
service apache2 reload

We’ll use cron to configure a background task to regularly update our feeds:

crontab -e

Paste in the following line – replace your domain (this will update every ten minutes):

*/10 * * * * wget -O /dev/null http://selfoss.yourdomain.com/update

Visit your website e.g. http://selfoss.yourdomain.com and you should be able to start using Selfoss. You can import your existing OPML file at http://selfoss.yourdomain.com/opml or add feeds by hand to get started (click on the cloud in the lower left).

Installing TinyRSS

TinyRSS News Reader

TinyRSS

Installing TinyRSS is a bit more difficult than Selfoss. The installation guide is here.

Sign in to your Droplet via SSH as shown above. Download the code:

mkdir /var/www/tinyrss
cd /var/www/
wget https://github.com/gothfox/Tiny-Tiny-RSS/archive/1.13.tar.gz
mv 1.13.tar.gz tiny.tar.gz
tar zxfv tiny.tar.gz 
mv Tiny-Tiny-RSS-1.13/ tinyrss

Set the file permissions for TinyRSS:

chmod -R 777 cache
chmod -R 777 feed-icons
chmod -R 777 lock

Login to MySQL. The password for your MySQL Server is usually shown when you login to your Droplet.

mysql -u root -p

Create a database for TinyRSS and grant permissions:

create database tinyrss;
grant all privileges on tinyrss.* TO "root"@"localhost" identified by "your-password";
flush privileges;
exit;

Next, we’ll create an Apache configuration file for the TinyRSS website:

nano /etc/apache2/sites-available/tinyrss.conf

Paste in the following – replace your sub-domain or domain name:

<VirtualHost *:80>
ServerName tinyrss.yourdomain.com 
   DocumentRoot /var/www/tinyrss
   DirectoryIndex index.php
      AllowOverride All
      Order Deny,Allow
      Allow from all
</Directory>
</VirtualHost>

Activate the site and reload Apache:

a2ensite tinyrss.conf
service apache2 reload

Updating feeds in TinyRSS is a bit more complex. Here are their updating instructions and options which I’ll summarize below:

Install the PHP5 command line interpreter so that TinyRSS can run updates in the background:

apt-get install php5-cli

Configure a cron task to run the update daemon:

crontab -e

Paste in the following command:

*/10 * * * * /usr/bin/php5 /var/www/tinyrss/update.php --feeds --quiet

Configure your database through the web interface. Visit http://tinyrss.yourdomain.com/install. You should see something like this:

TinyRSS Configuration

Configure Your Database for TinyRSS

Visit your website e.g. http://tinyrss.yourdomain.com and you should be able to start using TinyRSS.

Add individual fees or visit Actions -> Preferences -> Feeds -> OPML to import OPML files:

OPML TinyRSS

Import OPML into TinyRSS

 

Installing GoRead

GoRead News Reader

GoRead

GoRead is a Python app which makes it a bit more difficult to host. GoRead’s been designed to easily run in Google AppEngine, which it does. However, if you want to use your own domain name, you’ll need to configure and run SSL. Here’s the GoRead installation instructions on Github, as a Python and AppEngine newbie, I found them unclear at first. But, after a while, I succeeded at launching my AppEngine instance of GoRead.

Here’s how I install my own instance of GoRead within Google AppEngine:

apt-get install git mercurial

Create directories for GoRead and Google AppEngine and download the code for AppEngine:

mkdir ~/go
mkdir ~/go_appengine
cd ~/go_appengine
wget https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.10.zip
unzip go_appengine_sdk_linux_amd64-1.9.10.zip

Edit .bashrc to set up paths:

nano ~/.bashrc

Paste the following at the bottom:

PATH=$PATH:~/go
PATH=$PATH:~/go_appengine
export GOPATH=~/go

Run source to update:

source ~/.bashrc

Let’s install GoRead locally:

goapp get -d github.com/mjibson/goread
cd $GOPATH/src/github.com/mjibson/goread
git checkout master

Copy the settings files and configure them:

cp app.sample.yaml app.yaml
cp settings.go.dist settings.go

Now, let’s go sign up for Google AppEngine, if you haven’t already. Visit the AppEngine Developer Console. Go through the steps to add a project for GoRead and Enable Billing.

You’ll eventually see something like this (at least, you will after successful deployment):

Google Developers Console for AppEngine

Google Developers Console for AppEngine

Next, edit app.yaml with the Google application name:

cd $GOPATH/src/github.com/mjibson/goread
nano app.yaml

Edit application with the application name from the Google developer console:

application: your-google-app-name
version: 1
runtime: go
api_version: go1

Then, deploy the application to Google AppEngine:

goapp deploy

During the deployment process, it will request your Google AppEngine email and password. Enter the account you use with Google Developer Console.

However, when you try to activate and login to your AppEngine instance, Google will block you and report suspicious activity on your account. You need to visit Google’s Security dashboard and approve access. I had to repeat my requests a handful of times before Google finally relented. It did not work in a logical way – I had to keep trying over a period of a half hour before it began working.

google-access

Visit https://your-project-name.appspot.com and you should see this page when it’s up and running successfully:

GoRead Home

GoRead Home

To begin using GoRead, you’ll need to login via your Google account. GoRead is multi-user capable, which is pretty cool. So, you can invite your friends and family to use it as long as they share in the costs. Don’t publicize your URL though – as strangers could use it and inadvertently run up your bills.

Keep in mind, Google App Engine will bill you for time and usage, so it’s helpful to set a budget for your GoRead instance. You can do this from the project settings page (it’s a bit hard to find, because well, Google):

Set a budget appengine

AppEngine Budget Settings

Installing Fever

Fever News Reader

Fever

Installing Fever is very easy and fairly well automated. Sign in to your Droplet via SSH as shown above. Download the code:

mkdir /var/www/fever
cd /var/www/fever
wget http://feedafever.com/gateway/public/fever.zip
unzip fever.zip

Set the file permissions for Fever:

chmod 777 /var/www/fever

Login to MySQL. The password for your MySQL Server is usually shown when you login to your Droplet.

mysql -u root -p

Create a database for Fever and grant permissions:

create database fever;
grant all privileges on fever.* TO "root"@"localhost" identified by "your-password";
flush privileges;
exit;

Next, we’ll create an Apache configuration file for the Fever website:

nano /etc/apache2/sites-available/fever.conf

Paste in the following – replace your sub-domain or domain name:

<VirtualHost *:80>
ServerName fever.yourdomain.com 
   DocumentRoot /var/www/fever
   DirectoryIndex index.php
      AllowOverride All
      Order Deny,Allow
      Allow from all
</Directory>
</VirtualHost>

Activate the site and reload Apache:

a2ensite fever.conf
service apache2 reload

We’ll use cron to configure a background task to regularly update our feeds:

crontab -e

Paste in the following line – replace your domain (this will update every ten minutes):

00,15,30,45 * * * * curl -L -s --user-agent 'Fever Refresh Cron' 'http://fever.yourdomain.com/?refresh'

Visit your website e.g. http://fever.yourdomain.com and you should see the web interface for configuring Fever. Enter in your database settings and click check privileges:

Fever Compatibility Check

Fever Compatibility Check

You’ll see something like this:

Fever Post Boot

Fever Post Boot

Now return to the FeedAFever website to purchase a license, which you can enter on this screen. Fever’s automated installation process will take it from here. It’s quite easy.

Conclusion

I hope you’ve found this useful. Please feel free to post feedback, corrections, questions or comments below. You can also reach me on Twitter @reifman or email me directly.

Posted by Jeff Reifman

Jeff is a technology consultant based in the Pacific Northwest.

Leave a reply

Your email address will not be published. Required fields are marked *