CommaFeed RSS Reader
Google Reader inspired RSS reader with clean interface.
Overview
CommaFeed is an open-source, self-hosted RSS reader built in Java that provides a clean, Google Reader-inspired interface for managing and reading RSS feeds. Originally created as a response to Google Reader's discontinuation, CommaFeed offers familiar keyboard shortcuts, folder organization, and OPML import/export functionality while maintaining the simplicity and speed that made Google Reader popular among power users and casual readers alike. This deployment combines CommaFeed with PostgreSQL to create a robust, scalable RSS reading platform. The setup includes the CommaFeed application server running on port 8082 and a dedicated PostgreSQL database for storing feeds, articles, user preferences, and reading history. The two services communicate over an isolated Docker network, with CommaFeed configured to use PostgreSQL's JDBC driver for reliable data persistence. This configuration is ideal for individuals, families, or small teams who want to maintain control over their RSS consumption without relying on third-party services. The PostgreSQL backend ensures excellent performance even with hundreds of feeds and thousands of articles, while CommaFeed's web interface provides cross-platform access from any browser, making it perfect for users transitioning from cloud-based RSS services or those prioritizing data privacy and self-hosting.
Key Features
- Google Reader-inspired interface with familiar three-pane layout and keyboard shortcuts
- PostgreSQL backend for reliable storage of feeds, articles, and user data with ACID compliance
- OPML import and export for easy migration from other RSS readers
- Real-time feed updates with configurable refresh intervals per feed
- Full-text search across all articles with PostgreSQL's advanced search capabilities
- Multiple view modes including list view, expanded view, and full article content
- Feed categorization with folder support for organizing large numbers of subscriptions
- Mobile-responsive web interface that works across desktop and mobile browsers
Common Use Cases
- 1Personal RSS aggregation for news, blogs, and technical content consumption
- 2Small team knowledge sharing with shared feed subscriptions and article recommendations
- 3Content curation for researchers who need to track multiple industry publications
- 4Privacy-focused RSS reading for users wanting to avoid tracking by commercial services
- 5Corporate internal news aggregation for company blogs and industry updates
- 6Academic research tracking for following journal publications and conference proceedings
- 7Homelab addition for self-hosting enthusiasts building comprehensive personal cloud services
Prerequisites
- Docker and Docker Compose installed with support for multi-service orchestration
- At least 512MB RAM available (256MB for PostgreSQL, 256MB for CommaFeed Java application)
- Port 8082 available for CommaFeed web interface access
- Environment variable DB_PASSWORD configured for PostgreSQL authentication
- Basic understanding of RSS feeds and OPML format for feed management
- Web browser with JavaScript enabled for full CommaFeed interface functionality
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 commafeed: 3 image: athou/commafeed:latest4 container_name: commafeed5 environment: 6 - CF_DATABASE_DRIVERCLASS=org.postgresql.Driver7 - CF_DATABASE_URL=jdbc:postgresql://db/commafeed8 - CF_DATABASE_USER=commafeed9 - CF_DATABASE_PASSWORD=${DB_PASSWORD}10 ports: 11 - "8082:8082"12 depends_on: 13 - db14 networks: 15 - commafeed-network16 restart: unless-stopped1718 db: 19 image: postgres:15-alpine20 container_name: commafeed-db21 environment: 22 - POSTGRES_USER=commafeed23 - POSTGRES_PASSWORD=${DB_PASSWORD}24 - POSTGRES_DB=commafeed25 volumes: 26 - postgres-data:/var/lib/postgresql/data27 networks: 28 - commafeed-network29 restart: unless-stopped3031volumes: 32 postgres-data: 3334networks: 35 commafeed-network: 36 driver: bridge.env Template
.env
1# CommaFeed2DB_PASSWORD=secure_commafeed_passwordUsage Notes
- 1Web UI at http://localhost:8082
- 2Default login: admin / admin
- 3Google Reader-like interface
- 4Keyboard shortcuts
- 5OPML import/export
Individual Services(2 services)
Copy individual services to mix and match with your existing compose files.
commafeed
commafeed:
image: athou/commafeed:latest
container_name: commafeed
environment:
- CF_DATABASE_DRIVERCLASS=org.postgresql.Driver
- CF_DATABASE_URL=jdbc:postgresql://db/commafeed
- CF_DATABASE_USER=commafeed
- CF_DATABASE_PASSWORD=${DB_PASSWORD}
ports:
- "8082:8082"
depends_on:
- db
networks:
- commafeed-network
restart: unless-stopped
db
db:
image: postgres:15-alpine
container_name: commafeed-db
environment:
- POSTGRES_USER=commafeed
- POSTGRES_PASSWORD=${DB_PASSWORD}
- POSTGRES_DB=commafeed
volumes:
- postgres-data:/var/lib/postgresql/data
networks:
- commafeed-network
restart: unless-stopped
Quick Start
terminal
1# 1. Create the compose file2cat > docker-compose.yml << 'EOF'3services:4 commafeed:5 image: athou/commafeed:latest6 container_name: commafeed7 environment:8 - CF_DATABASE_DRIVERCLASS=org.postgresql.Driver9 - CF_DATABASE_URL=jdbc:postgresql://db/commafeed10 - CF_DATABASE_USER=commafeed11 - CF_DATABASE_PASSWORD=${DB_PASSWORD}12 ports:13 - "8082:8082"14 depends_on:15 - db16 networks:17 - commafeed-network18 restart: unless-stopped1920 db:21 image: postgres:15-alpine22 container_name: commafeed-db23 environment:24 - POSTGRES_USER=commafeed25 - POSTGRES_PASSWORD=${DB_PASSWORD}26 - POSTGRES_DB=commafeed27 volumes:28 - postgres-data:/var/lib/postgresql/data29 networks:30 - commafeed-network31 restart: unless-stopped3233volumes:34 postgres-data:3536networks:37 commafeed-network:38 driver: bridge39EOF4041# 2. Create the .env file42cat > .env << 'EOF'43# CommaFeed44DB_PASSWORD=secure_commafeed_password45EOF4647# 3. Start the services48docker compose up -d4950# 4. View logs51docker 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/commafeed-reader/run | bashTroubleshooting
- CommaFeed shows database connection error: Verify DB_PASSWORD environment variable matches in both commafeed and db services
- Feeds not updating or showing stale content: Check internet connectivity and verify RSS feed URLs are accessible from the container
- Login page shows but admin/admin doesn't work: Wait for database initialization to complete, check commafeed container logs for startup completion
- High memory usage from commafeed service: Increase Java heap size by adding JAVA_OPTS environment variable with -Xmx512m or higher
- OPML import fails with timeout: Break large OPML files into smaller chunks, PostgreSQL may need time to process many feeds simultaneously
- Articles not displaying full content: Enable full-text extraction in CommaFeed settings, some feeds provide only summaries by default
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
commafeedpostgresql
Tags
#rss#commafeed#feed-reader#google-reader#java
Category
Productivity & CollaborationAd Space
Shortcuts: C CopyF FavoriteD Download