利用 Miniflux 自建 RSS
本文介绍如何使用 Miniflux 搭建属于自己的 RSS 服务。
RSS 是一种消息来源格式规范,用以聚合多个网站更新的内容并自动通知网站订阅者。使用 RSS 后,网站订阅者便无需再手动查看网站是否有新的内容,同时 RSS 可将多个网站更新的内容进行整合,以摘要的形式呈现,有助于订阅者快速获取重要信息,并选择性地点阅查看。
本教程基于 Debian 11 系统且不直接使用 root 用户。如果你对使用 SSH 连接服务器和创建新用户有疑惑的话,请参考这篇博文。
与 Tiny Tiny RSS 对比
Miniflux 和 Tiny Tiny RSS 是两个优秀的免费开源 RSS 聚合阅读器。
虽然 Tiny Tiny RSS 比较成熟,可是基于 PHP 编写的 Tiny Tiny RSS,实在太「重」。如果你感兴趣的话,推荐尝试 Awesome TTRSS 这个项目,Awesome TTRSS 旨在提供一个 「一站式容器化」 的 Tiny Tiny RSS 解决方案,通过提供简易的部署方式以及一些额外插件,以提升用户体验。
Miniflux 是基于 GO 编写的,程序设计极简,无外部依赖,功能却丝毫不差。
安装 Miniflux
更新 Debian 系统
为防止遇到无法拉取 HTTPS 源的情况,先运行以下命令:
sudo apt install apt-transport-https ca-certificates
你可根据机器的网络环境,自行判断是否手动更改 APT 源。
更改 APT 源
tee /etc/apt/sources.list << EOF
deb https://opentuna.cn/debian/ bullseye main contrib non-free
# deb-src https://opentuna.cn/debian/ bullseye main contrib non-free
deb https://opentuna.cn/debian/ bullseye-updates main contrib non-free
# deb-src https://opentuna.cn/debian/ bullseye-updates main contrib non-free
deb https://opentuna.cn/debian/ bullseye-backports main contrib non-free
# deb-src https://opentuna.cn/debian/ bullseye-backports main contrib non-free
deb https://opentuna.cn/debian-security bullseye-security main contrib non-free
# deb-src https://opentuna.cn/debian-security bullseye-security main contrib non-free
EOF
更新系统
sudo apt update && sudo apt upgrade
安装 Docker
安装 Docker 所必需的前置包
sudo apt install ca-certificates curl gnupg lsb-release
添加 Docker 官方的 GPG 密钥
curl -fsSL https://download.docker.com/linux/debian/gpg \
| sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
添加 Docker 稳定版仓库
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/debian $(lsb_release -cs) stable" \
| sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
安装 Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
添加当前用户至 Docker 用户组
sudo usermod -aG docker $USER
安装 Docker Compose
Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排。
请注意将下面命令中的 v2.2.2
替换为 Docker Compose 的最新版本。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" \
-o /usr/libexec/docker/cli-plugins/docker-compose
sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose
使用 Docker Compose 安装 Miniflux
创建 ~/miniflux
目录
mkdir ~/miniflux && cd ~/miniflux
创建 docker-compose.yml
touch docker-compose.yml
修改 docker-compose.yml
文件内容
version: '3.4'
services:
miniflux:
image: 'miniflux/miniflux:latest'
restart: unless-stopped
ports:
- '<端口>:8080'
depends_on:
- db
environment:
- 'DATABASE_URL=postgres://miniflux:<密码>@db/miniflux?sslmode=disable'
- RUN_MIGRATIONS=1
- CREATE_ADMIN=1
- ADMIN_USERNAME=<管理员用户名>
- ADMIN_PASSWORD=<管理员密码>
healthcheck:
test:
- CMD
- /usr/bin/miniflux
- '-healthcheck'
- auto
db:
image: 'postgres:latest'
restart: unless-stopped
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=<密码>
volumes:
- 'miniflux-db:/var/lib/postgresql/data'
healthcheck:
test:
- CMD
- pg_isready
- '-U'
- miniflux
interval: 10s
start_period: 30s
volumes:
miniflux-db: null
测试 Miniflux
docker compose up -d
此时浏览器输入 IP:<端口>
应该已经可以访问 Miniflux。如无法访问,请检查服务器的防火墙设置。
安装 Nginx
安装 Nginx 所必需的前置包
sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
添加 Nginx 官方的 GPG 密钥
curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg > /dev/null
添加 Nginx 稳定版仓库
echo \
"deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
http://nginx.org/packages/debian `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list
安装 Nginx
sudo apt update
sudo apt install nginx
申请 SSL 证书
安装 acme.sh
curl https://get.acme.sh | sh -s email=<邮箱>
开启 acme.sh
自动更新
acme.sh --upgrade --auto-upgrade
申请 SSL 证书
sudo acme.sh --issue --nginx --keylength ec-256 -d <域名>
安装 SSL 证书
sudo mkdir /etc/nginx/ssl
sudo acme.sh --install-cert --ecc -d <域名> \
--key-file /etc/nginx/ssl/privkey.pem \
--ca-file /etc/nginx/ssl/chain.pem \
--fullchain-file /etc/nginx/ssl/fullchain.pem \
--reloadcmd "service nginx force-reload"
配置 Nginx
获取 dhparam.pem
文件
sudo openssl dhparam -out /etc/nginx/ssl/dhparam.pem 2048
创建配置文件
sudo touch /etc/nginx/conf.d/miniflux.conf
修改配置文件
server {
listen 80 default_server;
listen [::]:80 default_server;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name <域名>
location / {
proxy_pass http://127.0.0.1:<端口>;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:MozSSL:10m;
ssl_session_tickets off;
ssl_dhparam /etc/nginx/ssl/dhparam.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
add_header Strict-Transport-Security "max-age=63072000" always;
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/nginx/ssl/chain.pem;
resolver 1.1.1.1;
}
启动 Nginx
sudo systemctl start nginx
此时应该已可以通过域名访问 Miniflux。如无法访问,请检查服务器的防火墙设置。
使用 Miniflux
网页端
登录后,可在 Settings 中更改语言为简体中文,还可以修改时区和主题。
移动端
在设置 ⇨ 集成中,开启 Fever 并设置 Fever 用户名和 Fever 密码。建议搭配 FeedMe (Android) 或 Reeder (Apple) 使用。
高级功能
过滤规则:最基础的 RSS 功能,可以过滤「垃圾」信息。
重写规则:Miniflux 允许通过添加重写规则来实现诸如在图片下方添加图片标题,抑或是添加视频播放器。
剔除规则:当 RSS 源仅提供文章摘要时,我们可以通过获取原始内容再搭配剔除规则的方式来抓取文章全部内容。
RSSHub - 万物皆可 RSS
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。
RSSHub 可以配合浏览器扩展 RSSHub Radar 和 移动端辅助 App RSSBud (iOS) 与 RSSAid (Android) 食用。
除了 RSS 阅读器之外,RSS 订阅源更是重中之重。然而,很多内容提供者 (包括但不仅限于微信公众号) 并不提供 RSS,但我们可以使用 RSSHub 来获取 RSS 订阅链接。
RSSHub 具体使用方法请参考官方文档