RSS Fever API 服務搭建避坑指南(FreshRSS + Fluent Reader, 2024年最新可用教程)

紫苏薄荷發表於2024-03-25

1. 適用人群

  1. 需要透過 RSS 主動獲取來自訂閱源的資訊,並且希望在多個裝置上實現訂閱源共享;
  2. 擁有一臺雲伺服器,並安裝了 Linux 系統;
  3. 能夠訪問谷歌。

注意,這不是一篇非常詳細的教程,對於教程中涉及的程式(如 FreshRSS),官方和使用者分別提供了充足的配置資料和經驗分享,我會避免直接搬運它們,但會提供資料的 URL 。我想觀眾跟我一樣,配置自建 RSS 伺服器的初衷是為了更直接地獲取 “我想得到的” 資訊,作為一個資訊聚合工具,花費太多時間、踩太多坑沒有必要,希望本文能夠給你節約時間。

2. 最短路徑(推薦)

非常推薦一款優秀的線上 RSS 閱讀器:QiReader,它是免費的(郵件傳送 PDF 進階服務除外):

https://www.qireader.com
https://www.qireader.com.cn

作為一份避坑指南,直接使用 QiReader 是最快捷的方案,
這是一款漸進式Web應用程式(PWA),它能夠在多端滿足上述需求,安裝步驟非常簡單。

2.1 關於為什麼我不使用 TTRSS (Tiny Tiny RSS, Awesome TTRSS)

我在使用 Fluent Reader 1.1.4 (文章釋出時的最新版本)時,透過 Fever API 連線,報錯日誌如下:

附兩個 issues 的連結:

https://github.com/HenryQW/Awesome-TTRSS/issues/442
https://github.com/DigitalDJ/tinytinyrss-fever-plugin/issues/30

目前我沒能解決這個問題,如果你能解決,推薦使用 TTRSS 並移步至對應教程。同時,期待你的經驗分享。

3. 在伺服器上安裝 FreshRSS

完整的 docker 和 FreshRSS 的安裝步驟請移步官方文件:

https://github.com/FreshRSS/FreshRSS/blob/edge/Docker/README.md

以下步驟節選自官網文件,也是我自己搭建的步驟:

  1. 安裝 Docker
apt install docker-compose
  1. 快速啟動
docker run -d --restart unless-stopped --log-opt max-size=10m \
  -p 8080:80 \
  -e TZ=Asia/Shanghai \
  -e 'CRON_MIN=1,31' \
  -v freshrss_data:/var/www/FreshRSS/data \
  -v freshrss_extensions:/var/www/FreshRSS/extensions \
  --name freshrss \
  freshrss/freshrss

可能需要修改的引數:

  • -p 對映在宿主機上的埠,也就是外部訪問的埠,預設為 8080
  • -e TX=? 時區 ( 預設是 UTC,中國時間可以設定為 Asia/Shanghai,可以安裝後在設定中修改)
  • -e 'CRON_MIN=?' 計劃任務的引數,用來配置重新整理訂閱源(Refresh Feeds)的時間間隔,預設是1,31,表示在一個小時的第1分鐘和第31分鐘重新整理(即間隔半個小時)。

由此,容器成功啟動,轉到 伺服器IP:8080 進行網頁端的 FreshRSS 閱讀器配置。

3.1 問題:新增來自 RSSHub 的訂閱源,訂閱失敗(超時)

比較可能的一種情況是你的伺服器無法訪問谷歌,可以參照 RSSHub 文件中的 “公共例項”:

https://docs.rsshub.app/zh/guide/instances

把訂閱源連結中的 rsshub.app 替換成其他 URL,其中的一些 URL 是無需訪問谷歌(對,谷歌)的。

你可能需要逐個試試。

4. 使能 Fever API

在 FreshRSS 網頁端中,滑鼠懸浮到右上角齒輪,找到 “管理” 一欄的 “認證” ,
勾選 “允許 API 訪問”,提交。

接著,在左側選單欄 “賬戶” 下找到 “API 管理”,在此,你需要輸入一個用於訪問該 API 的密碼,它與 FreshRSS 的使用者登入密碼是獨立的。

提交密碼後,點選下方的連結,即可在彈出頁面中檢視 Fever API 的地址。

接下來,在 RSS 閱讀器(以 Fluent Reader 為例)中,開啟 “設定” - “服務”,選擇型別為 Fever API,在 “端點” 中填入上述的 Fever API Address,密碼為剛才設定的 API 密碼,即可完成配置。

問題:4.1 API 連線成功,但 Fluent Reader 沒有按照分組匯入訂閱源

這是一個小問題,如下圖點選匯入分組即可。

5. 配置 FreshRSS 定時重新整理

若你按照 3 中的步驟完成了 Docker 和 FreshRSS 的安裝,並正確配置了CRON_MIN引數,通常來說是已經實現了定時抓取的。如果你發現沒有自動重新整理(我遇到了這個情況),則可能需要手動配置。

5.1 確保容器中的 cron 服務處於執行狀態*

這是一個隱藏大坑,你可能完成了後續配置,但到最後才發現 cron 服務其實是沒有執行的,請速進入 FreshRSS 容器確認其狀態:

docker ps

找到 FreshRSS 的容器 id,進入容器,接下來的步驟預設都在容器中完成:

docker exec -it :CONTAINER_ID /bin/bash

在容器的 Debian 12 系統中,你應該這樣查詢 cron 的狀態

service cron status

若返回的不是 cron is running.,重啟 cron 服務

service cron restart

5.2 透過 cron 配置定時自動重新整理計劃(非必要)

如果你確認 cron 服務正常執行,但仍然沒有自動重新整理,那可能需要重新配置,
FreshRSS 提供了配置自動重新整理 Feeds 的步驟,著急可以不看

https://freshrss.github.io/FreshRSS/en/users/09_refreshing_feeds.html#automatic-update-with-cron

可以如法炮製一條 cron 表示式 :

*/20 * * * * php /var/www/FreshRSS/app/actualize_script.php >> /var/log/cron.log 2>&1

它表示每 20 分鐘執行一次後面的命令,為了確保路徑無誤,你可以先嚐試執行一次命令:

php /var/www/FreshRSS/app/actualize_script.php

但是,不要把這條表示式直接輸入到 bash 中執行,正確的做法是編輯 crontab 檔案,將它插入到檔案尾

crontab -e

我在執行這條命令後,以提示沒有安裝任何文字編輯器告終。
如果你也一樣,請安裝一個 nano 或者 vim。這時配置映象能讓下載速度更快:

https://mirrors.tuna.tsinghua.edu.cn/help/debian/

如果你不打算配置映象,那麼安裝一個 nano 會更快

apt install nano

重新編輯 crontab 檔案,選擇 nano 作為編輯器,將剛剛的表示式插入到該檔案,並儲存

crontab -e

若是第一次修改該檔案,可能需要命名,這裡保持預設命名即可。
檢視該 cron 任務是否被正確新增:

crontab -l

若回顯了你插入的 crontab 表示式,即說明該計劃任務配置完成。你可以在上述cron.log檔案中檢視執行的日誌。

相關文章