Tiny Tiny RSS
Web-based news feed (RSS/Atom) reader and aggregator
Alternative to: feedly, inoreader, the old reader, newsblur
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.