Ziele

Der Betrieb eines lokalen FreshRSS Servers ist eigentlich recht einfach und ist dieser Teil abgeschlossen,
kann auf einen kompletten FreshRSS Server im lokalen Netzwerk zugegriffen werden. Im Grunde ist es eine klassische Webserver, PHP Anwendung.

NEU: Für ganz ungeduldige habe ich einen "Konsole only" Abschnitt. Da gibt es nur Befehle, keine Erklärungen.

Letzte Aktualisierung:

  • 30.11.2024: Überarbeitung. Entfernung von TrueNAS und umschreiben auf reines FreeBSD. Jails mit Bastille.
  • 07.09.2024: Initiales Dokument

Grundbedingungen

Diagramm

Damit sieht das Setup inkl. aller optionalen Möglichkeiten so aus:

                   ┌──────────────────────────────────────────────┐
                   │  FreeBSD                Optional:            │
                   │ ┌────────────────────┐ ┌───────────────────┐ │
                   │ │ bastille/jails/web │ │ bastille/data/web │ │
                   │ │   freshrss (php) ──┼─┼─► backup          │ │
                   │ │     ▲              │ │   conf            │ │
LAN: 0.0.0.0:443 ──┼─┼─► nginx            │ │   data            │ │
                   │ └────────────────────┘ └───────────────────┘ │
                   └──────────────────────────────────────────────┘

Jail erstellen

Es wird ein eigenes Jail benötigt. Hier nehmen wir rss als Jailnamen.

Optional: Datenverzeichnisse

Wie bestimmte Datenverzeichnisse außerhalb des Jails abgelegt werden, wird hier erklärt..
Es werden folgende Verzeichnisse benötigt:

└── /usr/local/bastille/data
  └── rss      # Name des Jails
    ├── backup # Ablage für Backups (im Jail: /mnt/backup)
    ├── conf   # Ablage für Konfigurationsdateien (im Jail: /mnt/conf)
    └── data   # Ablage für die Daten im FreshRSS (im Jail: /mnt/data)

Jail einrichten

Entweder mit bastile console rss eine Konsole in das erstellte Jail starten, oder es erfolgt ein Login per SSH (wenn aktiviert) mit ssh USERNAME@IP oder ssh USERNAME@HOSTNAME, um dann mit su root Rechte zu erlangen.

Paketquelle anpassen

Paketquellen sollten angepasst werden, siehe separater Artikel!

Nginx

Nginx und PHP müssen bereits installiert sein, siehe separater Artikel!

Konfiguration erstellen

Die Nginx Konfiguration wird zur besseren Verwaltung in eine eigene Datei erstellt:

  • /usr/local/etc/nginx/conf.d/freshrss.conf = FreshRSS Konfiguration für Nginx

Optional: Symlink setzen, um auf die Konfiguration in /mnt/conf/ zu verweisen:
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'

FreshRSS

Pakete installieren & Dienste aktivieren

Nun die Paketquelle mit pkg update aktualisieren und weitere von FreshRSS benötigten PHP Module installieren:
pkg install -y git php84-curl php84-fileinfo php84-zip php84-intl php84-mbstring

Pfad anpassen

Optional: Symlink setzen, um das komplette FreshRSS Verzeichnis in /mnt/data/ zu verweisen:
ln -sf /mnt/data/FreshRSS /usr/local/www/FreshRSS

Installation

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/

Dienste starten

Damit sind wir nun am Ende der Vorbereitungen angelangt
und alle Dienste können nun mit service php_fpm restart && service nginx restart gestartet werden.

Nun kann die "FreshRSS" Webseite geöffnet werden.
Beim ersten mal wird der Installationsassistent durchlaufen. Der ist weitestgehend selbsterklärend, wichtig ist hierbei nur SQLITE als Datenbank zu wählen.

Konsole

OPTIONAL = Nur durchführen wenn die Konfiguration außerhalb des Jails liegt
INITIAL = Nur bei der Erstinstallation ausführen oder wenn die Konfiguration nicht außerhalb des Jails liegt

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