Create RSS Feeds for Your Social Media with RSS-Bridge

A photograph of a laptop on top of a wooden table.

RSS-Bridge is a powerful self-hosted RSS Feed generator for Linux. It allows you to create your feeds from almost any modern website today. This makes it incredibly useful for RSS users who want to combine their media feeds into one. This article shows you how to install and deploy RSS-Bridge on Ubuntu Linux using Docker.

Why Create RSS Feeds with RSS-Bridge?

One of the biggest selling points of RSS-Bridge is that it serves as a proxy for websites that don’t provide their syndication links. For example, YouTube requires you to use its own frontend app just to check if your favorite creator has uploaded a new video. With RSS-Bridge, you can get notify via RSS when there is a new video.

A screenshot of an example YouTube subscriptions page.

Another advantage of RSS-Bridge is that it provides greater control and security between you and the site you’re syndicating. This makes it attractive to privacy-conscious users who don’t want to rely on third-party services for their RSS feeds.

Tip: you can also host your own RSS reader app using FreshRSS.

Obtaining the Dependencies for RSS-Bridge

Assumption: This article assumes that you’re installing RSS-Bridge on an Ubuntu server that’s accessible on the internet. It also assumes that you have an active domain name that you currently own.

Start by obtaining the Docker project’s repository signing key:

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

Use your favorite text editor to create the repository file for Docker:

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

Write the following line in your new “docker.list” file:

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

Refresh your system’s package repositories and ensure that the packages are up to date by running the following:

sudo apt update && sudo apt upgrade

Install the Docker and Docker Compose binaries along with the dependencies for RSS-Bridge:

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

Prepare your system for Certbot by installing the “core” snap package:

sudo snap install core

Install the Certbot package from the Electronic Frontier Foundation (EFF):

sudo snap install certbot --classic

Good to know: learn how you can deploy your own WordPress site using Docker.

Fetching and Building RSS-Bridge

Make a new folder inside your home directory, then navigate inside it:

mkdir ~/rss-bridge && cd ~/rss-bridge

Create the “docker-compose.yml” file using your favorite text editor:

nano ./docker-compose.yml

Paste the following block of code inside your new Docker Compose file. This is the default “docker-compose.yml” for RSS-Bridge that I modified to have a volume mapped for custom configs:

version: '2'

services:
  rss-bridge:
    image: rssbridge/rss-bridge:latest
    volumes:
      - /home/$USER/rss-bridge/:/config
        # Replace "/home/$USER/rss-bridge" with "/root/rss-bridge" if you're running on root.
    ports:
      - 127.0.0.1:3000:80
    restart: unless-stopped

Build and run your Docker container:

sudo docker compose up --detach

Confirm that RSS-Bridge is running properly by listing all the available containers in the system:

docker ps
A terminal showing the RSS-Bridge Docker container running properly.

Creating an SSL Reverse Proxy using Nginx

At this point, you now have a running instance of RSS-Bridge on port 3000. To use it, however, you need to first pass its outgoing connection through an SSL reverse proxy.

Create a new “A” DNS record pointing to the IP address of your RSS-Bridge server. In my case, I will set the “A” record for my RSS-Bridge instance to the subdomain “rss.”

A screenshot of the "A" DNS record for RSS-Bridge.

Go back to your server, then create a new Nginx site configuration file:

sudo nano /etc/nginx/sites-available/rss-bridge

Paste the following block of code inside your new config file:

server {
 
        server_name SUBDOMAIN.YOUR-ROOT.DOMAIN;
 
        location / {
                proxy_pass http://127.0.0.1:3000;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $host;
        }
}

Replace the value of the “server_name” variable with your server’s “A” DNS record.

A terminal highlighting the "server_name" variable in Nginx.

Save your site config file, then link it to your “/etc/nginx/sites-enabled” folder:

sudo ln -s /etc/nginx/sites-available/rss-bridge /etc/nginx/sites-enabled

Apply your new settings by reloading your Nginx daemon:

sudo systemctl reload nginx.service

Requesting SSL and Connecting to RSS-Bridge

With that done, you can now secure your reverse proxy by requesting an SSL certificate from Certbot. Doing this will ensure that all connections between a client and your instance are encrypted and secure.

Run the following command to register your domain name to Certbot:

sudo certbot register --agree-tos -m YOUR@EMAIL.ADDRESS

Type “y,” then press Enter to receive the latest updates from the EFF.

Screenshot

Request a new certificate for your subdomain:

sudo certbot --nginx -d SUBDOMAIN.YOUR-ROOT.DOMAIN

Test if your SSL reverse proxy is working properly by opening it in your web browser.

Create Rss Feeds Rss Bridge Linux 06 Web App Test Run

FYI: learn more about web encryption by issuing your own SSL certificates using OpenSSL.

Adding Custom RSS Feed Generators in RSS-Bridge

By default, RSS-Bridge only ships with 16 of its custom feed generators. While most of them covers some of the popular websites such as Reddit and Twitch, the project also offers more than 400 user-maintained feed generators in its Github repository.

To access this, first disable your Docker container:

sudo docker compose down

Create a new folder in your home directory, then navigate inside it:

mkdir ~/git && cd ~/git

Clone the RSS-Bridge repository to your new folder:

git clone https://github.com/RSS-Bridge/rss-bridge.git

Copy the “bridges” directory inside the Git repository to your Docker container’s folder:

cp -rv ./rss-bridge/bridges ~/rss-bridge/

Create a new text file inside your Docker container’s folder:

nano ~/rss-bridge/whitelist.txt

Write “*” inside your new text file, then save it to enable all feed generators for your instance.

A terminal highlighting the whitelist asterisk that enables all generator modules for the RSS-Bridge instance.

You can also filter the other feed generators using this text file. To do this, run ls bridge, then find the name of the generator that you want to show up on your instance.

A terminal showing a small list of custom generators from the Git repo.

Open the text file, remove the “*”, then provide the name of the generator without its “.php” extension.

A terminal showing the custom generators inside the whitelist.txt file.

Restart your Docker container to apply your new settings.

cd ~/rss-bridge
sudo docker compose up --detach

Securing RSS-Bridge with HTTP Auth

Aside from adding custom feeds, you can also include a little authentication challenge for your instance. This is especially helpful in preventing anonymous users from abusing your web app.

Turn off your RSS-Bridge Docker container:

sudo docker compose down

Create a new “config.ini.php” file under your Docker container’s directory:

nano ~/rss-bridge/config.ini.php

Paste the following block of code inside your new config file:

[authentication]
 
enable = true
username = "MyRSSBridgeUsername"
password = "MyStrongPassword"

Replace the value of both “username” and “password” variables with your own username and password.

A terminal showing a custom username and password for the instance.

Save your config file, then restart your container to apply your new settings:

sudo docker compose up --detach

Note: Doing this will also require you to add a username and password to subscribe to any custom RSS feed from your instance.

Creating Your First Custom RSS Feed

To create your first custom feed, scroll through the list of generators, then look for a site that you want to create a feed of.

Click the Show more link under the generator’s entry.

A screenshot highlighting the Github Issue custom RSS feed generator.

Provide the details for your RSS Feed. In my case, I want to create a feed listing all the currently open issues on the Urbit OS’ Git repository.

Click Generate Feed to create the custom RSS feed for your website.

A screenshot showing the customization details for the Github Issue feed generator.

Copy the entire RSS-Bridge address from your browser’s address bar.

A screenshot showing the address on Firefox's address bar highlighted and copied.

Go to your RSS feed reader and create a new subscription entry using the link on your clipboard.

Test your new RSS feed by listing the contents of your new custom feed using your feed reader.

A screenshot showing the custom feed working on Newsflash, an offline RSS reader for Linux.

Installing RSS-Bridge to create and publish custom RSS feeds is the first step in taking back control over your digital life. Learn more about self-hosting and how it can protect you online by creating your own private email aliases server using SimpleLogin.

Image credit: Alejandro Escamilla via Unsplash and RSS-Bridge Github. All alterations and screenshots by Ramces Red.

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.