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:
┌──────────────────────────────────────────────┐
│ FreeBSD Optional: │
│ ┌────────────────────┐ ┌───────────────────┐ │
│ │ bastille/jails/web │ │ bastille/data/web │ │
│ │ freshrss (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:
└── /usr/local/bastille/data
└── rss # Name of the jail
├── 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)
Either use bastile console rss to start a console in the created jail, or log in via SSH (if activated) with ssh USERNAME@IP or ssh USERNAME@HOSTNAME to then 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