Setting Up Automatic Feed Updating

FreshRSS is updated by the ./app/actualize_script.php script. Knowing this, we can periodically trigger it to ensure up-to-date feeds.

Note: the update script won’t update any particular feed more often than once every twenty minutes, so it doesn’t make sense to trigger it much more frequently than that.

Note: the following examples assume that FreshRSS is installed to /usr/share/FreshRSS. You’ll need to modify the FreshRSS path to reflect your own system.

Note: If you cannot configure a local Cronjob, see an alternative using online cron.

Cron inside the FreshRSS Docker image

Easiest, built-in solution, also used already in the examples above (but your Docker instance will have a second process in the background, without monitoring). Just pass the environment variable CRON_MIN to your docker run command, containing a valid cron minute definition such as '13,43' (recommended) or '*/20'. Not passing the CRON_MIN environment variable – or setting it to empty string – will disable the cron daemon.

docker run ... \
  -e 'CRON_MIN=13,43' \
  --name freshrss freshrss/freshrss

Cron as a trigger

You’ll need to check the Cron documentation for your specific distribution (Debian/Ubuntu, Red Hat/Fedora/CentOS, Slackware, Gentoo, Arch Linux …) to make sure you set the Cron job correctly.

It’s advisable that you run the Cron job as your Web server user (often www-data).

Example on Debian/Ubuntu

To run the updater script every hour, and 10 minutes past the hour:

Edit /etc/crontab and append the following line:

10 * * * * www-data php -f /usr/share/FreshRSS/app/actualize_script.php > /tmp/FreshRSS.log 2>&1

Systemd as a trigger

Some systems can’t use a Cron job, but they can use systemd. It’s easy to configure it to mimic Cron’s features.

First you need to add a freshrss.timer file in /etc/systemd/system/ with the following content:

[Unit]
Description=FreshRSS get new content

[Timer]
OnBootSec=30s
OnCalendar=*:0/20

[Install]
WantedBy=timers.target

This timer will start 30 seconds after boot and it will trigger the service every 20 minutes. Feel free to change the configuration to better suit your needs.

Then you need to add a freshrss.service file in the same directory. This will be the description of the service triggered by the aforementioned timer.

[Unit]
Description=FreshRSS get new content
Wants=freshrss.timer

[Service]
User=www-data
Type=simple
ExecStart=/usr/bin/php /usr/share/FreshRSS/app/actualize_script.php

Finally, you need to enable the timer with systemctl enable freshrss.timer and reload the systemd configuration with systemctl daemon-reload.