你目前在用的 RSS 服務還滿意嗎,趕緊進來手把手教你自建一個私有的 RSS 服務器!

  • 2019 年 12 月 17 日
  • 筆記

9012 年了,別的小朋友們服務器上面跑着各式各樣的東西:博客、雲盤、監控腳本……再看看我們那台閑(bai)置(piao)很久的阿里雲 Server,裏面的 Git 竟然還是 1.8 的上古版本。?‍♂️ 不如把那台服務器拿出來,部署一個屬於自己的 RSS 服務器,甚至可以跟同學們一起用呢~

RSS

首先我們來說一說 RSS。RSS 的全稱是 Really Simple Syndication(簡易信息聚合),它是一種消息來源的格式規範,網站可以按照這種格式規範提供文章的標題、摘要、全文等信息給訂閱用戶,用戶可以通過訂閱不同網站 RSS 鏈接的方式將不同的信息源進行聚合,在一個工具里閱讀這些內容。

對於第一次接觸 RSS 的同學,推薦大家閱讀:高效獲取信息,你需要這份 RSS 入門指南,進行掃盲。

市面上有非常多的 RSS 聚合服務,來幫助我們統一管理、訂閱、更新、篩選 RSS 源推送給我們的更新信息,避免我們被海量的文章淹沒,也能保證我們多個設備上 RSS 的閱讀進度一致。Feedly、Inoreader 等等都是非常不錯的 RSS 服務,但是它們的免費版本都有着一定的限制,有時候無法滿足我們的全部功能需求,而動輒一個月數十刀的訂閱費用又讓人望而卻步。不慌,開源的 RSS 服務:Tiny Tiny RSS 可以滿足我們 RSS 訂閱的全部需求!

Tiny Tiny RSS 的搭建

使用 Feedly 主題的 Tiny Tiny RSS 服務端

Tiny Tiny RSS 是一個非常優秀的開源免費 RSS 服務引擎,可以直接部署在我們自己的服務器上面,藉助於 Docker 優秀方便的容器技術和 Let』s Encrypt 異常簡單的 SSL 證書籤署機械人 certbot,我們幾分鐘之內就可以部署上線屬於我們自己的 RSS 服務,運行在我們可控的服務器上,環境穩定,刷新及時,並且完全免費。?(當然,除了服務器需要一定的費用。)

在容器、HTTPS 證書自動簽署和虛擬化技術極度發達的今天,整個部署過程非常方便簡單。我接下來只利用 iPad 進行講解演示我們的部署過程。請大家坐好,我們立刻開始。

準備工作

在開始之前,首先我們需要準備一個位於公網的服務器,以及一個可以通過 SSH 連接到服務器上的本地設備。這裡我使用我同(bai)學(piao)的已經備案的阿里雲服務器作為運行 Tiny Tiny RSS 的服務器,並使用 iPad 和 Blink Shell(一個支持 SSH 協議的 iOS 終端 App)作為我的操作設備。Blink Shell 是 iPad 上面最好用的 SSH/Mosh 工具,推薦大家使用。我們在 Blink Shell 中配置好服務器私鑰,通過 SSH 登錄服務器。

利用 Blink Shell 登錄至服務器

利用 Docker 部署 Tiny Tiny RSS

安裝 Docker

Docker 是非常優秀的虛擬化容器,藉助於 Docker 我們可以方便的部署 Tiny Tiny RSS,首先我們在服務器上安裝 Docker 本體。在服務器上面執行下面命令來安裝 Docker:

curl -fsSL https://get.docker.com/ | sh

然後啟動 Docker 服務:

sudo systemctl start docker

然後,我們檢查一下 Docker 是否啟動成功。我們執行命令:sudo systemctl status docker

檢查 Docker 服務狀態

看到如上的輸出,說明我們 Docker 服務啟動成功。

參考資料:Get Docker Engine – Community for CentOS | Docker Documentation

安裝 docker-compose

接下來我們安裝 docker-compose:一個管理和啟動多個 Docker 容器的工具。由於 Tiny Tiny RSS 依賴有 PostgreSQL 的數據庫服務以及 mercury_fulltext 的全文抓取服務等等,這些服務我們都藉助於 Docker 部署,因此利用 docker-compose 就會大大降低我們的部署難度。

我們繼續,在服務器上面執行下面的命令來安裝 docker-compose

curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

之後給予安裝好的 docker-compose 可執行權限:

chmod +x /usr/local/bin/docker-compose

參考資料:Install Docker Compose | Docker Documentation

最後我們運行 docker-compose --version 來檢查安裝是否成功。如果有如下輸出,說明我們的 docker-compose 安裝成功:

檢查 docker-compose 安裝情況

安裝 Tiny Tiny RSS 及其周邊服務

準備工作已經全部完成,接下來我們下載由 Awesome-TTRSS 配置的 Tiny Tiny RSS 服務的 docker-compose 配置文件:

# 創建 ttrss 目錄並進入  mkdir ttrss && cd ttrss    # 利用 curl 下載 ttrss 的 docker-compose 配置文件至服務器  curl -fLo docker-compose.yml https://github.com/HenryQW/Awesome-TTRSS/raw/master/docker-compose.yml

修改 docker-compose.yml 裏面的內容:

修改 docker-compose 配置文件

  • 在配置文件的第 7 行和第 23 行,將 PostgreSQL 數據庫的默認密碼進行修改。暴露在公網的數據庫使用默認密碼非常危險。
  • 在配置文件的第 18 行,將 Tiny Tiny RSS 服務的部署網址修改。比如我的部署網址是 https://ttrss.tenkeyseven.com/
    • 注意,如果你的部署 URL 包含端口(比如默認部署端口為 181 端口),那麼這裡的 URL 也需要加上端口號,格式為 {網址}:{端口}
    • 不過不必擔心,如果你這裡的 URL 配置不正確,那麼訪問 Tiny Tiny RSS 的時候,Tiny Tiny RSS 會提醒你修改這裡的值為正確的 URL,按照提醒進行配置即可

之後,我們保存配置文件,啟動 Tiny Tiny RSS 服務。在剛剛的 ttrss 目錄下執行:

docker-compose up -d

等待腳本執行完成,如果一切沒有問題,那麼接下來輸入 docker ps,我們應該看到類似下面的結果:

查看正在運行的 Docker 容器

上面內容表示我們開啟了四個 Docker 容器,分別是:

  • Tiny Tiny RSS 本身,監聽端口為 0.0.0.0:181 -> 80,同時暴露給外網
  • PostgreSQL 數據庫,僅供內部使用
  • Mercury 全文抓取服務,僅供內部使用
  • OpenCC 簡體、繁體中文轉換服務,僅供內部使用

如果發現問題,修改 docker-compose 配置文件後,需要執行下面的命令重啟 Docker 容器們:

# 關閉 Docker 容器們  docker-compose down    # 刪除已停止的 Docker 容器  docker-compose rm    # ……  # 修改 docker-compose 配置文件  # ……    # 再次開啟 Docker 服務  docker-compose up -d

安裝 Nginx 作為 Docker 容器的反向代理

事實上,到上一步,如果我們訪問 {服務器 IP}:181,應該可以直接看到 Tiny Tiny RSS 的 Web 前端,但是 Tiny Tiny RSS 並不能直接配置 SSL 證書,也就沒法添加 HTTPS 支持。我們利用 Nginx 作為反向代理服務器,即可方便的給 Tiny Tiny RSS 單獨綁定一個我們希望的域名,並利用 Let』s Encrypt 來部署 HTTPS。

安裝 Nginx

首先我們來安裝 Nginx,以 CentOS 為例,我們直接執行下面命令即可:

sudo yum install nginx

之後開啟 Nginx 服務:

sudo systemctl start nginx

檢查 Nginx 是否啟動成功:

sudo systemctl status nginx

檢查 Nginx 運行狀態

簽署 SSL 證書,部署 HTTPS

之後,我們利用 Let』s Encrypt 提供的 certbot 直接為 Nginx 配置 SSL 證書。首先,我們執行下面的命令安裝 certbot

sudo yum install certbot python2-certbot-nginx

然後運行 certbot 來簽署 SSL 證書並自動配置 Nginx 服務:

sudo certbot --nginx

參考資料:Certbot | Nginx on CentOS/RHEL 7

在這裡,certbot 會要求我們輸入我們希望簽署 SSL 證書的域名,我們選擇為 Tiny Tiny RSS 分配的域名(比如我的就是 ttrss.tenkeyseven.com)即可。另外,如果 certbot 詢問是否需要將訪問該網址的全部流量重定向至 HTTPS,那麼選擇「是」即可。我們等待腳本執行簽署任務完畢,然後重啟 Nginx 服務:

sudo systemctl restart nginx

此時我們如果直接訪問這一域名,應該就可以看到帶有 HTTPS 的 Nginx 默認網站:

HTTPS 配置成功的 Nginx 默認網站

接下來,我們修改 Nginx 的配置文件,配置 Nginx 反向代理,將訪問 https://ttrss.tenkeyseven.com 的請求指向我們剛剛部署好的 Tiny Tiny RSS 服務,對服務器來說,也就是 127.0.0.1:181 這一地址。(如果你沒有更改 Tiny Tiny RSS 的端口號的話。)

Nginx 的配置文件位於 /etc/nginx/nginx.conf,我們打開這一文件:

Nginx 配置文件

  • http 項下,server 項前定義 upstream 服務: upstream ttrssdev { server 127.0.0.1:181; keepalive 64; }

Nginx upstream 服務聲明

  • 在剛剛 certbot 為我們生成好的響應域名 server 項下,注釋掉第一行定義 root 的內容,並將 location / 項修改為: location / { proxy_redirect off; proxy_pass http://ttrssdev; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Ssl on; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Frame-Options SAMEORIGIN; client_max_body_size 100m; client_body_buffer_size 128k; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; }

Nginx 配置文件:反向代理配置

這樣,我們再次執行 sudo systemctl restart nginx 重啟 Nginx 服務,一切順利的話,我們就可以通過我們剛剛簽署 SSL 證書的域名訪問我們部署好的 Tiny Tiny RSS 服務了!鼓掌 ?

Tiny Tiny RSS 的默認管理員賬戶密碼是 admin 和 password,請在第一時間進行修改。

配置 Tiny Tiny RSS

Tiny Tiny RSS 配置、主題

如果上面步驟沒有問題的話,我們在服務器上面所部署的 Tiny Tiny RSS 本身就已經包含了:

  • Mercury 全文提取服務(默認未開啟)
  • OpenCC 繁簡自動轉換服務(默認未開啟)
  • Fever 格式輸出插件(默認已開啟,用來和 Reeder 等客戶端進行連接)
  • 包括 Feedly、RSSHub 在內的多款主題
  • 等等……

我們不需要多餘的配置,開箱即可使用上面的主題和插件,根本不需要操心其他服務的部署和安裝。我們登錄自己的 Tiny Tiny RSS,在右上角「設置→ 插件」中即可啟用上述插件,在「設置 → 主題」處就可以更改我們部署的 Tiny Tiny RSS 所用的主題。這些插件和主題在 如何搭建屬於自己的 RSS 服務,高效精準獲取信息 中已經介紹了使用方法,這裡我就不再贅述了。

如果有同學對上面的配置還有問題,請直接參考 Awesome TTRSS 的官方文檔:? Awesome TTRSS | 插件

小結

Tiny Tiny RSS 的配置到這裡就基本結束了,我相信你通過上面的配置一定已經在自己的服務器上部署成功了 Tiny Tiny RSS 服務,並為它添加了域名和 HTTPS 的支持。另外,Tiny Tiny RSS 還自帶了賬號系統,可以邀請其他志同道合的朋友們一起使用我們自己部署的 Tiny Tiny RSS。感謝閱讀。

? 關聯閱讀:

  • ? Awesome TTRSS
  • Docker 的入門「指北」
  • 如何搭建屬於自己的 RSS 服務,高效精準獲取信息

本文轉載自:「Spencer's Blog」,原文:https://url.cn/5oFe33h,版權歸原作者所有。歡迎投稿,投稿郵箱: [email protected]