FreshRSS: der eigene RSS-Reader
Alle Nachrichtenquellen an einem Ort, ohne Algorithmus und Tracking: FreshRSS als selbstgehosteter RSS-Reader hinter Traefik – mit App-Anbindung und Backup.
Inhaltsverzeichnis
RSS ist das beste Nachrichtenformat, das die meisten vergessen haben: Du abonnierst Quellen direkt, ohne Algorithmus, ohne Werbung, ohne dass jemand mitliest, was du liest. FreshRSS bündelt all deine Quellen an einem selbstgehosteten Ort – und synchronisiert sogar mit den RSS-Apps auf dem Handy.
Was bauen wir?
Einen eigenen RSS-Reader mit FreshRSS (v1.29.1) hinter Traefik, der deine Nachrichtenquellen sammelt und im Hintergrund per Cron aktuell hält. Am Ende liest du heise, Blogs, YouTube-Kanäle und Podcasts an einem Ort, gruppiert in Kategorien – und kannst über die eingebaute Google-Reader-API mobile Apps wie Reeder oder FeedMe anbinden. FreshRSS ist erfrischend leichtgewichtig: Es genügt SQLite, keine separate Datenbank nötig.
Voraussetzungen
- Ein Server mit laufendem Traefik und Docker Compose
- Eine Subdomain, die auf den Server zeigt – im Folgenden
DEINE_DOMAIN(z. B.rss.DEINE_DOMAIN)
VPS 1000 G12
4 vCore · 8 GB RAM · 256 GB NVMe
ab 10,36 €/Monat
FreshRSS ist genügsam – der kleinste VPS reicht auch für viele Feeds.
💶 5 € Gutschein für netcup-Neukunden:36nc17844976032
(nur Neukunden, keine Domains)
Schritt für Schritt
Schritt 1: Compose-Datei anlegen
FreshRSS speichert alles in einem data-Verzeichnis (SQLite-Datenbank, Konfiguration, Cache). Lege das Projekt an:
mkdir -p /opt/freshrss && cd /opt/freshrssDie compose.yaml – ersetze DEINE_DOMAIN:
services:
freshrss:
image: freshrss/freshrss:1.29.1
restart: unless-stopped
volumes:
- ./data:/var/www/FreshRSS/data
- ./extensions:/var/www/FreshRSS/extensions
environment:
TZ: Europe/Berlin
CRON_MIN: '13,43'
networks: [proxy]
labels:
- "traefik.enable=true"
- "traefik.http.routers.freshrss.rule=Host(`DEINE_DOMAIN`)"
- "traefik.http.routers.freshrss.entrypoints=websecure"
- "traefik.http.routers.freshrss.tls.certresolver=le"
- "traefik.http.services.freshrss.loadbalancer.server.port=80"
networks:
proxy:
external: trueCRON_MIN ist ein nettes Detail des offiziellen Images: Es startet einen internen Cron, der die Feeds zu den genannten Minuten (hier 13 und 43 jeder Stunde) automatisch aktualisiert – du brauchst keinen externen Timer.
Schritt 2: Starten
docker compose up -dPrüfe, dass FreshRSS mit gültigem HTTPS antwortet (die 302 ist die Weiterleitung zum Installations-Assistenten):
curl -sI https://DEINE_DOMAIN/ | head -1HTTP/2 302Schritt 3: Der Installations-Assistent
Öffne https://DEINE_DOMAIN/ im Browser. Der Assistent führt dich in fünf Schritten durch die Einrichtung – Sprache, Systemprüfung, Datenbank, Konto:

Wähle als Datenbanktyp SQLite (keine weiteren Angaben nötig), als Authentifizierung Formular-basiert und lege dein Administrator-Konto mit einem starken Passwort an. Nach dem letzten Schritt bist du eingeloggt.
Alternative: Einrichtung per Kommandozeile
docker compose exec -u www-data freshrss ./cli/do-install.php --default-user admin --auth-type form --db-type sqlite --language de, danach ./cli/create-user.php --user admin --password 'DEIN_PASSWORT'. Praktisch für reproduzierbare Setups – für den Einstieg ist der grafische Assistent aber bequemer.Schritt 4: Erste Feeds abonnieren
Klicke oben links auf Abonnementverwaltung → Feed oder Kategorie hinzufügen. Trage die Feed-URL einer Quelle ein (z. B. https://www.heise.de/rss/heise-atom.xml) und ordne sie einer Kategorie zu. FreshRSS erkennt das Feed-Format automatisch. Nach dem Hinzufügen mehrerer Quellen sieht die Verwaltung so aus:

Bestehende Feeds per OPML übernehmen
Schritt 5: Lesen
Zurück in der Leseansicht sammelt FreshRSS die Artikel aller Quellen chronologisch, gruppiert nach Kategorie. Ungelesene Zähler pro Feed, Sternchen für Favoriten, Volltextsuche – alles da:

Schritt 6: Handy-Apps anbinden (optional)
FreshRSS spricht die Google-Reader-API, sodass viele mobile Apps es als Sync-Backend nutzen können. Aktiviere sie unter Einstellungen → Profil → Externer Zugriff via API und vergib dort ein separates API-Passwort. In der App (z. B. Reeder, FeedMe, NetNewsWire) wählst du „FreshRSS“ oder „Google Reader API“, trägst https://DEINE_DOMAIN/api/greader.php, deinen Benutzernamen und das API-Passwort ein – und liest unterwegs synchron weiter.
Wenn es nicht funktioniert
Der Assistent meldet Schreibrechte-Fehler beim data-Ordner. Der Container läuft als www-data (UID 33). Bei bind-gemountetem ./data müssen die Rechte passen: chown -R 33:33 /opt/freshrss/data (siehe Benutzer & Rechte).
Feeds werden nicht automatisch aktualisiert. Prüfe, ob CRON_MIN gesetzt ist und der interne Cron läuft: docker compose logs freshrss | grep -i cron. Manuell anstoßen kannst du jederzeit über den Aktualisieren-Knopf oben rechts oder docker compose exec -u www-data freshrss ./cli/actualize-user.php --user admin.
Ein Feed bleibt leer / wird als „inaktiv" markiert. Die Quelle liefert kein gültiges RSS/Atom, oder die URL ist eine HTML-Seite statt des Feeds. Viele Seiten verstecken den Feed – suche im Seitenquelltext nach application/rss+xml. Unter „Statistiken → Inaktive Feeds“ findest du Problemquellen gebündelt.
Login klappt nicht, obwohl das Passwort stimmt. FreshRSS verschlüsselt das Passwort im Browser (JavaScript). Ist JavaScript deaktiviert oder die Verbindung nicht wirklich HTTPS (Zertifikatswarnung), scheitert der Login. Über Traefik ist HTTPS gegeben – prüfe im Zweifel das Zertifikat.
Nach einem Update fehlen Artikel. FreshRSS bereinigt alte Artikel nach einer einstellbaren Frist (Standard: einige Wochen). Das ist gewollt und hält die Datenbank klein; erhöhe bei Bedarf die Aufbewahrung pro Feed in dessen Einstellungen.
Wartung & Backups
- Updates. Setze den Image-Tag (
freshrss/freshrss:1.29.1) gelegentlich auf die neue Version unddocker compose up -d; FreshRSS wandert seine Datenbank beim Start automatisch mit. Größere Sprünge kündigt das Projekt in den Release-Notes an – meist ist nichts weiter zu tun. Den Rest erledigt dein normaler Update-Prozess. - Backup. Der gesamte Zustand liegt im
data-Ordner (SQLite-Datenbank + Konfiguration). Ihn ins Restic-Backup aufnehmen – dann sind Abos, Kategorien und gelesene Markierungen gesichert. Zusätzlich lohnt ein regelmäßiger OPML-Export deiner Feed-Liste als menschenlesbares, reader-unabhängiges Backup. - Aufwand ist gering. FreshRSS ist ein „einmal einrichten, dann läuft es"-Dienst. Die einzige wiederkehrende Aufgabe ist das Pflegen deiner Feed-Liste – tote Quellen unter „Inaktive Feeds“ ausmisten, Neues abonnieren.
Zuletzt aktualisiert: 09.09.2026
Feedback per E-Mail: feedback@serverkueche.de
Das könnte dir auch schmecken

Stirling-PDF: der PDF-Werkzeugkasten auf dem eigenen Server
PDFs zusammenführen, komprimieren, umwandeln, per OCR durchsuchbar machen – lokal statt bei Online-Diensten: …

Syncthing: Dateien zwischen Geräten synchronisieren – ohne Cloud
Dateien direkt zwischen deinen Geräten abgleichen, verschlüsselt und ohne fremde Cloud: Syncthing als Peer-to-Peer-Sync …

Homepage: das Dashboard für alle deine selbstgehosteten Dienste
Ein aufgeräumtes Start-Dashboard für deinen Server: Homepage verlinkt alle Dienste, zeigt Systemlast und live den …