Tiny Tiny RSS
Web-based news feed reader and aggregator.
Overview
Tiny Tiny RSS (tt-rss) is a self-hosted, web-based RSS/Atom feed reader and aggregator that provides a clean, customizable interface for managing news feeds and articles. Originally developed as an alternative to Google Reader, tt-rss offers features like feed categorization, article filtering, plugin support, and mobile synchronization, making it a popular choice for users seeking privacy-focused news consumption without relying on external services.
This deployment consists of three interconnected services: the main tt-rss web application running on PHP-FPM with static content serving, a dedicated ttrss-updater service that handles background feed updates and maintenance tasks, and a PostgreSQL database for storing feeds, articles, and user data. The updater runs continuously to fetch new content from subscribed feeds, ensuring articles are available when users access the web interface.
This configuration is ideal for privacy-conscious individuals, news enthusiasts, and small teams who want complete control over their RSS consumption without depending on third-party services. The separation of the updater from the main application ensures reliable feed processing while maintaining responsive web performance, making it suitable for both personal use and small organizational deployments.
Key Features
- Dual-service architecture with separate web interface and background feed updater for optimal performance
- PostgreSQL backend providing robust data integrity and advanced querying capabilities for feed management
- Plugin ecosystem supporting custom filters, themes, and third-party integrations
- Mobile application support with synchronization API for iOS and Android clients
- Advanced feed filtering with keyword-based rules, regular expressions, and automatic tagging
- Multi-user support with individual preferences, sharing capabilities, and access controls
- OPML import/export functionality for easy migration from other feed readers
- Built-in article archiving and search with full-text indexing through PostgreSQL
Common Use Cases
- 1Personal RSS aggregation for tracking blogs, news sites, and technical publications
- 2Small team knowledge sharing with curated feeds and article recommendations
- 3News monitoring and research with advanced filtering and categorization
- 4Privacy-focused alternative to commercial feed readers like Feedly or Inoreader
- 5Corporate internal news aggregation for industry updates and competitor monitoring
- 6Academic research with RSS feeds from journals, preprint servers, and conference sites
- 7Content curation workflow for bloggers and content creators tracking source material
Prerequisites
- Docker and Docker Compose installed with at least 1GB available RAM for PostgreSQL
- Port 8080 available for the tt-rss web interface
- Environment variables configured: DB_PASSWORD and TTRSS_URL for your domain
- Basic understanding of RSS/Atom feeds and feed URL formats
- Web browser with JavaScript enabled for the full tt-rss interface experience
- SSL certificate and reverse proxy setup recommended for production deployments
For development & testing. Review security settings, change default credentials, and test thoroughly before production use. See Terms
docker-compose.yml
docker-compose.yml
1services: 2 ttrss: 3 image: cthulhoo/ttrss-fpm-pgsql-static:latest4 container_name: ttrss5 environment: 6 - TTRSS_DB_HOST=db7 - TTRSS_DB_NAME=ttrss8 - TTRSS_DB_USER=ttrss9 - TTRSS_DB_PASS=${DB_PASSWORD}10 - TTRSS_SELF_URL_PATH=${TTRSS_URL}11 volumes: 12 - ttrss-data:/var/www/html13 ports: 14 - "8080:80"15 depends_on: 16 - db17 networks: 18 - ttrss-network19 restart: unless-stopped2021 ttrss-updater: 22 image: cthulhoo/ttrss-fpm-pgsql-static:latest23 container_name: ttrss-updater24 command: /opt/tt-rss/updater.sh25 environment: 26 - TTRSS_DB_HOST=db27 - TTRSS_DB_NAME=ttrss28 - TTRSS_DB_USER=ttrss29 - TTRSS_DB_PASS=${DB_PASSWORD}30 volumes: 31 - ttrss-data:/var/www/html32 depends_on: 33 - ttrss34 networks: 35 - ttrss-network36 restart: unless-stopped3738 db: 39 image: postgres:15-alpine40 container_name: ttrss-db41 environment: 42 - POSTGRES_USER=ttrss43 - POSTGRES_PASSWORD=${DB_PASSWORD}44 - POSTGRES_DB=ttrss45 volumes: 46 - postgres-data:/var/lib/postgresql/data47 networks: 48 - ttrss-network49 restart: unless-stopped5051volumes: 52 ttrss-data: 53 postgres-data: 5455networks: 56 ttrss-network: 57 driver: bridge.env Template
.env
1# Tiny Tiny RSS2TTRSS_URL=http://localhost:8080/tt-rss3DB_PASSWORD=secure_ttrss_passwordUsage Notes
- 1Web UI at http://localhost:8080/tt-rss
- 2Default login: admin / password
- 3Change password immediately
- 4Plugin ecosystem
- 5Mobile apps available
Individual Services(3 services)
Copy individual services to mix and match with your existing compose files.
ttrss
ttrss:
image: cthulhoo/ttrss-fpm-pgsql-static:latest
container_name: ttrss
environment:
- TTRSS_DB_HOST=db
- TTRSS_DB_NAME=ttrss
- TTRSS_DB_USER=ttrss
- TTRSS_DB_PASS=${DB_PASSWORD}
- TTRSS_SELF_URL_PATH=${TTRSS_URL}
volumes:
- ttrss-data:/var/www/html
ports:
- "8080:80"
depends_on:
- db
networks:
- ttrss-network
restart: unless-stopped
ttrss-updater
ttrss-updater:
image: cthulhoo/ttrss-fpm-pgsql-static:latest
container_name: ttrss-updater
command: /opt/tt-rss/updater.sh
environment:
- TTRSS_DB_HOST=db
- TTRSS_DB_NAME=ttrss
- TTRSS_DB_USER=ttrss
- TTRSS_DB_PASS=${DB_PASSWORD}
volumes:
- ttrss-data:/var/www/html
depends_on:
- ttrss
networks:
- ttrss-network
restart: unless-stopped
db
db:
image: postgres:15-alpine
container_name: ttrss-db
environment:
- POSTGRES_USER=ttrss
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=ttrss
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- ttrss-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 ttrss:5 image: cthulhoo/ttrss-fpm-pgsql-static:latest6 container_name: ttrss7 environment:8 - TTRSS_DB_HOST=db9 - TTRSS_DB_NAME=ttrss10 - TTRSS_DB_USER=ttrss11 - TTRSS_DB_PASS=${DB_PASSWORD}12 - TTRSS_SELF_URL_PATH=${TTRSS_URL}13 volumes:14 - ttrss-data:/var/www/html15 ports:16 - "8080:80"17 depends_on:18 - db19 networks:20 - ttrss-network21 restart: unless-stopped2223 ttrss-updater:24 image: cthulhoo/ttrss-fpm-pgsql-static:latest25 container_name: ttrss-updater26 command: /opt/tt-rss/updater.sh27 environment:28 - TTRSS_DB_HOST=db29 - TTRSS_DB_NAME=ttrss30 - TTRSS_DB_USER=ttrss31 - TTRSS_DB_PASS=${DB_PASSWORD}32 volumes:33 - ttrss-data:/var/www/html34 depends_on:35 - ttrss36 networks:37 - ttrss-network38 restart: unless-stopped3940 db:41 image: postgres:15-alpine42 container_name: ttrss-db43 environment:44 - POSTGRES_USER=ttrss45 - POSTGRES_PASSWORD=${DB_PASSWORD}46 - POSTGRES_DB=ttrss47 volumes:48 - postgres-data:/var/lib/postgresql/data49 networks:50 - ttrss-network51 restart: unless-stopped5253volumes:54 ttrss-data:55 postgres-data:5657networks:58 ttrss-network:59 driver: bridge60EOF6162# 2. Create the .env file63cat > .env << 'EOF'64# Tiny Tiny RSS65TTRSS_URL=http://localhost:8080/tt-rss66DB_PASSWORD=secure_ttrss_password67EOF6869# 3. Start the services70docker compose up -d7172# 4. View logs73docker compose logs -fOne-Liner
Run this command to download and set up the recipe in one step:
terminal
1curl -fsSL https://docker.recipes/api/recipes/tt-rss-reader/run | bashTroubleshooting
- tt-rss shows database connection errors: Verify DB_PASSWORD matches between ttrss and db services, ensure database container is running
- Feeds not updating automatically: Check ttrss-updater container logs with 'docker logs ttrss-updater', restart updater service if stuck
- Login fails with admin/password: Database may not be initialized, restart ttrss service and wait for schema creation
- Articles not loading or interface broken: Verify TTRSS_SELF_URL_PATH matches your actual access URL including protocol and port
- PostgreSQL container fails to start: Check postgres-data volume permissions, ensure no port 5432 conflicts with existing PostgreSQL installations
- Plugin installation fails: Ensure ttrss-data volume is properly mounted and writable, check plugin compatibility with tt-rss version
Community Notes
Loading...
Loading notes...
Download Recipe Kit
Get all files in a ready-to-deploy package
Includes docker-compose.yml, .env template, README, and license
Components
tt-rsstt-rss-updaterpostgresql
Tags
#rss#tt-rss#feed-reader#php#news
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download