v2

minifluxApache-2.0活跃维护

极简且带明确取舍的 RSS 阅读器,用 Go 编写,后端依赖 PostgreSQL,支持 Atom、RSS、JSON Feed 和 OPML 导入导出,适合自建轻量订阅服务。

Minimalist and opinionated feed reader

2.3.5发布于 2026-11-02 04:29 UTC9,912star +13 / 7 天967fork同步于 2026-11-10 17:30 UTC

怎么上手

由 README 提炼,执行前请确认
docker pull miniflux/miniflux
硬件要求按 README 说明

README 未说明具体硬件要求,仅提到即使订阅数百个源也只占用几 MB 内存和极少 CPU;需自备 PostgreSQL 数据库。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

极简且固执己见的 RSS 阅读器,单二进制部署,自带隐私清洗与全文搜索

极简且带明确取舍的 RSS 阅读器,用 Go 编写,后端依赖 PostgreSQL,支持 Atom、RSS、JSON Feed 和 OPML 导入导出,适合自建轻量订阅服务。

核心能力

  • 支持 Atom、RSS、JSON Feed 并导入导出 OPML
  • 用 Postgres 提供全文搜索,按分类和书签组织文章
  • 自动去除像素追踪与 utm 等追踪参数
  • 内置 Readability 抓取原文并支持 CSS 选择器自定义规则
  • 提供 25+ 第三方集成、Webhook 与 REST API

容易踩的坑

只能配合 PostgreSQL 使用,不支持其他数据库;需自行准备并配置数据库连接;YouTube 时长抓取和 YouTube API 默认关闭,需手动开启。

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本2.3.5
  1. 2.3.5Miniflux 2.3.5最新正式版2026-11-02 · 2026-11-02 04:29 UTC

    New features

    • Added OpenID Connect admin role mapping: set OAUTH2_ADMIN_GROUP and OAUTH2_GROUP_CLAIM to grant or revoke the admin role at login based on the user's groups. The group claim is read from the user info response or the ID token, and OAUTH2_ADDITIONAL_SCOPES can request extra scopes from the provider.
    • Allowed WebAuthn/Passkeys as the only login method when DISABLE_LOCAL_AUTH is enabled. Register at least one passkey while another authentication method is still available before turning off local authentication.
    • Added a force parameter to the feed refresh API endpoint (PUT /v1/feeds/{id}/refresh?force=true) to bypass the HTTP cache and reprocess existing entries, matching the forced refresh in the web UI. The Go client gains ForceRefreshFeed.
    • Rejected invalid CSS selectors when saving rewrite and scraper rules, instead of silently ignoring them.
    • Moved the username, password, OAuth2 account linking, and passkey settings to a dedicated Authentication page under Settings.

    Performance improvements

    • Stopped creating database web sessions for anonymous visitors, crawlers, media proxy requests, and other public pages that don't need one. Logged-out language and theme preferences are now kept in a cookie, and anonymous sessions are removed after 24 hours, which keeps the web_sessions table from growing with thousands of unused rows.

    Security

    • Required the current password before setting a new one on the Authentication page.
    • Signed out other sessions when a password is changed, from the web UI, the API, or the -reset-password command. The current session gets a new identifier so a copied cookie stops working.
    • Prevented administrators from editing their own account through the user management page, which bypassed the current password check.
    • Restricted feed cookies to the feed's own website, so they are no longer sent to third-party hosts when scraping articles, fetching icons, or discovering feeds.
    • Blocked 6to4 and IPv4-compatible IPv6 addresses that could bypass the server-side request forgery filter.
    • Stopped caching shared entry pages in public caches and removed the CSRF token from them.
    • Took the client IP from the right side of X-Forwarded-For, skipping addresses in TRUSTED_REVERSE_PROXY_NETWORKS, so clients can no longer spoof the IP recorded in logs and sessions. If you chain several reverse proxies (e.g. Cloudflare in front of nginx), add the networks of every proxy to TRUSTED_REVERSE_PROXY_NETWORKS.
    • Stopped logging malformed Google Reader authentication tokens.
    • Hardened the GitHub Actions workflows and added provenance and SBOM attestations to Docker images.

    Bug fixes

    • Fixed the Fever API toggling the starred state when saving or unsaving an entry that was already in that state.
    • Fixed the Fever API marking all entries as read, including newer ones, while ignoring the before timestamp.
    • Fixed the Fever API returning an arbitrary set of entries for some item requests, which could cause clients to miss entries.
    • Fixed a crash in the Google Reader API caused by an unknown stream type.
    • Matched category titles case-insensitively, fixing "category not found" errors with Google Reader labels and duplicate categories created by OPML imports.
    • Parsed RFC 3339 dates with a lower-case t or z.
    • Accepted JSON feeds that start with a UTF-8 byte order mark.
    • Validated the username format when renaming a user, not only at creation.

    Localization

    • Updated Polish (pl_PL) translations.
    • Fixed raw translation keys shown instead of messages for invalid usernames, invalid proxy URLs, unparsable HTML pages, and the tag entry count.

    Documentation

    • Reviewed the man page for accuracy and readability, documenting option combinations checked at startup, media proxy modes, and systemd socket activation.

    Dependencies

    • Updated several Go modules and GitHub Actions dependencies.

  2. 2.3.4Miniflux 2.3.42026-10-20 · 2026-10-20 01:08 UTC
    查看更新说明

    New features

    • Added Gotify push notification support.
    • Added Steam scraper rules.
    • Added validation with helpful error messages when saving rewrite rules.

    Performance improvements

    • Reduced database storage used by enclosure and entry indexes.
    • Reduced memory used by internal data structures.

    Security

    • Blocked reserved IP address ranges to further protect against server-side request forgery.
    • Hardened WebAuthn redirects against open-redirect attacks, including redirect URLs containing surrounding whitespace.
    • Prevented per-feed proxy URLs from bypassing private-network restrictions by default. Set FETCHER_ALLOW_PRIVATE_FEED_PROXY=1 to retain access to private per-feed proxies.
    • Enforced DISABLE_LOCAL_AUTH for API password authentication and password changes; API clients must use an API key when local authentication is disabled.
    • Rejected Google Reader authentication tokens when no password is configured.
    • Restricted embedded iframe URLs to web schemes and tightened YouTube hostname validation.

    Bug fixes

    • Added timeouts to the ACME challenge listener.
    • Fixed response compression negotiation to consistently prefer the server's configured encoding order.
    • Improved Karakeep errors when saving an entry fails by reporting the HTTP status.
    • Returned to the first unread page when marking entries as read leaves the current feed or category page empty.
    • Restored support for proxies configured through HTTP_PROXY or HTTPS_PROXY, including across redirects.
    • Returned a validation error instead of crashing when creating or importing feeds for users without a category.
    • Preserved the requested redirect after passkey login.
    • Increased the Google Reader item-ID limit to 10,000.
    • Returned a bad-request response instead of crashing on POST requests to static asset paths.
    • Improved accessibility by adding descriptive names to documentation links.
    • Improved error logging and responses for failed database existence checks and shared-entry lookups.

    Localization

    • Updated Polish (pl_PL) translations.

    Documentation

    • Clarified the Unix socket permissions used with LISTEN_ADDR.

    Dependencies

    • Updated several Go modules and GitHub Actions dependencies.

    As always, thank you to all contributors who helped improve Miniflux in this release.

  3. 2.3.3Miniflux 2.3.32026-07-24 · 2026-07-24 22:41 UTC
    查看更新说明

    New features

    • Feed and entry language detection

      • Miniflux now reads the language declared by feeds and entries and stores it on both feeds and entries. Supported sources are the RSS <language> and <dc:language> elements, xml:lang on Atom 1.0 and 0.3 documents, dc:language in RDF/RSS 1.0 feeds, and the language field of JSON Feed.
      • Entries without their own language now inherit the language declared by the feed.
      • Article titles and content are rendered with a matching lang attribute, which improves screen reader pronunciation, hyphenation, and browser translation prompts.
      • The language field is exposed through the API and the Go client for both feeds and entries.
    • Other additions

      • Feed discovery now finds the feeds offered by GitHub pages.
      • TLS certificates are reloaded when the process receives SIGHUP, so renewed certificates can be picked up without a restart.
      • The browser favicon is now served as SVG for a sharper icon on high-density displays.
      • Compressed responses are negotiated with a much more standard-compliant Accept-Encoding parser, including quality values and wildcards.

    Performance improvements

    • Long entry and feed lists render noticeably faster: off-screen rows no longer cost layout and paint work on initial render.
    • Reduced memory allocations when stripping and truncating HTML, roughly halving the time spent on tag-heavy content.
    • Compression writers are now pooled instead of being allocated for every compressed response, which significantly reduces garbage collection pressure on busy instances.

    Security

    • Fixed an information disclosure issue where any authenticated user could read favicons belonging to other users' feeds through GET /v1/icons/{iconID}.
    • Unix sockets are now created with 0660 permissions instead of being world-writable. Deployments where the reverse proxy runs as a different user now require that user to share a group with the Miniflux process.
    • Fixed an issue where limit=0 in entry queries bypassed the 1000-entry cap and returned every matching entry.
    • Feed-declared language values are now validated before being stored, keeping oversized values and control characters out of the database and the rendered HTML.

    Bug fixes

    • Fixed a crash caused by concurrent writes to the translation catalog when several requests used a not-yet-loaded language.
    • Fixed a race condition during template rendering that could return a page translated in another user's language.
    • Fixed a panic during graceful shutdown when feed refresh jobs were queued while workers were draining.
    • Fixed a division-by-zero crash with the entry_frequency scheduler when SCHEDULER_ENTRY_FREQUENCY_FACTOR was set to 0; the value must now be greater than or equal to 1.
    • Fixed an upgrade failure of migration 127 on databases containing entries whose feed no longer exists.
    • MEDIA_PROXY_RESOURCE_TYPES and TRUSTED_REVERSE_PROXY_NETWORKS now accept spaces and trailing commas in their list values instead of refusing to start.
    • Fixed "Mark all as read" on the unread page, which marked entries from categories hidden from the global unread list.
    • Fixed a category deletion check that could remove all of a user's categories.
    • Fixed pagination in the Entries API: the total count is now correct when the requested offset is past the last entry.
    • Fixed the no_media_player option being ignored when creating a feed.
    • A feed proxy URL can now be cleared once it has been configured.
    • Fixed entry_sorting_order validation on user modification, which returned a server error instead of a validation error for unsupported values.
    • Fixed the fetch_via_proxy checkbox disappearing when the subscription page was re-rendered after an error.
    • Fixed the remove_tables rewrite rule reordering article content.
    • Fixed plain text content_text and summary values from JSON Feed being mangled when they containe
  4. 2.3.2Miniflux 2.3.22026-06-27 · 2026-06-27 00:39 UTC
    查看更新说明

    New features

    • Improved full-text search

      • Search queries now use PostgreSQL's websearch_to_tsquery, allowing quoted phrases, OR operators, and negation (-term) in search expressions.
    • API improvements

      • Added GET /v1/entries/ids to efficiently retrieve paginated entry IDs.
      • Added support for updating the starred status of multiple entries through PUT /v1/entries.
      • API clients can now filter entries by tags.
      • The Go client now exposes additional feed fields (description, icon, next_check_at, notification settings, no_media_player, etc.) and supports the new tag filter.
    • Atom feed improvements

      • When an Atom entry id contains an HTTP URL, it is now used as the entry URL when no dedicated link is available.

    Performance improvements

    • Improved full-text search performance by caching compiled regular expressions used by filtering rules.
    • Reduced database work when computing category statistics.
    • Improved browser caching of static assets.
    • Reduced template rendering overhead by precomputing static icon URLs.

    Security

    • Prevent username enumeration through login timing differences.
    • PostgreSQL installations running in FIPS mode are now fully supported by replacing MD5 with SHA-256 for enclosure uniqueness. This change raises the minimum supported PostgreSQL version to 11.

    Bug fixes

    • Fixed validation of per-feed entry filter rules in the web interface.
    • SOCKS proxy URLs can once again be configured for individual feeds.
    • Fixed enclosure URL proxying consistency across API endpoints.
    • Fixed several API handlers that incorrectly returned 404 Not Found or 400 Bad Request instead of proper server errors.
    • Fixed inconsistent handling of invalid category filters in the Entries API.
    • Fixed user lookup edge cases that could result in nil pointer dereferences.
    • Fixed enclosure lookup to correctly scope results by user.
    • Fixed the Google Reader Quick Add endpoint to honor the configured HTTP user agent.
    • Fixed refresh-all keyboard shortcut (R) to correctly display the success notification.
    • Fixed localization formatting issues affecting several languages.
    • Fixed request builder state leaking during feed discovery.
    • Improved accessibility by correcting an aria-labelledby issue.

    Localization

    • Updated German (de_DE) translations.
    • Updated Galician (gl_ES) translations.

    Documentation

    • Clarified the units for POLLING_FREQUENCY.
    • Improved documentation for TRUSTED_REVERSE_PROXY_NETWORKS.

    Dependencies

    • Updated several Go modules and GitHub Actions dependencies.
  5. 2.3.1Miniflux 2.3.12026-05-29 · 2026-05-29 21:06 UTC
    查看更新说明

    Security

    • Fixed an OAuth account binding vulnerability that could allow users to associate arbitrary OAuth identities with their account.
    • Fixed an open redirect vulnerability caused by backslashes in relative redirect URLs.
    • Fixed a potential SQL injection vulnerability in dynamically generated ORDER BY clauses.
    • Hardened metrics endpoint authentication by using constant-time credential comparisons.

    Bug Fixes

    • Fixed an issue where the stdlib cross-origin protection middleware could block legitimate requests in certain self-hosted environments. The middleware has been reverted.

    Improvements

    • Added Korean language support.
    • Improved HTML truncation performance and reduced memory allocations.
    • Optimized feed discovery, subscription detection, date parsing, and tag filtering.
    • Simplified and refactored several storage and query-building components for better maintainability.

    Dependencies

    Updated several dependencies, including:

    • github.com/go-webauthn/webauthn 0.17.4
    • golang.org/x/crypto 0.52.0
    • golang.org/x/image 0.41.0
    • golang.org/x/net 0.55.0

    As always, thank you to all contributors who helped improve Miniflux in this release.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    Miniflux 2

    Miniflux is a minimalist and opinionated feed reader. It's simple, fast, lightweight and super easy to install.

    Official website: https://miniflux.app

    Features

    Feed Reader

    • Supported feed formats: Atom 0.3/1.0, RSS 1.0/2.0, and JSON Feed 1.0/1.1.
    • OPML file import/export and URL import.
    • Supports multiple attachments (podcasts, videos, music, and images enclosures).
    • Plays videos from YouTube directly inside Miniflux.
    • Organizes articles using categories and bookmarks.
    • Share individual articles publicly.
    • Fetches website icons (favicons).
    • Saves articles to third-party services.
    • Provides full-text search (powered by Postgres).
    • Available in 20 languages: Portuguese (Brazilian), Chinese (Simplified and Traditional), Dutch, English (US), Finnish, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Polish, Romanian, Russian, Taiwanese POJ, Ukrainian, Spanish, and Turkish.

    Privacy and Security

    • Removes pixel trackers.
    • Strips tracking parameters from URLs (e.g., utm_source, utm_medium, utm_campaign, fbclid, etc.).
    • Retrieves original links when feeds are sourced from FeedBurner.
    • Opens external links with attributes rel="noopener noreferrer" referrerpolicy="no-referrer" for improved security.
    • Implements the HTTP header Referrer-Policy: no-referrer to prevent referrer leakage.
    • Provides a media proxy to avoid tracking and resolve mixed content warnings when using HTTPS.
    • Plays YouTube videos via the privacy-focused domain youtube-nocookie.com.
    • Supports alternative YouTube video players such as Invidious.
    • Blocks external JavaScript to prevent tracking and enhance security.
    • Sanitizes external content before rendering it.
    • Enforces a Content Security and a Trusted Types Policy to only application JavaScript and blocks inline scripts and styles.

    Bot Protection Bypass Mechanisms

    • Optionally disable HTTP/2 to mitigate fingerprinting.
    • Allows configuration of a custom user agent.
    • Supports adding custom cookies for specific use cases.
    • Enables the use of proxies for enhanced privacy or bypassing restrictions.

    Content Manipulation

    • Fetches the original article and extracts only the relevant content using a local Readability parser.
    • Allows custom scraper rules based on CSS selectors.
    • Supports custom rewriting rules for content manipulation.
    • Provides a regex filter to include or exclude articles based on specific patterns.
    • Optionally permits self-signed or invalid certificates (disabled by default).
    • Scrapes YouTube's website to retrieve video duration as read time or uses the YouTube API (disabled by default).

    User Interface

    • Optimized stylesheet for readability.
    • Responsive design that adapts seamlessly to desktop, tablet, and mobile devices.
    • Minimalistic and distraction-free user interface.
    • No requirement to download an app from Apple App Store or Google Play Store.
    • Can be added directly to the home screen for quick access.
    • Supports a wide range of keyboard shortcuts for efficient navigation.
    • Optional touch gesture support for navigation on mobile devices.
    • Custom stylesheets and JavaScript to personalize the user interface to your preferences.
    • Themes:
      • Light (Sans-Serif)
      • Light (Serif)
      • Dark (Sans-Serif)
      • Dark (Serif)
      • System (Sans-Serif) – Automatically switches between Dark and Light themes based on system preferences.
      • System (Serif)

    Integrations

    Authentication

    • Local username and password.
    • Passkeys (WebAuthn).
    • Google (OAuth2).
    • Generic OpenID Connect.
    • Reverse-Proxy authentication.

    Technical Stuff

    • Written in Go (Golang).
    • Single binary compiled statically without dependency.
    • Works only with PostgreSQL.
    • Does not use any ORM or any complicated frameworks.
    • Uses modern vanilla JavaScript only when necessary.
    • All static files are bundled into the application binary using the Go embed package.
    • Supports the Systemd sd_notify protocol for process monitoring.
    • Configures HTTPS automatically with Let's Encrypt.
    • Allows the use of custom SSL certificates.
    • Supports HTTP/2 when TLS is enabled.
    • Updates feeds in the background using an internal scheduler or a traditional cron job.
    • Uses native lazy loading for images and iframes.
    • Compatible only with modern browsers.
    • Adheres to the Twelve-Factor App methodology.
    • Provides official Debian/RPM packages and pre-built binaries.
    • Publishes a Docker image to Docker Hub, GitHub Registry, and Quay.io Registry, with ARM and RISC-V architecture support.
    • Uses a limited amount of third-party go dependencies
    • Has a comprehensive testsuite, with both unit tests and integration tests.
    • Only uses a couple of MB of memory and a negligible amount of CPU, even with several hundreds of feeds.
    • Respects/sends Last-Modified, If-Modified-Since, If-None-Match, Cache-Control, Expires and ETags headers, and has a default polling interval of 1h.

    Documentation

    The Miniflux documentation is available here: https://miniflux.app/docs/ (Man page)

    Screenshots

    Default theme:

    Default theme

    Dark theme when using keyboard navigation:

    Dark theme

    Credits