只能配合 PostgreSQL 使用,不支持其他数据库;需自行准备并配置数据库连接;YouTube 时长抓取和 YouTube API 默认关闭,需手动开启。
docker pull miniflux/minifluxREADME 未说明具体硬件要求,仅提到即使订阅数百个源也只占用几 MB 内存和极少 CPU;需自备 PostgreSQL 数据库。
极简且固执己见的 RSS 阅读器,单二进制部署,自带隐私清洗与全文搜索
极简且带明确取舍的 RSS 阅读器,用 Go 编写,后端依赖 PostgreSQL,支持 Atom、RSS、JSON Feed 和 OPML 导入导出,适合自建轻量订阅服务。
核心能力
- 支持 Atom、RSS、JSON Feed 并导入导出 OPML
- 用 Postgres 提供全文搜索,按分类和书签组织文章
- 自动去除像素追踪与 utm 等追踪参数
- 内置 Readability 抓取原文并支持 CSS 选择器自定义规则
- 提供 25+ 第三方集成、Webhook 与 REST API
容易踩的坑
- 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_GROUPandOAUTH2_GROUP_CLAIMto 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, andOAUTH2_ADDITIONAL_SCOPEScan request extra scopes from the provider. - Allowed WebAuthn/Passkeys as the only login method when
DISABLE_LOCAL_AUTHis enabled. Register at least one passkey while another authentication method is still available before turning off local authentication. - Added a
forceparameter 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 gainsForceRefreshFeed. - 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_sessionstable 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-passwordcommand. 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 inTRUSTED_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 toTRUSTED_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
beforetimestamp. - 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
torz. - 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.
- Added OpenID Connect admin role mapping: set
- 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=1to retain access to private per-feed proxies. - Enforced
DISABLE_LOCAL_AUTHfor 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_PROXYorHTTPS_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.
- 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:langon Atom 1.0 and 0.3 documents,dc:languagein RDF/RSS 1.0 feeds, and thelanguagefield 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
langattribute, which improves screen reader pronunciation, hyphenation, and browser translation prompts. - The
languagefield is exposed through the API and the Go client for both feeds and entries.
- Miniflux now reads the language declared by feeds and entries and stores it on both feeds and entries. Supported sources are the RSS
-
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-Encodingparser, 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
0660permissions 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=0in 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_frequencyscheduler whenSCHEDULER_ENTRY_FREQUENCY_FACTORwas set to0; the value must now be greater than or equal to1. - Fixed an upgrade failure of migration 127 on databases containing entries whose feed no longer exists.
MEDIA_PROXY_RESOURCE_TYPESandTRUSTED_REVERSE_PROXY_NETWORKSnow 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_playeroption being ignored when creating a feed. - A feed proxy URL can now be cleared once it has been configured.
- Fixed
entry_sorting_ordervalidation on user modification, which returned a server error instead of a validation error for unsupported values. - Fixed the
fetch_via_proxycheckbox disappearing when the subscription page was re-rendered after an error. - Fixed the
remove_tablesrewrite rule reordering article content. - Fixed plain text
content_textandsummaryvalues from JSON Feed being mangled when they containe
-
- 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,ORoperators, and negation (-term) in search expressions.
- Search queries now use PostgreSQL's
-
API improvements
- Added
GET /v1/entries/idsto 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.
- Added
-
Atom feed improvements
- When an Atom entry
idcontains an HTTP URL, it is now used as the entry URL when no dedicated link is available.
- When an Atom entry
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 Foundor400 Bad Requestinstead 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-labelledbyissue.
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.
-
- 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 BYclauses. - 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/webauthn0.17.4golang.org/x/crypto0.52.0golang.org/x/image0.41.0golang.org/x/net0.55.0
As always, thank you to all contributors who helped improve Miniflux in this release.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
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-referrerto 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
- 25+ integrations with third-party services: Apprise, Betula, Cubox, Discord, Espial, Gotify, Instapaper, LinkAce, Linkding, LinkTaco, LinkWarden, Matrix, Notion, Ntfy, Nunux Keeper, Pinboard, Pushover, RainDrop, Readeck, Readwise Reader, RssBridge, Shaarli, Shiori, Slack, Telegram, Wallabag, etc.
- Bookmarklet for subscribing to websites directly from any web browser.
- Webhooks for real-time notifications or custom integrations.
- Compatibility with existing mobile applications using the Fever or Google Reader API.
- REST API with client libraries available in Go and Python.
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
embedpackage. - Supports the Systemd
sd_notifyprotocol 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)
- Opinionated?
- Features
- Requirements
- Installation Instructions
- Upgrading to a New Version
- Configuration
- Command Line Usage
- User Interface Usage
- Keyboard Shortcuts
- Integration with External Services
- Rewrite and Scraper Rules
- API Reference
- Development
- Internationalization
- Frequently Asked Questions
Screenshots
Default theme:

Dark theme when using keyboard navigation:

Credits
- Authors: Frédéric Guillot - List of contributors
- Distributed under Apache 2.0 License