← ZurĂŒck zur Übersicht FreshRSS mit Docker Compose: RSS-Feeds lokal statt Social-Noise lesen

FreshRSS mit Docker Compose: RSS-Feeds lokal statt Social-Noise lesen

FreshRSS mit Docker Compose: RSS-Feeds lokal statt Social-Noise lesen

Stand: 27. April 2026, 00:00 Uhr CEST. Wenn das News-Lagebild fuer einen sauberen Zeitbezug nicht stark genug ist, muss der Fallback echten Alltagsnutzen liefern. Genau das schafft FreshRSS: Die offizielle Projektseite beschreibt es weiterhin als selbst hostbaren RSS- und Atom-Aggregator, und die aktuelle Docker-Doku nennt die eingebaute SQLite-Datenbank explizit als einfachste Variante mit guter Performance. Das GitHub-Release-Verzeichnis fuehrt Stand heute weiterhin FreshRSS 1.27.1 als neuesten stabilen Release, also pinne ich genau diesen Stand statt blind auf latest.

Der praktische Punkt ist einfach: Du bekommst in wenigen Minuten eine lokale Feed-Oberflaeche unter http://127.0.0.1:8084, musst keinen separaten Datenbank-Container pflegen und hast mit Docker Compose einen reproduzierbaren Startpunkt fuer spaetere Erweiterungen.

Lokales Artikelbild fuer FreshRSS mit Docker Compose

Was du am Ende hast

  • FreshRSS lokal unter http://127.0.0.1:8084
  • persistente Daten in ./data
  • einen vorkonfigurierten Admin-User fuer den ersten Login
  • eingebaute Feed-Aktualisierung ueber CRON_MIN
  • Pruefschritte mit docker compose, curl und Browser

Voraussetzungen

Du brauchst nur:

  • Docker Engine
  • das Compose-Plugin (docker compose)
  • einen freien lokalen Port 8084

Kurz pruefen:

docker --version
docker compose version

1. Arbeitsordner anlegen

Nicht in einem bestehenden Projekt starten. Lege zuerst einen eigenen Ordner an:

mkdir freshrss-local
cd freshrss-local
mkdir -p data extensions

2. .env fuer den ersten Start anlegen

Lege jetzt die Datei freshrss-local/.env an:

BASE_URL=http://127.0.0.1:8084
ADMIN_USER=admin
[email protected]
ADMIN_PASSWORD=change-this-now
ADMIN_API_PASSWORD=change-this-api-password

Wichtig dabei:

  • BASE_URL muss zum lokalen Port passen
  • ADMIN_PASSWORD und ADMIN_API_PASSWORD solltest du vor einem echten Dauerbetrieb aendern
  • die Auto-Install-Werte greifen nur beim ersten Start mit leerem Datenordner

3. Compose-Datei schreiben

Lege nun die Datei freshrss-local/compose.yaml an:

services:
  freshrss:
    image: freshrss/freshrss:1.27.1
    container_name: freshrss
    restart: unless-stopped
    ports:
      - "127.0.0.1:8084:80"
    environment:
      TZ: Europe/Berlin
      CRON_MIN: "13,43"
      FRESHRSS_INSTALL: |-
        --api-enabled
        --base-url ${BASE_URL}
        --default-user ${ADMIN_USER}
        --language de
      FRESHRSS_USER: |-
        --api-password ${ADMIN_API_PASSWORD}
        --email ${ADMIN_EMAIL}
        --language de
        --password ${ADMIN_PASSWORD}
        --user ${ADMIN_USER}
    volumes:
      - ./data:/var/www/FreshRSS/data
      - ./extensions:/var/www/FreshRSS/extensions
    healthcheck:
      test: ["CMD", "cli/health.php"]
      timeout: 10s
      start_period: 60s
      interval: 75s
      retries: 3

Warum genau so?

  • freshrss/freshrss:1.27.1 macht das Setup reproduzierbar
  • ./data speichert Konfiguration und SQLite-Datenbank persistent
  • ./extensions ist optional, spart dir spaeter aber einen Umbau
  • 127.0.0.1:8084:80 bindet FreshRSS bewusst nur lokal
  • CRON_MIN aktiviert die eingebaute Feed-Aktualisierung zweimal pro Stunde
  • der healthcheck nutzt genau die von FreshRSS dokumentierte CLI-Pruefung

4. Stack starten

Jetzt ziehst du das Image und startest den Dienst:

docker compose pull
docker compose up -d

Wenn das Image lokal angekommen ist, sollte nur ein Container laufen: freshrss.

5. Technisch pruefen

Pruefe zuerst den Status:

docker compose ps

Dann kontrollierst du die Startmeldungen:

docker compose logs --tail=100 freshrss

Zum Schluss pruefst du den HTTP-Endpunkt:

curl -I http://127.0.0.1:8084

Wenn alles sauber steht, bekommst du einen HTTP-Status zurueck und der Container bleibt im Status running oder healthy. Falls nicht, liefern die Logs direkt den schnellsten Hinweis.

6. FreshRSS im Browser fertig machen

Oeffne jetzt:

http://127.0.0.1:8084

Melde dich mit den Werten aus freshrss-local/.env an. Danach ist das sichtbare Ergebnis dieses Tutorials erreicht: Du landest in einer laufenden FreshRSS-Oberflaeche auf deinem eigenen Host statt in einem fremden Cloud-Dienst.

Damit die Instanz nicht leer bleibt, fuege direkt einen ersten Feed hinzu:

  1. oben auf das + fuer neue Quellen klicken
  2. eine RSS- oder Atom-URL einfuegen, die du ohnehin regelmaessig liest
  3. Feed speichern und die erste Synchronisierung abwarten

Spaetestens dann siehst du den eigentlichen Wert von FreshRSS: neue Eintraege laufen zentral in einer einzigen, selbst kontrollierten Leseflaeche auf.

7. Was du ueber den ersten Start wissen solltest

Die Auto-Install-Parameter in FRESHRSS_INSTALL und FRESHRSS_USER sind bewusst bequem, aber sie gelten nur fuer den ersten Boot mit leerem Datenbestand. Wenn du spaeter ADMIN_PASSWORD in der .env aenderst, aktualisiert das nicht rueckwirkend die bereits angelegte Instanz.

Wenn du komplett neu anfangen willst, musst du FreshRSS mit leerem Datenordner neu initialisieren. Im Alltag ist das richtige Vorgehen aber einfacher:

  • Passwoerter nach dem ersten Login in der Web-Oberflaeche aendern
  • ./data in dein Backup aufnehmen
  • BASE_URL spaeter auf deine echte Domain anpassen, falls du doch einen Reverse Proxy davor setzt

8. Nuetzliche Alltagsbefehle

docker compose logs -f freshrss
docker compose restart freshrss
docker compose pull
docker compose up -d
docker compose down

docker compose down entfernt den Container, aber nicht automatisch den Inhalt von ./data.

9. Warum dieses Setup fuer April 2026 passt

Der Punkt hier ist nicht irgendein austauschbarer Docker-Quickstart. FreshRSS ist Stand 27. April 2026 weiterhin ein aktives, offiziell dokumentiertes Projekt mit eigener Docker-Route, klarer SQLite-Empfehlung fuer einfache Setups und einem weiterhin gefuehrten Stable-Release 1.27.1. Fuer Leser ist das praktischer als ein abstrakter RSS-Grundlagenpost: Du hast einen sichtbaren Browser-Endpunkt, persistente Daten und ein Werkzeug, das News, Blogs, Podcasts und Release-Feeds in einer lokalen Oberflaeche buendelt.

Quellen