使用Docker部署Miniflux RSS Reader
RSS閱讀器原本使用FreshRSS搭配Fluent-Reader,使用一陣子發現FreshRSS對RSS Feed很嚴格(相容性很差),常常遇到有些RSS怎麼加都加不進去,或是RSS突然掛掉抓不到。再者因為是用別人的主機,主機出問題或不維護更新也很麻煩。
看過其他線上RSS閱讀器,從安裝、設定、閱讀介面等各方面考量,改用Miniflux應該是最佳選擇,而且使用Docker部署Miniflux是最簡單的方式。
前置作業
- 安裝Docker環境:Docker 學習筆記(二) — 安裝 Docker
- 本機對外連線使用Cloudflare Tunnel:使用Cloudflare Tunnel取代直接接觸公網
- 開啟Google第三方登入:[教學] Google OAuth 2.0申請與使用指南
- Miniflux Installation with Docker
- Miniflux Configuration Parameters
安裝設定
建立一個資料夾,到該資料夾建立一個檔案名稱為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網頁。
閱讀器設定
- 建議優先更改主題CSS: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.
參考文章: