I love RSS
If you are like me and love RSS, I highly recommend hosting your own RSS Feed aggregator. A fellow community member in the TechnoTim discord (Thanks Blade) introduced me to FressRSS. It is free, lightweight, relatively easy to work with, and fully customizable. Though, it seems I like to do things the “hard way” and decided against using the docker image. So if you are looking for the fire and forget method you get with docker, then you are in the wrong place.
Install
https://github.com/FreshRSS/FreshRSS/releases/tag/1.21.0
First, lets install our LAMP stack
LAMP Stack
sudo apt install apache2 libapache2-mod-php mariadb-server php-curl php-mbstring php-mysql php-zip php-xml
MySQL Secure Install
Once this has been completed, move to running mysql_secure_installation
sudo mysql_secure_installation
- Enter Current Password for Root (mysql/mariadb root user). If none, just press enter. However, I recommend setting your root password at this step. Just makes life easier later.
- Switch to Unix_Socket authentication? (Y)
- Change root password? (N, you already set one in step 1)
- Remove Anonymous Users? (Y)
- Remove Remote Root Login? (Y-this disallows the ability to connect, remotely, to the db instance as root)
- Remote Test Databases? (Y, don’t need it)
- Reload Privileges? (Y)
Create Database for FreshRSS
CREATE DATABASE freshrss;
CREATE USER 'freshrss'@'localhost' IDENTIFIED BY 'yourpasswordhere';
GRANT ALL PRIVILEGES ON freshrss.* to freshrss@localhost;
Clone FreshRSS Repo
git clone https://github.com/FreshRSS/FreshRSS.git
Change Ownership on FreshRSS Directory
sudo chown -R yourlocaluser:yourlocaluser FreshRSS
Change ownership on data directory
sudo chown -R www-data:www-data data
Edit 000-default.conf in /etc/apache2/sites-enabled
sudo nano /etc/appache2/sites-enabled/000-default.conf
## Change , in this file, DocumentRoot to where you have cloned the FreshRSS Repo, but add the P directoy
ServerAdmin webmaster@localhost
DocumentRoot /var/www/FreshRSS/p
Configure/Finish install of FreshRSS
Go to your server site “http://192.168.x.xxx/i" and follow the install steps using database user and password you created in the previous steps
Post-Install
Out of the box, my FreshRSS instance was not auto-refreshing my feeds. This made it pointless to use, honestly, and I almost just deleted the vm. However, I was shown a method via the following doc:
https://freshrss.github.io/FreshRSS/en/admins/08_FeedUpdates.html
In here, you can either create a cronjob or actually use systemd to create trigger and service to do the refreshing for you. Here is the example files (the trigger and service itself) that I created. Your’s may vary depending on your install path and/or your user.
freshrss.service
[Unit]
Description=FreshRSS get new content
Wants=freshrss.timer
[Service]
User=www-data
Type=simple
ExecStart=/usr/bin/php /var/www/FreshRSS/app/actualize_script.php
freshrss.trigger
[Unit]
Description=FreshRSS get new content
[Timer]
OnBootSec=30s
OnCalendar=*:0/20
[Install]
WantedBy=timers.target
Once these have been created in /etc/systemd/system, enable the timer with systemctl enable freshrss.timer
followed by reloading the systemd config with systemctl daemon-reload
.