最近群裡面熱鬧許多,有些原因是不少人都開到終身免費的 Oracle Cloud 虛擬機
開始想著在虛擬機裡面安裝各種應用,像是之前說到的 Outline,還有皮樂大大寫的 v2ray + MTProxy
今天來講講 RSS 閱讀器的搭建,之前有介紹過 Miniflux 的安裝,不過搭建起來比較麻煩
對於新手來說步驟有點多,安裝過程只要有一個步驟錯誤就常常不知所措
所以還是來個 Docker 快速版本吧,也順便把超好用萬物皆可 RSS 化的 RSSHub 一起打包進去~
Docker Community 穩定版安裝
首先 SSH 連到伺服器裡面,先從安裝 Docker 跟所需軟體開始
# 先完整更新一下系統
$ sudo apt update && sudo apt full-upgrade -y
# 安裝一下等下會需要用到的軟體
$ sudo apt install nano curl wget libcap2-bin -y
接下來使用官方 Get Docker 自動安裝的腳本
$ curl -fsSL https://get.docker.com/ | sh
以上一條指令輸入完,稍等片刻就自動完成 Docker 安裝
安裝完 Docker 以後,我們設定一下 Docker 權限,將自己帳號新增到 Docker 群組裡面
# 將你帳號加入 docker 群組
$ sudo usermod -aG docker $USER
# 退出
$ exit
完成以後,再登入回去機器中即可生效(有些機器可能要重開機才會生效)
# 驗證
$ docker version
如果正確設定好權限,以上指令輸入後應該能同時看見 Client 跟 Server 資訊(如下)
Client: Docker Engine - Community
Version: 19.03.7
API version: 1.40
Go version: go1.12.17
Git commit: 7141c199a2
Built: Wed Mar 4 01:22:41 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.7
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: 7141c199a2
Built: Wed Mar 4 01:21:15 2020
OS/Arch: linux/amd64
Experimental: false
# 最後安裝 docker-compose
$ sudo apt install docker-compose
安裝 Miniflux + RSSHub
這部分我們開始來安裝 Miniflux + RSSHub,我把這兩個服務寫在一個 docker compose 檔案裡面
只要拷貝貼上馬上就能跑起來
# 先新增一個 Miniflux 的目錄
$ mkdir ~/miniflux && cd ~/miniflux
# 新建一個設定檔
$ nano docker-compose.yml
拷貝以下全部內容,然後貼上保存
version: "3"
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
restart: unless-stopped
ports:
- "8888:8080"
depends_on:
- db
- rsshub
environment:
- DATABASE_URL=postgres://miniflux:somepass888@db/miniflux?sslmode=disable
- POLLING_FREQUENCY=15
- RUN_MIGRATIONS=1
db:
image: postgres:latest
container_name: postgres
restart: unless-stopped
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=somepass888
volumes:
- miniflux-db:/var/lib/postgresql/data
rsshub:
image: diygod/rsshub:latest
container_name: rsshub
restart: unless-stopped
ports:
- "1200:1200"
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: "redis://redis:6379/"
PUPPETEER_WS_ENDPOINT: "ws://browserless:3000"
depends_on:
- redis
- browserless
browserless:
image: browserless/chrome:latest
container_name: browserless
restart: unless-stopped
redis:
image: redis:alpine
container_name: redis
restart: unless-stopped
volumes:
- redis-data:/data
volumes:
miniflux-db:
redis-data:
接著一行指令即可啓動所有服務
$ docker-compose up -d
以上指令輸入完畢,就會看到 docker 開始部屬,視網路以及機器效能,等待幾分鐘全部完畢後
還需要下面兩條指令初始化 Miniflux 資料庫
# 下面這條指令在日後 Miniflux 大版本升級時候有可能也會用到
$ docker-compose exec miniflux /usr/bin/miniflux -migrate
# 下面這條在新增管理員帳號跟密碼,等下要登入 Miniflux 管理後台用的
$ docker-compose exec miniflux /usr/bin/miniflux -create-admin
完成以上指令就完成全部安裝,只要打開瀏覽器輸入伺服器 IP 加上端口 8888 即可進入 Miniflux 網頁
Miniflux 真的輕巧,登入畫面極度簡約,只有帳號、密碼以及 Login 按鈕,連個 logo 都沒有 👍
Miniflux 的設定就不用多說了,就算看不懂英文,軟體也有內建簡體中文
RSSHub 的使用
這裡簡單介紹一下 RSSHub 使用方法,官網上面有列出非常多「原本不支援或者支援不夠好」的 RSS 列表
例如 Facebook 的粉絲專頁、或者是某人的 Instagram、Twitter 帳號,也可以拿來訂閱 Dcard 熱門文章之類的
通通可以透過 RSSHub 轉換 RSS 後來訂閱更新通知,非常非常的實用!
如果在官網搜尋發現目前沒有支援你想要的網站,你也可以到這邊發個 RSS Request
說不定哪天他們更新就加入了呢? 😉
先到官網上面搜一下看看你想要 RSS 化的網址,例如 Facebook 粉絲專頁
進入後會跳出關於 Facebook 粉絲專頁的路由寫法
如上圖,這裡搜出來後會有兩個重要的資料,一個是路由寫法,另外一個是參數
以下使用「源源鋼藝」在臉書上面的粉絲專頁作為示範
如上圖,稍微看一下就能明白路由與參數寫法規則,最終得出我們自建 RSSHub 訂閱源源鋼藝粉專的網址
http://rsshub:1200/facebook/page/uanuan.cc/
最後我們回到 Miniflux 網頁,把以上那串網址貼到自架的 Miniflux 訂閱按下去即可
成功訂閱之後顯示的效果:
RSSHub 把臉書的內文也成功爬出來了,完美~
在 macOS 上面的 Reeder 客戶端也是完美~
所以如果你有網站想要加到你 RSS 訂閱,但該網站卻沒有提供 RSS 訂閱網址時候
你就可以到 RSSHub 官網上面查查看有無支援的路由,他們社群更新維護的非常勤勞
有問題也可以用中文回報,溝通起來輕鬆沒有問題
同場加映:Caddy 反向代理 + 免費 SSL 憑證全自動申請
如果是搭在區域網內沒有外出使用的需求,那麼上面做法已經足夠
但如果你是搭在租的 VPS 或者是有外出使用的需求,建議就要繼續下面的操作了
首先你會需要有一個固定 IP 以及自己的域名(域名可以參考以前 nctu.me 免費域名註冊)
先把想要的子域名綁在該台機器的固定 IP 上以後,我們就可以繼續往下操作
通常情況我們會在同一台伺服器上安裝多種服務,所以我們需要使用反向代理在前端做引導分流
使用不同域名指到內部不同服務,例如:
今天搭的 Miniflux,我們可以設個子域名為 rss rss.example.com -> 127.0.0.1:8888
同樣機器上另外搭的 AdGuard Home,可以設個子域名為 ag ag.example.com -> 127.0.0.1:3000
另外還搭了個人部落格的話,可以設個子域名為 blog blog.example.com -> 127.0.0.1:6599
跟 Miniflux 同樣使用 Go 語言寫的 Caddy 就非常適合這個工作,簡單幾行設定檔即可立刻啓動
比以前用 Nginx 的複雜設定簡單非常多,而且還自帶 Let’s Encrypt SSL 憑證申請與自動續期
想要了解更詳細的可以去官網看說明書
Caddy 是使用 Go 語言寫的,所以你可以把所有原始碼下載下來自己編譯,也可以直接使用官方編譯好的執行檔
直接到官方編譯好的執行檔下載: https://github.com/caddyserver/caddy/releases
下載請根據自己平台對應的執行檔,底下操作使用的是 linux amd64
# 下載編譯好的 Caddy 執行檔
$ wget https://github.com/caddyserver/caddy/releases/download/v2.0.0-beta.15/caddy2_beta15_linux_amd64
# 賦予執行和設定低端口綁定的權限
$ chmod +x caddy2_beta15_linux_amd64 && sudo setcap cap_net_bind_service=+ep caddy2_beta15_linux_amd64
# 把執行檔放到系統資料夾並改名
$ sudo mv caddy2_beta15_linux_amd64 /usr/local/bin/caddy
開始寫一個 Caddy Server 的設定檔
$ sudo mkdir /etc/caddy && sudo nano /etc/caddy/Caddyfile
拷貝以下內容貼上(注意:以下的第一行域名部分請修改為你自己的域名)
https://rss.example.com {
encode zstd gzip
reverse_proxy 127.0.0.1:8888
}
Caddy 設定檔就是這麼簡單,四行搞定,啓動後 Caddy 會自動去 LE 申請 SSL 憑證並自動維護續期
瞬間搭一個 https 的反向代理或者網頁伺服器再也沒這麼簡單過~
下面我們要開防火牆,把 http 80 跟 https 443 打開(80 是申請 SSL 憑證時會用到的)
$ sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
$ sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
# 下面這行,開機後會自動載入本機目前設定的防火牆規則
$ sudo apt install iptables-persistent
打開機器的防火牆後,如果機器是託管在 GCP 或者 Oracle 之類的也不要忘記到網站開啟防火牆規則
確認防火牆 80、443 端口都打開後,我們先跑看看 Caddy 有無問題,執行下面指令
$ sudo caddy run --config /etc/caddy/Caddyfile
接著會看到一連串啓動 INFO,第一次啓動的話可能需要點時間(Caddy 需要去申請驗證 SSL 憑證)
稍等幾十秒到一、兩分鐘,會看見驗證通過並且開始啟用憑證時,可以打開瀏覽器,輸入自己的網址
正常的話就會看見你搭建的 Miniflux 登入頁面,接著我們回到終端機,按下鍵盤 Ctr + C 中斷 Caddy 執行
我們接下來要設定讓系統每次重開機都自動啓動 Caddy 伺服器
# 製作開機自動啓動服務檔
$ sudo nano /etc/systemd/system/caddy.service
拷貝以下全部內容,並直接貼上保存退出
[Unit]
Description=Caddy Server
After=syslog.target
After=network.target
[Service]
User=root
Group=root
LimitNOFILE=64000
ExecStart=/usr/local/bin/caddy run --config /etc/caddy/Caddyfile
Restart=always
[Install]
WantedBy=multi-user.target
接著輸入以下指令啟用 Caddy Service
$ sudo systemctl daemon-reload
$ sudo systemctl enable caddy.service
$ sudo systemctl start caddy.service
以上全部設定完畢後,即可安全的使用你的專屬域名打開你專屬的 RSS 閱讀器
我個人還蠻喜歡使用 Docker 玩新東西的,隨便怎麼亂裝亂玩都沒關係,實驗完畢後簡單一個指令就刪光光
系統還是維持乾淨狀態,而且搬家遷移速度也很快,短短幾分鐘內就能搞定 😍