Google Reader死了之后,Feedly收费、Inoreader限速、国内RSS服务一个接一个关停。在VPS上用Docker搭个FreshRSS,数据自己管、没广告、不限订阅源数量、手机和电脑都能同步阅读进度。
Docker部署一条命令
docker run -d --restart always
-p 8088:80
-e CRON_MIN='5,35'
-v freshdata:/var/www/FreshRSS/data
-v freshext:/var/www/FreshRSS/extensions
--name freshrss
freshrss/freshrss:latest
# 访问 http://VPS_IP:8088 进初始化向导首次访问创建管理员账号,数据库选SQLite(够用、零配置)。完成后登录进主界面→右上角齿轮→”认证”→勾选”允许API访问”→保存密码(后面手机客户端用)。
雨云入门VPS月付几块钱跑FreshRSS绰绰有余——RSS阅读器不吃资源。优惠码 admin01 首月五折。
添加订阅源
右上角”订阅管理”→”添加订阅源”→粘贴RSS地址。支持普通RSS/Atom和JSON Feed。填完点”添加”,FreshRSS自动抓取最新文章。
怎么找RSS源?大部分博客、新闻网站都有RSS——在网址后面加 /feed、/rss、/atom.xml 试试。或者用RSSHub(rsshub.app)——一个能把几乎所有网站转换成RSS的工具,支持微博、知乎、B站、Twitter等几百个源。
导入OPML:如果之前用其他RSS阅读器(Feedly、Inoreader),导出订阅列表为OPML文件,在FreshRSS的”订阅管理”→”导入”上传,几十个订阅源一次性迁过来。
手机客户端同步
FreshRSS支持Google Reader API兼容接口,大部分RSS客户端都能对接。推荐两个免费客户端:
- NetNewsWire(iOS/Mac免费开源):设置→添加账户→FreshRSS→填服务器地址(https://你的域名/api/greader.php)+用户名+API密码
- FeedMe(Android免费):设置→FreshRSS→填地址和认证信息
配好后手机端阅读的所有进度自动同步回FreshRSS服务器——电脑上看到一半的文章,手机上接着看。
配置自动更新频率
docker run时设的CRON_MIN参数就是更新频率——’5,35’表示每小时的第5和第35分钟各抓一次(每半小时)。这个频率对大多数订阅源足够——新闻网站和博客半小时更新一次够了。
高频抓的话改CRON_MIN为’*/15’(每15分钟)或’*/5’(每5分钟)。太频繁可能被源站限流——有的网站检测到频繁抓取会封IP。FreshRSS用VPS出口IP抓取,固定一个IP不会触发太多风控。
Nginx反代HTTPS
apt install nginx certbot python3-certbot-nginx -y
nano /etc/nginx/sites-available/freshrss
server {
listen 80;
server_name rss.你的域名.com;
client_max_body_size 10M;
location / {
proxy_pass http://127.0.0.1:8088;
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;
}
}
ln -s /etc/nginx/sites-available/freshrss /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
certbot --nginx -d rss.你的域名.com和商业RSS服务的对比
| 功能 | FreshRSS | Feedly免费 | Inoreader免费 |
|---|---|---|---|
| 订阅源数量 | 不限 | 100个 | 150个 |
| 广告 | 无 | 有广告 | 有广告 |
| 全文搜索 | 有 | 付费 | 付费 |
| API开放 | 完整Google Reader API | 付费 | 有限 |
| 数据归属 | 你的服务器 | Feedly服务器 | Inoreader服务器 |
常见问题
有些RSS源抓取不到内容?
有的网站RSS只输出标题和摘要(不输出全文)。在添加订阅源时勾选”检索全文”,FreshRSS会尝试从原始网页提取全文。成功率因网站而异——有些网站结构复杂提取不全。用RSSHub生成的源通常自带全文。
FreshRSS数据库选SQLite以后能换吗?
SQLite在订阅源几百个、文章几万篇时性能无压力。只有到了”几千个源、百万篇文章”的量级才需要换MySQL/PostgreSQL。普通用户用SQLite就够了,不用换。
手机客户端显示”未授权”?
确认FreshRSS后台勾选了”允许API访问”。确认API密码填的是后台”认证”页面设置的密码(不是登录密码,是单独的API密码)。确认URL结尾有/api/greader.php。






