Try   HackMD

自幹 RSS Reader 服務嗎?

架構規劃 (2020/08/11)

原本有的用 斜體 表示,新增的用 粗體 表示
已經關閉的就劃刪除線

這是我的 VPS 目前的樣子,不是你的R

  • 原有的 Apache Server
    • WordPress Blog
    • Polr ShortUrl
    • NextCloud
    • Reverse Proxy
      • Docker Compose
        • Miniflux ( 主要對外 )
          • PostgreSQL ( Miniflux 需要 )
        • RSSHub ( 躲在 Compose 裡面,能與 Miniflux 連上線就好 )
          • browserless ( 爬蟲 )
          • Redis ( 資料庫快取 )

系統環境 : Debian 10.5

:no_entry: 警告
雖然說 Ubuntu 同樣基於 Debian 上,但是 Debian 比起 Ubuntu 不方便許多
光是 /sbin 底下的路徑不知道為啥近期的版本 ( 10.4,10.5待確認,這應該是 bug ) 都沒有 PATH 到,真奇怪 :/

建議入門先玩 Ubuntu

:warning: 注意

以下內容以 Debian 環境為主

安裝 Docker 與 Compose

Docker 本體

必要驗證

## 安裝驗證軟體包用的必要軟體 sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common ## 匯入 Doceker 官方的 GPG Key ## 驗證用 curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - ## 測試一下是否可以驗證 sudo apt-key fingerprint 0EBFCD88

如果驗證成功,應該會跑以下訊息:

pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb) <docker@docker.com> sub 4096R/F273FCD8 2017-02-22

新增軟體來源以及安裝

## 新增 Docker 官方來源 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable" ## 安裝 Docker sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io

輸入 docker 有跑出東西就好

Docker Compose

sudo apt install docker-compose

撰寫 Docker Compose 以及設定 Docker

設定 Docker

設定永久 Volumes

## Radis 存放 sudo docker volume create redis-data ## PostgreSQL 資料庫存放 sudo docker volume create miniflux-db ## 確認一下有沒有設定好 sudo docker volume ls

設定永久 Networks

## 新增 Networks 讓容器內的應用互通 ## 也是為了未來擴充性考量 ## -d bridge 可以不用加,預設就是 bridge sudo docker network create -d bridge rss-out ## 看一下是否有新增好了 suod docker network ls

開始撰寫 docker-compose.yml

version: '3' services: rsshub: image: diygod/rsshub restart: always environment: NODE_ENV: production CACHE_TYPE: redis REDIS_URL: 'redis://redis:6379/' PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' depends_on: - redis - browserless networks: - rss miniflux: image: miniflux/miniflux:latest ## 這邊可以改對外,可以改成 80 以外的數字 ## 也一定要改,不然 Apache Proxy 會有問題 ports: - "80:8080" depends_on: - db environment: - DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable # 這邊對應 db 的環境變數修改 - RUN_MIGRATIONS=1 # 初次使用需要以下三個,否則無法使用 - CREATE_ADMIN=1 - ADMIN_USERNAME=admin - ADMIN_PASSWORD=test123 networks: - rss db: image: postgres:latest environment: - POSTGRES_USER=miniflux # 資料庫帳號,改好記得改上面 - POSTGRES_PASSWORD=secret # 資料庫密碼,改好記得改上面 - POSTGRES_DB=miniflux volumes: - miniflux-db:/var/lib/postgresql/data networks: - rss browserless: image: browserless/chrome restart: always networks: - rss redis: image: redis:alpine restart: always volumes: - redis-data:/data networks: - rss volumes: redis-data: external: true miniflux-db: external: true networks: rss: external: name: rss-out

設定 Apache Reverse Proxy

啟用模組

## 基本上要啟用這些 sudo a2enmod mod_proxy proxy_http ## 如果你要 HTTP/2 的話下面這個也要啟用 sudo a2enmod proxy_http2 ## 記得重啟 Apache sudo systemctl restart apache2

Virtual Host 設定檔

類似這樣:

## rss-proxy.conf <VirtualHost *:80> ServerName rss.nesquate.tw ProxyRequests off # 不關掉會被別人當 Proxy ServerAdmin webmaster@localhost ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Proxy *> Order allow,deny Allow from all </Proxy> ProxyPass / http://127.0.0.1:4000/ ProxyPassReverse / http://127.0.0.1:4000/ ProxyPreserveHost on </VirtualHost>

之後下指令:

## 啟用該 Virtual Host sudo a2ensite rss-proxy.conf ## 重啟 Apache sudo systemctl restart apache2

初始化 Miniflux

  1. 第一次 sudo docker-compose up -d
    • 初始化資料庫,此時 Miniflux 無法使用
  2. 第一次 sudo docker-compose down
  3. 第二次 sudo docker-compose up -d
    • 初始化 Miniflux ,建立管理員帳號
  4. 初始化後,移除 docker-compose.yml 內的 CREATE_ADMINADMIN_USERNAMEADMIN_PASSWORD
    • 安全考量
  5. 第三次 sudo docker-compose up -d
    • 設定完成

額外設定 - SSL

參考 Polr Setup 當中的 SSL 設定環節

如何填寫 RSS 地址

參考 這裡
只是 rsshub.app 要變成 rsshub:1200 這樣

連結蒐集

Apache Reverse Proxy

Miniflux

RSSHub

Docker