FreshRSS RSS 阅读器搭建教程
FreshRSS 是一款功能丰富的开源 RSS 阅读器,可以自行部署在服务器上,替代已关闭的 Google Reader 以及需要付费的 Feedly 等服务。它支持多用户、完善的分类管理、全文抓取和丰富的 API 接口,是自托管 RSS 阅读方案中最受欢迎的选择之一。本文将介绍如何在搬瓦工 VPS 上部署 FreshRSS。
一、FreshRSS 功能特点
- 多用户支持:一个实例可以为多个用户提供服务,每个用户有独立的订阅和设置。
- 分类管理:使用分类和标签组织订阅源,支持拖拽排序。
- 全文抓取:对于只提供摘要的 RSS 源,可以自动抓取完整文章内容。
- 过滤规则:设置关键词过滤规则,自动标记或隐藏特定文章。
- API 兼容:兼容 Google Reader API 和 Fever API,可以使用众多第三方客户端。
- 扩展插件:支持通过插件扩展功能,如 YouTube 订阅、全文提取等。
- OPML 导入导出:方便从其他 RSS 阅读器迁移订阅源。
- 键盘快捷键:支持丰富的键盘快捷键,提高阅读效率。
二、环境准备
- 搬瓦工 VPS 一台,512MB 内存即可(使用优惠码 NODESEEK2026 享受 6.77% 折扣)。
- 已安装 Docker 和 Docker Compose(参考 Docker 安装教程)。
- 域名一个(推荐)。
三、Docker Compose 部署
mkdir -p /opt/freshrss
cat > /opt/freshrss/docker-compose.yml <<'EOF'
version: '3.8'
services:
freshrss:
image: freshrss/freshrss:latest
restart: always
ports:
- "8080:80"
environment:
TZ: Asia/Shanghai
CRON_MIN: '3,33'
volumes:
- /opt/freshrss/data:/var/www/FreshRSS/data
- /opt/freshrss/extensions:/var/www/FreshRSS/extensions
logging:
options:
max-size: "10m"
EOF
CRON_MIN: '3,33' 表示每小时的第 3 分钟和第 33 分钟自动刷新订阅源。
四、启动和初始化
cd /opt/freshrss
docker compose up -d
访问 http://VPS_IP:8080,首次访问会显示安装向导:
- 检查系统要求(通常都会通过)。
- 选择数据库类型(默认 SQLite 即可,也可选 PostgreSQL)。
- 创建管理员账号和密码。
- 完成安装。
五、配置反向代理
cat > /etc/nginx/sites-available/freshrss <<'EOF'
server {
listen 80;
server_name rss.yourdomain.com;
location / {
proxy_pass http://127.0.0.1:8080;
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;
}
}
EOF
ln -sf /etc/nginx/sites-available/freshrss /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d rss.yourdomain.com
六、配置第三方客户端
FreshRSS 兼容 Google Reader API 和 Fever API,可以使用众多优秀的第三方客户端:
6.1 启用 API 访问
- 登录 FreshRSS,进入「设置」>「认证」。
- 勾选「允许 API 访问」。
- 设置 API 密码(可以与登录密码不同)。
6.2 推荐客户端
- Android:FeedMe、EasyRSS、ReadYou
- iOS:Reeder、NetNewsWire、lire
- 桌面:Fluent Reader、NewsFlash
在客户端中选择 Google Reader 或 Fever 协议,填入 FreshRSS 的 API 地址即可同步。
七、全文抓取配置
很多 RSS 源只提供文章摘要。FreshRSS 可以通过扩展抓取完整文章内容:
# 下载全文抓取扩展
cd /opt/freshrss/extensions
git clone https://github.com/kevinpapst/freshrss-xExtension.git xExtension-ReadingTime
然后在 FreshRSS 设置中启用相应扩展。也可以在订阅源设置中为特定源开启 CSS 选择器提取。
八、使用 PostgreSQL 数据库
如果订阅量较大,建议使用 PostgreSQL 替代默认的 SQLite:
cat > /opt/freshrss/docker-compose.yml <<'EOF'
version: '3.8'
services:
postgres:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_DB: freshrss
POSTGRES_USER: freshrss
POSTGRES_PASSWORD: freshrss_password
volumes:
- pg_data:/var/lib/postgresql/data
freshrss:
image: freshrss/freshrss:latest
restart: always
depends_on:
- postgres
ports:
- "8080:80"
environment:
TZ: Asia/Shanghai
CRON_MIN: '3,33'
volumes:
- /opt/freshrss/data:/var/www/FreshRSS/data
- /opt/freshrss/extensions:/var/www/FreshRSS/extensions
volumes:
pg_data:
EOF
九、数据备份
# 导出 OPML 订阅列表(通过 Web 界面)
# 备份数据目录
tar czf /opt/freshrss/backup_$(date +%Y%m%d).tar.gz /opt/freshrss/data
十、常见问题
部分 RSS 源无法订阅
某些网站可能屏蔽了来自 VPS IP 的访问。可以在 FreshRSS 设置中配置代理服务器来访问这些源。
自动刷新不工作
确认 CRON_MIN 环境变量已正确设置。可以查看容器日志确认 cron 任务是否正常执行:
docker compose logs freshrss | grep -i cron
总结
FreshRSS 是自托管 RSS 阅读的最佳选择之一,功能丰富且稳定可靠。如果你更偏好极简风格,可以参考 Miniflux RSS 阅读器。搭配 Wallabag 稍后阅读 可以构建完整的信息获取和阅读体系。选购搬瓦工 VPS 请访问 bwh81.net,使用优惠码 NODESEEK2026 享受 6.77% 折扣。