Tiny Tiny RSS logo

Tiny Tiny RSS

Web-based news feed (RSS/Atom) reader and aggregator

Alternative to: feedly, inoreader, the old reader, newsblur


About

Tiny Tiny RSS (tt-rss) is a free, flexible, open-source, web-based news feed reader and aggregator that lets you subscribe to and read RSS/Atom feeds from a single self-hosted interface. It supports labels, filters, plugins, and multiple users, and is actively continued by a long-time contributor after the original project's retirement in late 2025.

Tiny Tiny RSS Docker Compose example

Self-host Tiny Tiny RSS on your own server, homelab, or VPS starting from this Docker Compose example. It runs Tiny Tiny RSS in Docker containers using the official postgres:15-alpine, cthulhoo/ttrss-fpm-pgsql-static:latest, cthulhoo/ttrss-fpm-pgsql-static:latest, cthulhoo/ttrss-web-nginx:latest images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  db:
    image: postgres:15-alpine
    restart: unless-stopped
    volumes:
      - db:/var/lib/postgresql/data
    environment:
      # Database user for tt-rss (internal to the compose network).
      POSTGRES_USER: "ttrss"
      # Database password for tt-rss (internal to the compose network).
      POSTGRES_PASSWORD: "ttrss"
      # Database name for tt-rss.
      POSTGRES_DB: "ttrss"

  app:
    image: cthulhoo/ttrss-fpm-pgsql-static:latest
    restart: unless-stopped
    depends_on:
      - db
    volumes:
      - app:/var/www/html
    environment:
      # Full external URL where tt-rss is reached, including the /tt-rss path segment.
      TTRSS_SELF_URL_PATH: "http://localhost:8280/tt-rss"
      # Hostname of the PostgreSQL service.
      TTRSS_DB_HOST: "db"
      # PostgreSQL port.
      TTRSS_DB_PORT: "5432"
      # Database name (matches POSTGRES_DB).
      TTRSS_DB_NAME: "ttrss"
      # Database user (matches POSTGRES_USER).
      TTRSS_DB_USER: "ttrss"
      # Database password (matches POSTGRES_PASSWORD).
      TTRSS_DB_PASS: "ttrss"

  updater:
    image: cthulhoo/ttrss-fpm-pgsql-static:latest
    restart: unless-stopped
    depends_on:
      - app
    volumes:
      - app:/var/www/html
    command: /opt/tt-rss/updater.sh
    environment:
      # Full external URL where tt-rss is reached, including the /tt-rss path segment.
      TTRSS_SELF_URL_PATH: "http://localhost:8280/tt-rss"
      # Hostname of the PostgreSQL service.
      TTRSS_DB_HOST: "db"
      # PostgreSQL port.
      TTRSS_DB_PORT: "5432"
      # Database name (matches POSTGRES_DB).
      TTRSS_DB_NAME: "ttrss"
      # Database user (matches POSTGRES_USER).
      TTRSS_DB_USER: "ttrss"
      # Database password (matches POSTGRES_PASSWORD).
      TTRSS_DB_PASS: "ttrss"

  web-nginx:
    image: cthulhoo/ttrss-web-nginx:latest
    restart: unless-stopped
    depends_on:
      - app
    volumes:
      - app:/var/www/html:ro

volumes:
  db:
  app:

Prefer a managed setup? WinterFlow installs, configures, and updates Tiny Tiny RSS for you using this same Docker Compose configuration.