使用Docker部署Miniflux RSS Reader

RSS閱讀器原本使用FreshRSS搭配Fluent-Reader,使用一陣子發現FreshRSS對RSS Feed很嚴格(相容性很差),常常遇到有些RSS怎麼加都加不進去,或是RSS突然掛掉抓不到。再者因為是用別人的主機,主機出問題或不維護更新也很麻煩。

看過其他線上RSS閱讀器,從安裝、設定、閱讀介面等各方面考量,改用Miniflux應該是最佳選擇,而且使用Docker部署Miniflux是最簡單的方式。

前置作業

安裝設定

建立一個資料夾,到該資料夾建立一個檔案名稱為docker-compose.yml,內容如下:

services:
  miniflux:
    image: miniflux/miniflux:latest
    container_name: miniflux
    restart: always
    ports:
      - "8080:8080"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://admin:secret@db/miniflux?sslmode=disable
      - RUN_MIGRATIONS=1
      - BASE_URL=https://reader.race.tw/    //設定網域
      - TZ=Asia/Taipei    //設定時區
      - DATABASE_MAX_CONNS=50    //資料庫最大連線數
      - DATABASE_MIN_CONNS=5    //資料庫最小連線數
      - MEDIA_PROXY_MODE=all    //代理外部媒體避免出現混合內容警告
      - OAUTH2_PROVIDER=google    //開啟Google第三方登入
      - OAUTH2_CLIENT_ID=YOUR_CLIENT_ID    //輸入Google OAUTH2的用戶端編號
      - OAUTH2_CLIENT_SECRET=YOUR_CLIENT_SECRET    //輸入Google OAUTH2的用戶端密鑰
      -	OAUTH2_REDIRECT_URL=https://reader.race.tw/oauth2/google/callback    //輸入Google OAUTH2已授權的重新導向URI

  tunnel:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared-tunnel 
    restart: always
    command: tunnel run
    environment:
      - TUNNEL_TOKEN=YOUR_TOKEN    //輸入Cloudflare Tunnel的TOKEN

  db:
    image: postgres:latest
    container_name: postgresql
    restart: always
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=secret
      - POSTGRES_DB=miniflux
    volumes:
      - miniflux-db:/var/lib/postgresql/data

volumes:
  miniflux-db:

命令列輸入:

docker-compose up -d

開始自動部署,完成後啟動服務。

建立管理員帳號:

docker-compose exec miniflux /usr/bin/miniflux -create-admin

瀏覽器輸入http://127.0.0.1:8080或網址,即可開啟Miniflux網頁。

閱讀器設定

因為試過Android第三方軟體,效果都不滿意,所以維持電腦用網頁,手機用PWA瀏覽。Miniflux官網也有提供免費試用15天(Miniflux Hosting),可體驗一下是否合乎需求。

如果某個網站RSS Feed確認是有問題的,或是有保護機制的(例如阻擋機器人),可以使用Feedburner燒一個RSS Feed給Miniflux使用。

I recently found out that feedburner still exists.

You can go to feedburner.google.com (Google account needed) and add “problematic” feeds, i.e. feeds behind Cloudflare.

Feedburner then acts like a proxy that strips off CF’s bot protection stuff.


參考文章: