The operation of a local FreshRSS server is actually quite simple and once this part is complete, a complete FreshRSS server can be accessed on the local network. Basically it is a classic web server, PHP application.
NEW: For the very impatient I have a "console only" section. There are only commands, no explanations.
Last update:
The setup including all optional possibilities looks like this:
┌──────────────────────────────────────────────────────┐
│ TrueNAS Optional: │
│ ┌───────────────────────┐ ┌────────────────────────┐ │
│ │ jail/rss │ │ jails_data/rss │ │
│ │ tt-rss (php) ───────┼─┼─► backup │ │
│ │ ▲ │ │ conf │ │
LAN: 0.0.0.0:443 ──┼─┼─► nginx │ │ data │ │
│ └───────────────────────┘ └────────────────────────┘ │
└──────────────────────────────────────────────────────┘
You need your own jail. Here we take rss
as jail name.
How certain data directories are stored outside the jail is explained here.
The following directories are required:
└── /mnt/tank/jails_data
└── rss
├── backup # Storage for backups (in jail: /mnt/backup)
├── conf # Storage for configuration files (in the jail: /mnt/conf)
└── data # Storage for the data in FreshRSS (in the jail: /mnt/data)
Login to the jail via SSH: ssh USERNAME@IP
or ssh USERNAME@HOSTNAME
to gain root rights with su
.
Package sources should be customized, see separate article!
Nginx and PHP must already be installed, see separate article!
The Nginx configuration is created in a separate file for better administration:
/usr/local/etc/nginx/conf.d/freshrss.conf
= FreshRSS configuration for NginxOptional: Set symlink to refer to the configuration in /mnt/conf/
:
ln -sf /mnt/conf/freshrss.conf /usr/local/etc/nginx/conf.d/freshrss.conf
cat > /usr/local/etc/nginx/conf.d/freshrss.conf << 'EOF'
server {
listen 443 ssl;
http2 on;
root /usr/local/www/FreshRSS;
index index.php index.html;
location ~ \.php$ {
include fastcgi_params;
set $path_info $fastcgi_path_info;
fastcgi_split_path_info ^(/.+\.php)(/.*)?$;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param PATH_INFO $path_info;
fastcgi_pass php-handler;
}
}
'EOF'
Now update the package source with pkg update
and install further PHP modules required by FreshRSS:
pkg install -y git php84-curl php84-fileinfo php84-zip php84-intl php84-mbstring
Optional: Set symlink to point to the complete FreshRSS directory in /mnt/data/
:
ln -sf /mnt/data/FreshRSS /usr/local/www/FreshRSS
cd /usr/local/www/FreshRSS
git init && git remote add origin https://github.com/FreshRSS/FreshRSS.git && git pull origin edge
chown -R www:www /usr/local/www/FreshRSS/
We have now reached the end of the preparations
and all services can now be started with service php_fpm restart && service nginx restart
.
The "FreshRSS" website can now be opened.
The installation wizard is run through the first time. This is largely self-explanatory, it is only important to select SQLITE as the database.
OPTIONAL = Only execute if the configuration is outside the jail INITIAL = Only execute during initial installation or if the configuration is not outside the jail
pkg update
pkg install -y git php84-curl php84-fileinfo php84-zip php84-intl php84-mbstring
OPTIONAL: ln -sf /mnt/conf/freshrss.conf /usr/local/etc/nginx/conf.d/freshrss.conf
OPTIONAL: ln -sf /mnt/data/FreshRSS /usr/local/www/FreshRSS
INITIAL: fetch https://raw.githubusercontent.com/marzlberger/bsdbox/main/freshrss/freshrss.conf -o /usr/local/etc/nginx/conf.d/freshrss.conf
cd /usr/local/www/FreshRSS
git init && git remote add origin https://github.com/FreshRSS/FreshRSS.git && git pull origin edge
chown -R www:www /usr/local/www/FreshRSS/
service php_fpm restart && service nginx restart