docker.recipes

CommaFeed RSS Reader

beginner

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:latest
4 container_name: commafeed
5 environment:
6 - CF_DATABASE_DRIVERCLASS=org.postgresql.Driver
7 - CF_DATABASE_URL=jdbc:postgresql://db/commafeed
8 - CF_DATABASE_USER=commafeed
9 - CF_DATABASE_PASSWORD=${DB_PASSWORD}
10 ports:
11 - "8082:8082"
12 depends_on:
13 - db
14 networks:
15 - commafeed-network
16 restart: unless-stopped
17
18 db:
19 image: postgres:15-alpine
20 container_name: commafeed-db
21 environment:
22 - POSTGRES_USER=commafeed
23 - POSTGRES_PASSWORD=${DB_PASSWORD}
24 - POSTGRES_DB=commafeed
25 volumes:
26 - postgres-data:/var/lib/postgresql/data
27 networks:
28 - commafeed-network
29 restart: unless-stopped
30
31volumes:
32 postgres-data:
33
34networks:
35 commafeed-network:
36 driver: bridge

.env Template

.env
1# CommaFeed
2DB_PASSWORD=secure_commafeed_password

Usage Notes

  1. 1Web UI at http://localhost:8082
  2. 2Default login: admin / admin
  3. 3Google Reader-like interface
  4. 4Keyboard shortcuts
  5. 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 file
2cat > docker-compose.yml << 'EOF'
3services:
4 commafeed:
5 image: athou/commafeed:latest
6 container_name: commafeed
7 environment:
8 - CF_DATABASE_DRIVERCLASS=org.postgresql.Driver
9 - CF_DATABASE_URL=jdbc:postgresql://db/commafeed
10 - CF_DATABASE_USER=commafeed
11 - CF_DATABASE_PASSWORD=${DB_PASSWORD}
12 ports:
13 - "8082:8082"
14 depends_on:
15 - db
16 networks:
17 - commafeed-network
18 restart: unless-stopped
19
20 db:
21 image: postgres:15-alpine
22 container_name: commafeed-db
23 environment:
24 - POSTGRES_USER=commafeed
25 - POSTGRES_PASSWORD=${DB_PASSWORD}
26 - POSTGRES_DB=commafeed
27 volumes:
28 - postgres-data:/var/lib/postgresql/data
29 networks:
30 - commafeed-network
31 restart: unless-stopped
32
33volumes:
34 postgres-data:
35
36networks:
37 commafeed-network:
38 driver: bridge
39EOF
40
41# 2. Create the .env file
42cat > .env << 'EOF'
43# CommaFeed
44DB_PASSWORD=secure_commafeed_password
45EOF
46
47# 3. Start the services
48docker compose up -d
49
50# 4. View logs
51docker compose logs -f

One-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 | bash

Troubleshooting

  • 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

Ad Space