Get Your Own Self-hosted RSS Reader With Tiny Tiny RSS

Install Tiny Tiny Rss Featured

Tiny Tiny RSS is a simple, yet highly flexible web-based RSS reader that you can install on your own server. It allows you to create your own personal library of RSS feeds that can automatically update and you can read feeds straight from your browser.

This article will show you how you can install Tiny Tiny RSS in Ubuntu.

Docker Installation

To get started, you need to install Docker, along with Docker Compose.

1. Fetch the package signing key from the Docker project’s website:

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

2. Create a new package repository file using your favorite text editor:

sudo nano /etc/apt/sources.list.d/docker.list

3. Paste the following inside your new repository file:

deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable

4. You can now refresh your package repositories and install Docker along with its companion applications:

sudo apt update
sudo apt install git docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-buildx-plugin

Obtaining and Setting Up Tiny Tiny RSS

1. Fetch its Git repository from the developer’s Github page:

git clone https://git.tt-rss.org/fox/ttrss-docker-compose.git
cd ./ttrss-docker-compose

2. Switch to the main production branch for Tiny Tiny RSS.

git checkout static-dockerhub

3. Create a copy of the default environment file that came with the Git repository and re-save it as “.env”:

cp ./.env-dist ./.env

4. Open your new environment file using your favorite text editor:

nano ./.env

5. Scroll down to the “#ADMIN_USER_PASS=” variable, remove the pound sign (#) in front of it and add a secure password after the equal sign (=).

A terminal showing the secure password for the Tiny Tiny RSS administrator.

Note: You can generate a secure password by opening a new terminal and running the following command: cat /dev/urandom | tr -dc 'A-Za-z0-9' | fold -w 16 | head -n 1.

6. Scroll down to the “#ADMIN_USER_ACCESS_LEVEL=” variable, remove the pound sign (#) in front of it and add “10” after the equal sign (=).

A terminal showing the default access level for an administrator account.

Doing this will ensure that your administrator account have the right permissions when you first boot up your instance.

7. Scroll down to the “TTRSS_SELF_URL_PATH=” variable and replace its value with the domain name hosting your Tiny Tiny RSS installation.

A terminal showing the instance's proper FQDN path.

8. Save your local “.env” file and pull the Docker images for Tiny Tiny RSS from Dockerhub:

docker compose pull

9. You can now build the Docker Compose suite for your local instance:

docker compose up -d

Tip: Docker is more than just a way to get your web services up and running. Learn how you can use containers by understanding the basics of Docker management.

Setting Up a Reverse Proxy with Nginx

At this point, you now have a working Tiny Tiny RSS container broadcasting on port 8280. However, in order to access this publicly, you need to provide a reverse proxy that will handle incoming connections from outside your network.

1. Install Nginx on your machine:

sudo apt install nginx

2. Create a new site config file for your reverse proxy:

sudo nano /etc/nginx/sites-available/ttrss

3. Paste the following block of code inside your blank reverse proxy config file:

server {
    listen 80;
    listen [::]:80;
 
    root                    /var/www/html;
    server_name             ttrss.myvpsserver.top;
 
    location / {
        proxy_set_header    X-Forwarded-For $remote_addr;
        proxy_set_header    Host $http_host;
        proxy_set_header    X-Forwarded-Proto $scheme;
        proxy_pass          http://127.0.0.1:8280;
    }
}

4. Create a symbolic link for your new reverse proxy config file:

sudo ln -s /etc/nginx/sites-available/ttrss /etc/nginx/sites-enabled/

5. Remove the default Nginx config file and enable the Nginx daemon:

sudo rm /etc/nginx/sites-enabled/default
sudo systemctl enable --now nginx.service

Generate SSL certificate

With a reverse proxy running, the next thing that you need to do is to enable encryption for incoming connections.

1. To enable SSL, you need to make sure that your machine has a working and up-to-date snap daemon:

sudo snap install core
sudo snap refresh core

2. Install the Certbot utility:

sudo snap install certbot --classic

3. Register your new certbot installation to the EFF by running the following command:

sudo certbot register --agree-tos --email ramces@email.invalid

4. Request for an SSL certificate for your domain URL:

sudo certbot --nginx -d ttrss.myvpsserver.top
A terminal showing the SSL certificate request for my Tiny Tiny RSS instance.

Good to know: Learn how encryption works in untrusted, public networks by creating your own certificate using OpenSSL.

Using Your Tiny Tiny RSS Instance

You can now access your new Tiny Tiny RSS instance by accessing your domain URL.

A screenshot showing login page for Tiny Tiny RSS.

Login with “admin” and your secure password.

A screenshot showing a filled credentials box.

Click the Menu icon on the page’s upper right corner.

A screenshot highlighting the Menu button for Tiny Tiny RSS.

This will bring up a small menu where you can manage both your instance and the lists inside it. Click the “Subscribe to feed…” option under the “Feed actions:” category.

A screenshot showing the "Subscribe to feed..." option under the Tiny Tiny RSS menu.

Paste the RSS link for the feed that you want to subscribe to, then click “Subscribe.”

A screenshot showing the RSS feed link to add to Tiny Tiny RSS.

Refresh the Tiny Tiny RSS page to reflect your new RSS feed listings.

A screenshot showing the contents of an RSS feed.

Creating New Feed Categories

Aside from subscribing to RSS feeds, Tiny Tiny RSS also supports the ability to organize existing feeds in your instance. This can be helpful in cases where you have similar feeds that you want to sort under one general category.

1. To create a new feed category, press the Menu button on the page’s upper right corner, then click “Preferences…”

A screenshot highlighting the "Preferences..." option under the Tiny Tiny RSS Menu button.

2. Click the “Feeds” on the page’s top bar.

A screenshot highlighting the "Feeds" tab under the "Preferences..." option.

3. Click the “Categories” drop-down box inside the “My Feeds” subframe, then click “Add Category.”

A screenshot highlighting the "Add category" option for existing feeds.

4. Write a name for your new feed category, then press “OK.”

A screenshot showing the prompt for new categories.

Editing Current RSS Feeds

With a new feed category up, you can now include all of your existing RSS links under it. To do this, go back to the Preferences menu and click “Feeds.”

A screenshot showing the list of feeds currently available in the instance.

Click the RSS feed that you want to modify. This will bring up a small window that will list all the available options for your feed.

Click the drop-down box beside the “Place in category:” label and select your new category.

A screenshot showing the details for an existing RSS feed.

Click “Save” to save your new settings, then click “Exit Preferences” to go back to your instance’s home page.

A screenshot highlighting the "Exit preferences" link inside the "Feeds" submenu.

Self-hosting your RSS reader is only the first step in taking back your digital sovereignty. Learn how you can host your own content platform by deploying WordPress over Docker as well as create your own Twitter clone using Pleroma.

Image credit: a wireless key on a black laptop keyboard by 123RF. All alterations and screenshots by Ramces Red.

Is this post useful?
Subscribe to our newsletter!

Our latest tutorials delivered straight to your inbox

Ramces Red
Ramces Red - Staff Writer

Ramces is a technology writer that lived with computers all his life. A prolific reader and a student of Anthropology, he is an eccentric character that writes articles about Linux and anything *nix.