使用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: unless-stopped
    ports:
      - "8888:8080"
    depends_on:
      - db
    environment:
      - DATABASE_URL=postgres://admin:secret@db/miniflux?sslmode=disable
      - HTTP_CLIENT_USER_AGENT=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36    #加入User Agent避免被網站阻擋
      - RUN_MIGRATIONS=1
      - BASE_URL=https://your-domain.com    #設定網址
      - TZ=Asia/Taipei    #設定時區
      - OAUTH2_PROVIDER=google    #開啟Google第三方登入
      - OAUTH2_CLIENT_ID=YOUR_CLIENT_ID    #輸入Google OAUTH2的用戶端編號
      - OAUTH2_CLIENT_SECRET=YOUR_CLIENT_SECRET    #輸入Google OAUTH2的用戶端密鑰
      -	OAUTH2_REDIRECT_URL=https://your-domain.com/oauth2/google/callback    #輸入Google OAUTH2已授權的重新導向URI

  tunnel:
    image: cloudflare/cloudflared:latest
    container_name: cloudflared-tunnel
    restart: unless-stopped
    command: tunnel --no-autoupdate run
    environment:
      - TUNNEL_TOKEN=YOUR_TOKEN    #輸入Cloudflare Tunnel的TOKEN

  db:
    image: postgres:16    #不建議用最新版本,怕以後遇到相容性問題無法啟動
    container_name: postgresql
    restart: unless-stopped
    environment:
      - TZ=Asia/Taipei
      - 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:8888或網址,即可開啟Miniflux網頁。

閱讀器設定

建議優先更改主題CSS:
https://github.com/rootknight/Miniflux-Theme-Reeder

因為試過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.

版本更新

開啟命令列到docker-compose.yml資料夾輸入命令:

docker-compose pull
docker-compose down
docker-compose up -d

參考文章: