FreshRSS 完整教學 2026:16K 星開源 RSS 閱讀器自架指南,Docker 部署、Google Reader API 手機同步、XPath 抓沒有 RSS 的網站

FreshRSS 是一套以 PHP 撰寫、AGPL-3.0 授權的自架 RSS 閱讀器,GitHub 上約 1.6 萬顆星、2012 年活躍至今,最新穩定版 1.30.0,官方 Docker 映像一條指令就能跑,連 Raspberry Pi 1 都能撐 150 個來源、2.2 萬篇文章。本文從 Docker Compose 部署、CRON_MIN 自動抓取、反向代理與 HTTPS、多使用者帳號,一路講到 Google Reader API 手機同步(Capy Reader、Read You、NetNewsWire、Reeder Classic)、XPath 網頁抓取、WebSub 即時推播與擴充套件,並附上 FreshRSS vs Miniflux vs Inoreader 的比較表與備份更新流程。

  • Dennis
  • 10 分鐘閱讀
FreshRSS 完整教學 2026:16K 星開源 RSS 閱讀器自架指南,Docker 部署、Google Reader API 手機同步、XPath 抓沒有 RSS 的網站

FreshRSS 是一套以 PHP 撰寫、AGPL-3.0 授權的自架 RSS 閱讀器:它把散落各站的 RSS/Atom 摘要集中到自己的伺服器上,支援多使用者、手機 App 同步(Google Reader API 與 Fever API)、內建 XPath 網頁抓取,官方 Docker 映像一行指令就能啟動,GitHub 上約 1.6 萬顆星、專案從 2012 年活躍至今。

為什麼 2026 年還要重新學 RSS?

RSS 這個 1999 年誕生的協定,這幾年反而變成「反演算法」的實用工具:它不排序、不推薦、不插入廣告,只是把你有訂閱的內容按時間排好。電子前哨基金會(EFF)在 2026 年就寫過專文,主張 RSS 是拿回資訊主導權最便宜的手段之一。

但同時,平台也在關門。Reddit 在 2026 年 9 月 30 日宣布,站上 RSS 摘要將於 11 月 13 日終止、公開 API 於 2027 年 3 月全面關閉(完整時間表與社群反應可看這篇:Reddit 終止 RSS 與公開 API 全解析)。這件事的關鍵啟示是:RSS 協定不會死,但你依賴的「別人家的 feed」隨時會消失。

把閱讀器拿回自己手上,就變成一件很划算的事——來源清單、閱讀紀錄、未讀狀態全部在自家伺服器,平台改政策時你只需要改一個來源設定,而不是整套工作流重寫。

FreshRSS 是什麼?核心規格一次看

項目內容
專案FreshRSS/FreshRSS
GitHub 星數約 16,187 顆(2026-09-30 查詢)
授權AGPL-3.0(自由軟體,可自架、可商用)
最新穩定版1.30.0(2026-09-09 發布,約每 2~3 個月一版)
語言/技術PHP 8.1+(官方也提供 Docker 映像,免自己裝 PHP)
資料庫SQLite/PostgreSQL 10+/MariaDB 10.6+/MySQL 8.0+
網頁伺服器Apache 2.4+(官方推薦)、nginx、lighttpd
介面語言20+ 種,繁體中文(zh-TW)翻譯進度 97%
多使用者支援,含匿名閱讀模式、OpenID Connect 登入
手機同步Google Reader API(功能最完整)/Fever API(相容性廣但較受限)
特殊能力內建 XPath 網頁抓取、JSON 來源、WebSub 即時推播、CLI
硬體需求極低:官方稱連 Raspberry Pi 1 都能跑 150 個來源、22,000 篇文章,回應時間低於 1 秒

如果你是從 Feedly、Inoreader 這類商業服務搬過來,FreshRSS 的功能覆蓋率其實很高;比較表放在下一節。

FreshRSS vs Miniflux vs Inoreader

自架派與 SaaS 派最大的差別不在功能,而在「誰持有你的訂閱清單」。以下是 2026-09-30 查證的現況:

比較項目FreshRSSMinifluxInoreader(商業 SaaS)
授權AGPL-3.0Apache-2.0專有
GitHub 星數約 16,187約 9,761—
技術棧PHP 8.1+Go(單一執行檔)雲端服務
最新版1.30.0(2026-09)2.3.3(2026-07)持續更新
自架可(Docker/手動/YunoHost)可(Docker/二進位)不可
多使用者支援支援帳號制
手機 App 生態Google Reader API/Fever,App 選擇多Google Reader API/Fever官方 App
網頁抓取(無 RSS 網站)內建 XPath + JSON 來源需搭配第三方(如 RSSHub)Pro 方案內建 Web feeds
費用自架成本(一台 VPS 或 NAS)自架成本免費版 150 個來源;Pro $7.50/月(年繳,月繳 $9.99)
中文介面zh-TW 97%社群翻譯有

簡單的選型原則:

  • 要功能最完整、擴充套件最多、介面可玩性高 → FreshRSS
  • 要極簡、省資源、只要一個執行檔 → Miniflux
  • 完全不想維運、願意付月費 → Inoreader(或 Feedly 等同類服務)

FreshRSS 與 Miniflux 都支援同一組 API,所以手機 App 是可以沿用的,未來想換後端也不必換 App。

Docker Compose 部署(推薦做法)

FreshRSS 官方提供 Docker 映像 freshrss/freshrss(Docker Hub)與 ghcr.io/freshrss/freshrss(GitHub Container Registry),標籤分 :latest(最新穩定版)、:edge(滾動更新)與 :x.y.z(指定版本)。

官方檔案 Docker/freshrss/docker-compose.yml 的骨架如下(這裡把時區換成 Asia/Taipei、補上對外埠與環境變數):

volumes:
  data:
  extensions:

services:
  freshrss:
    image: freshrss/freshrss:latest
    container_name: freshrss
    hostname: freshrss
    restart: unless-stopped
    logging:
      options:
        max-size: 10m
    ports:
      - "8080:80"
    volumes:
      - data:/var/www/FreshRSS/data
      - extensions:/var/www/FreshRSS/extensions
    environment:
      TZ: Asia/Taipei          # 伺服器時區,預設 UTC
      CRON_MIN: '3,33'         # 每小時的第 3、33 分鐘自動抓取來源
      TRUSTED_PROXY: 172.16.0.0/12 192.168.0.0/16

啟動:

docker compose up -d
docker compose logs -f freshrss

幾個關鍵環境變數的意義:

  • TZ:影響文章時間顯示與 cron 判斷,台灣請設 Asia/Taipei
  • CRON_MIN:容器內建排程,'3,33' 代表每小時抓兩次;尖峰時段抓太兇會被來源站擋,想更保守可設 '17'(每小時一次)
  • TRUSTED_PROXY:放在反向代理後面時,讓 FreshRSS 正確讀到訪客真實 IP(否則 log 只會看到代理的 IP)
  • INTERNAL_HOST_ALLOWLIST:預設會擋掉容器對內網的請求,若你要讓 FreshRSS 去抓同一台主機上的 RSS-Bridge 或 RSSHub(例如 rsshub:1200),要明確加入白名單

如果你只想先試跑,官方也提供 docker run 一行版:

docker run -d --restart unless-stopped --log-opt max-size=10m \
  -p 8080:80 \
  -e TZ=Asia/Taipei \
  -e CRON_MIN=1,31 \
  -v freshrss_data:/var/www/FreshRSS/data \
  -v freshrss_extensions:/var/www/FreshRSS/extensions \
  --name freshrss \
  freshrss/freshrss

啟動後打開 http://你的主機:8080,就會進入安裝精靈,選擇資料庫(單人自用建議 SQLite,省一個容器)並建立管理員帳號。

用 CLI 安裝(無瀏覽器環境)

不想開瀏覽器,也可以用容器內的 CLI 完成安裝與建帳號:

docker exec --user www-data freshrss cli/do-install.php --default-user freshrss
docker exec --user www-data freshrss cli/create-user.php --user freshrss --password 'YOUR_STRONG_PASSWORD'
docker exec --user www-data freshrss cli/list-users.php

注意:若使用以 Alpine 為基礎的映像標籤,--user www-data 要換成 --user apache。另外官方 compose 內建的 healthcheck 用的也是 CLI:cli/health.php。

首次設定:介面中文化與來源匯入

  1. 登入後到 Settings → Display,把語言切成「正體中文(zh-TW)」,介面翻譯覆蓋率約 97%。
  2. 到 訂閱管理 新增來源:直接貼上網站首頁或 feed 網址,FreshRSS 會自動偵測。
  3. 從舊服務搬家:在 Feedly/Inoreader/其他閱讀器匯出 OPML 檔,FreshRSS 支援整批匯入與匯出,來源清單不會被鎖死。

台灣中文來源實測可用(2026-09-30 以 curl 驗證回應 200 且為 XML):

  • iThome:https://www.ithome.com.tw/rss
  • 科技新報:https://technews.tw/feed
  • 泛科學:https://pansci.asia/feed
  • INSIDE(FeedBurner 代管):https://feeds.feedburner.com/inside

其餘媒體的 feed 路徑時有變動,建議以各站公告為準;找不到 RSS 的網站,就看下一節的網頁抓取。

手機同步:Google Reader API 與 App 選擇

FreshRSS 支援兩套 API:Google Reader API(功能最完整,官方建議)與 Fever API(相容舊 App,功能與效率較受限)。啟用步驟:

  1. 到 設定 → 認證,勾選「允許 API 存取(手機 App 需要)」
  2. 到 設定 → 個人資料,設定 API 密碼(與登入密碼分開,萬一洩漏影響範圍較小)
  3. 點 API 密碼旁的 /api/ 連結測試設定;若出現 Bad Request! 通常是伺服器不接受 %2F,Apache 要開 AllowEncodedSlashes On,nginx 則檢查 fastcgi_split_path_info

官方維護的 App 相容清單裡,常用的幾套:

App平台授權API特色
Capy ReaderAndroid開源GReader同步快、支援 Podcast 與資料夾管理
Read YouAndroid開源GReaderMaterial You 介面,輕巧
FeedMeAndroid免費GReader老牌、穩定、支援 Podcast
RSS GuardWindows/Linux/macOS開源GReader跨平台桌面版,功能齊全
NewsboatLinux/macOS開源GReader終端機派,鍵盤操作最快
Reeder ClassiciOS/macOS商業GReaderApple 生態圈體驗最佳之一
NetNewsWireiOS/macOS開源GReader免費、原生感強
Unread / Fiery FeedsiOS商業Fever支援 Fever API 的閱讀體驗派

若手機要從外網連回自架服務,記得搭配 HTTPS 與反向代理,站上既有的 Caddy 完整教學 2026(自動 HTTPS)與 Cloudflare Tunnel 完整教學 2026(不開 port 也能對外)都是現成做法。

進階功能一:XPath 抓沒有 RSS 的網站

FreshRSS 內建網頁抓取引擎,可在「訂閱管理」把來源類型改成:

  • HTML + XPath(Web scraping):自己指定標題、連結、內容的 XPath
  • JSON Feed:符合 jsonfeed.org 規格的來源
  • JSON(Dotted paths):用 data.items、meta.title、links[1] 這種點號路徑取值,語法近似 JavaScript 的物件存取

這代表沒有官方 RSS 的網站,也能變成 feed,而且是在你自己的伺服器上轉換,不必把來源交給第三方服務。社群也整理了可共用的 XPath 設定範例集,可直接匯入使用。

進階功能二:WebSub 即時推播

一般 RSS 閱讀器靠「定時去抓」更新,延遲等於抓取間隔。WebSub(舊稱 PubSubHubbub)則是推播式:來源站有新內容時,透過 hub 主動通知你的 FreshRSS,幾乎即時收到。FreshRSS 原生支援,條件是:

  • 實例必須有公開可達的網址(base_url 設定正確),且 ./p/api/ 需對外開放
  • data/config.php 內應出現 'pubsubhubbub_enabled' => true
  • 支援 WebSub 的來源包含 WordPress(含外掛)、Blogger、Medium、Friendica 等

想自架的部落格也能反過來受益:在 CMS 掛上 WebSub 外掛,讀者的閱讀器就能在你發文當下收到通知,不必等下一次抓取。

進階功能三:擴充套件

FreshRSS 的擴充套件放在安裝目錄的 ./extensions(Docker 版對應 freshrss_extensions volume),官方社群整理了相當完整的清單,幾個實用的:

擴充套件功能
Readable / Article Full Text用 Mozilla Readability 抓回全文,解決「只給摘要」的來源
Image Cache把來源圖片快取到自家或 Cloudflare,避免原站關圖或追蹤
Youtube / Invidious在閱讀器內直接看 YouTube 影片,Invidious 版本還可去追蹤
ArticleSummary / Feed Digest串接 OpenAI 相容的 LLM API,自動產生文章摘要
Rate limiter限制對同一網站的抓取頻率,避免被來源站封鎖
RSS-Bridge透過 RSS-Bridge 偵測並轉換沒有 feed 的網址
Copy 2 Clipboard一鍵複製目前可見文章的所有連結
Share To Linkwarden把文章直接送到自架的 Linkwarden 書籤服務
TranslateTitlesCN用 DeepLX 或 Google 翻譯把外語標題轉成中文

要注意的是擴充套件多半由社群維護,升級 FreshRSS 主版本前建議先看相容性;官方另有一支 check.translation.php 之類的 CLI 可用來檢查環境。

安全性、備份與更新

安全設定:

  • 手動安裝時只暴露 ./p/ 目錄,./data/ 內含所有個人資料(訂閱、閱讀紀錄、密碼雜湊),絕不可公開
  • 一律走 HTTPS;放在反向代理後面時設定 TRUSTED_PROXY,並確認 proxy 有傳 X-Forwarded-*
  • 預設的 SSRF 防護(不要在 INTERNAL_HOST_ALLOWLIST 填 *)能避免 FreshRSS 被拿來探測內網
  • API 密碼與主密碼分開設定,並啟用失敗登入延遲

備份:Docker 版只要備份 data volume(內含 SQLite 資料庫、每位使用者的 config.php 與 log*.txt)與 extensions volume;再用介面的 OPML 匯出留一份來源清單當人肉保險。

# 匯出資料 volume 內容(同時保留權限)
docker run --rm -v freshrss_data:/src -v $(pwd):/backup alpine \
  tar czf /backup/freshrss-data-$(date +%F).tar.gz -C /src .

更新:

docker compose pull && docker compose up -d

FreshRSS 每 2~3 個月發一版,重大版本升級前先備份;若要嘗鮮功能可用 :edge 標籤,但正式環境建議留在 :latest。

常見問題

症狀原因與解法
手機 App 連不上,回 Bad Request!Apache 未開 AllowEncodedSlashes On;nginx 檢查 fastcgi_split_path_info
一直顯示 FAIL getallheaders!Apache 缺 mod_setenvif 或 mod_rewrite(Debian/Ubuntu:a2enmod rewrite)
來源時間排序怪怪的右側時間是來源宣告的發佈時間,不是 FreshRSS 收到文章的時間,也不作為排序依據
想抓內網的 RSS-Bridge / RSSHub需在 INTERNAL_HOST_ALLOWLIST 加入主機名稱或 CIDR
資源佔用如何?極低:官方稱 Raspberry Pi 1 跑 150 個來源、2.2 萬篇文章,回應時間低於 1 秒

同場加映:自架服務的整合劇本

FreshRSS 放進既有的自架架構後,常見的組合是:

結語

FreshRSS 的價值不在功能清單有多長,而在它把「資訊入口」的主導權還給你:來源自己加、資料自己存、App 自己選、政策變動時不用求平台。在平台紛紛收緊 RSS 與 API 的 2026 年,這種「自帶基礎設施」的選擇,比任何單一功能都更值得投資。

資料來源

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友