How To Host Your Own RSS System On Linux With Tiny Tiny RSS

Though many people presume it to be dead, RSS is still a big thing. Many people still rely on the RSS protocol to deliver news articles, updates on websites, and even multimedia items like videos and podcasts. There are many ways to keep track of RSS subscriptions: from desktop clients, to email subscriptions and mobile apps that aggregate subscriptions into a “newspaper-like” experience. These solutions are nice, but they have a downside: third-party RSS delivery services can go away just like Google Reader did. So, if you’re an RSS fan and a Linux user, it’s just better if host your own RSS system on Linux. That’s why in this tutorial, we’ll go over how to set up your own Tiny Tiny RSS server: a centralized place to house your subscriptions.

Setting Up An HTTPS server

Tiny Tiny RSS is a PHP application. For this reason, the software will not run without a server with PHP, Apache, etc. It is for this reason, we’ll briefly go over how you can easily set up and run your own LAMP server. There are many different ways to go about setting up a LAMP server (Linux, Apache, MySQL, and PHP/Python/Perl).

Many server operating systems have an option (during installation) to quickly deploy something like this. That being said, in this tutorial, we’ll be accomplishing this task with Ubuntu server. This is because using the Ubuntu server distribution has many benefits for users that do not know a lot about maintaining server OS’s on Linux. Additionally, it has snap package support, which can make deploying certain tools very easy.

Installing Ubuntu server starts out by going to the download page on Ubuntu.com/server. On the download page, there are two separate versions to choose from: Long Term Support, and the latest release.

Choose the LTS version if you have no plans on going through an upgrade in 6 months, and don’t want to deal with that sort of thing. Choose the latest release if you enjoy the latest software, and don’t mind the upgrade process.

Once downloaded, get out a USB flash drive (of at least 2 GiB in size) and get the Etcher USB tool. Follow the instructions on the page to flash the Server ISO file to the drive. Once flashed, plug it into your home server (or computer you plan to use as a server). Load the machine’s BIOS and set it to boot from USB.

RECOMMENDED FOR YOU

When it loads, you’ll be taken through the Ubuntu server installation. Follow the instructions that Ubuntu brings up. It’ll explain in detail what to do: from partitioning, user setup and etc.

At a certain point during the Ubuntu server installation, the user has to select packages to install. Using the arrow keys to navigate and the spacebar to select, check the boxes next to: LAMP Server, and OpenSSH server. Then press the enter key to install them to the system.

When the installation completes, restart the machine.

Installing TT-RSS

Getting Tiny Tiny RSS is very easy, given the code is freely available for download on Github. To get it working on Ubuntu server, the first step is to install the Git package. This is necessary, as without it, pulling code from Github and other git sources is impossible. Install it by entering this command into the shell prompt:

sudo apt install git

With git installed, enter the web directory on your server.

cd /var/www/html/

Then, use git to download the latest release of TT-RSS:

git clone https://tt-rss.org/git/tt-rss.git tt-rss

When the TT-RSS is in the html folder, it’s installed on the system. Access it by opening the server’s URL. This is the part that gets tricky. As this is a web server, TT-RSS is readily accessible from the internet. This is because most routers already forward port 80 to the internet (though, in some cases you may need to port forward 80 to the internet anyway).

Having TT-RSS forwarded to the internet means you can access your RSS feeds from anywhere. Alternatively, Tiny Tiny RSS is accessible right on your LAN.

Setting Up TT-RSS

Tiny Tiny RSS is on the web server. Still, our work isn’t done. The software will not work without configuration. To start off, go to Google and type “What is my IP”. Then, enter your IP address in a browser’s address bar.

For example: http://ip.add.r.ess /tt-rss/. Alternatively, use the local IP address (found with ifconfig in the terminal), and go to: http://local.ip.address/tt-rss/

Now that TT-RSS has a database to work with, we’ll need to make a username. Enter:

CREATE USER 'ttrss'@'localhost' IDENTIFIED BY 'password';

Note: change “password” with the password you’d like to use for the ttrss database user.

Lastly, flush all SQL privileges with the flush command.

FLUSH PRIVILEGES;
QUIT

Final TT-RSS Configuration

On the setup page in the browser, fill out all of the information. Use the dropdown to select “MySQL”. Then, under “username” enter the ttrss username created earlier, followed by the password you gave it in the password field.

On the next page, Tiny Tiny RSS will generate a configuration file. Open a text editor on the computer you’re visiting the server’s IP address, copy the configuration, and paste it into the text editor. Save the file as config.php.

The configuration file is safe on your PC, but that’s not where it needs to be. Head over to the command-line file sharing site transfer.sh. Click the “click here to browse” button, find the config.php file on your computer and upload it.

Transfer.sh will output a url to download from. With this in mind, go back to the Ubuntu server shell and type the following commands to get the config.php file:

Using Tiny Tiny RSS

Load http://ip.add.r.ess /tt-rss/. The webpage will have a login page. The default login information is: admin and password. Go to http://ip.add.r.ess/tt-rss/prefs.php, look for the user tab and then click on “Admin”. Look for authentication, and then change the default password.

Conclusion

Tiny Tiny RSS is installed on your Ubuntu server! From here, it’s possible to subscribe to as many news articles as you want. The user interface is quite easy to pick up! Just click around, and you’ll be at home in no time!