MCPSERV.CLUB
FreshRSS

FreshRSS

Self-Hosted

Self-hosted RSS & Atom aggregator

Active(100)
12.9kstars
0views
Updated 14 hours ago
FreshRSS screenshot 1
1 / 3

Overview

Discover what makes FreshRSS powerful

FreshRSS is a **lightweight, self‑hosted RSS/Atom feed aggregator** written in PHP that targets developers who need a flexible, extensible back‑end for content ingestion and delivery. From the technical standpoint, it functions as a *content pipeline*: feeds are fetched (polling or via WebSub push), parsed into a normalized internal format, stored in a relational database, and then exposed through both a web UI and a RESTful API. The architecture is deliberately modular so that each stage—fetcher, parser, storage, renderer—can be swapped or extended without touching the core.

Language & Frameworks

Database

Caching & Queueing

Web Sub

Overview

FreshRSS is a lightweight, self‑hosted RSS/Atom feed aggregator written in PHP that targets developers who need a flexible, extensible back‑end for content ingestion and delivery. From the technical standpoint, it functions as a content pipeline: feeds are fetched (polling or via WebSub push), parsed into a normalized internal format, stored in a relational database, and then exposed through both a web UI and a RESTful API. The architecture is deliberately modular so that each stage—fetcher, parser, storage, renderer—can be swapped or extended without touching the core.

Technical Stack & Architecture

  • Language & Frameworks: Pure PHP 8+ with a lightweight MVC structure. The codebase follows PSR‑4 autoloading, making it compatible with Composer dependencies and IDE navigation. No heavy framework like Symfony or Laravel is used; instead, FreshRSS implements its own routing and dependency injection container.
  • Database: Supports MySQL/MariaDB, PostgreSQL, SQLite, and even plain files (for very small deployments). The schema is normalized but also uses full‑text indexes for fast search across article titles and content.
  • Caching & Queueing: Optional Redis or Memcached integration for caching parsed feeds and speeding up the API. Background jobs (feed fetching, cleaning) are scheduled via cron or a lightweight job queue built into the application.
  • Web Sub: Implements the PubSubHubbub/WebSub protocol to receive instant push notifications, reducing polling overhead. This is a first‑class feature rather than an add‑on.
  • Internationalization: Supports 20+ languages out of the box, using gettext‑style .po files that developers can extend.

Core Capabilities & APIs

  • REST API: Exposes CRUD operations for feeds, articles, tags, and user settings. The API is documented with OpenAPI/Swagger‑style endpoints and supports OAuth2 for third‑party clients.
  • Command‑Line Interface: A PHP CLI tool lets you trigger feed updates, export OPML, or run maintenance tasks programmatically.
  • Web Scraping: Built‑in XPath and JSON scraping allows developers to create virtual feeds from arbitrary web pages, useful for sites without RSS support.
  • Tagging & Querying: Articles can be tagged, and complex queries (e.g., “unread AND tag:tech”) are supported both via the UI and API.
  • Export/Import: Full OPML support for migrations, as well as JSON export of article snapshots.

Deployment & Infrastructure

FreshRSS is designed for self‑hosting on modest hardware—the README cites a Raspberry Pi 1 running under one second for 150 feeds. It requires a standard LAMP stack (Apache 2.4, PHP 8+, a supported database) but also runs on Nginx or Caddy with minimal configuration. Docker images are available, and the project ships a docker-compose.yml that wires together PHP‑FPM, MySQL, and Redis. For high‑scale deployments (50k+ feeds, 1M+ articles), the database layer can be sharded or replicated; the application itself is stateless aside from session data, making horizontal scaling straightforward.

Integration & Extensibility

  • Plugin System: FreshRSS exposes a hook API (similar to WordPress) where developers can register callbacks for events like onArticleFetched, onFeedUpdated, or beforeRender. Plugins are distributed as Composer packages and can declare dependencies on other plugins.
  • Webhooks: Users can register outbound webhooks that fire on article creation or feed update, enabling integration with external services (e.g., Slack, custom dashboards).
  • Theme & UI Customization: The front‑end is built with Twig templates and SCSS. Developers can create custom themes or override existing components without modifying core files.
  • OAuth & OpenID Connect: The authentication layer supports external identity providers, making it easy to integrate with corporate SSO or social login services.

Developer Experience

FreshRSS places a strong emphasis on clean documentation. The developer guide covers architecture, coding standards (PSR‑12), testing practices, and contribution workflows. The community is active on GitHub, with issues labeled “help wanted” and a Codespaces template for quick experimentation. The license (GNU AGPL 3) ensures that any modifications remain open source, which encourages collaborative plugin development.

Use Cases

  • Personal Knowledge Base: Small teams or solo developers can host FreshRSS to aggregate blogs, podcasts, and documentation sites into a single searchable interface.
  • Enterprise Content Hub: Organizations can deploy FreshRSS behind their intranet, using LDAP/OpenID Connect for authentication and Redis caching to serve thousands of users.
  • Data‑Driven Projects: Researchers can scrape niche websites, store the content in FreshRSS, and then consume it via the API for natural language processing pipelines.
  • IoT & Edge Deployments: The lightweight footprint allows FreshRSS to run on Raspberry Pi or similar edge devices, providing offline-friendly feed reading for remote locations.

Advantages Over Alternatives

  • Performance & Scalability: Benchmarks show FreshRSS handles >1 M articles with minimal latency, outperforming many commercial readers that rely on heavy JavaScript front‑ends.
  • Full Control & Privacy: Being self‑hosted, all data stays on the developer’s infrastructure; no third‑party tracking or ads.
  • Extensibility: The hook and plugin system is more granular than many competitors, allowing deep

Open SourceReady to get started?

Join the community and start self-hosting FreshRSS today