简介

FreshRSS 是一个RSS聚合器和阅读器。它使您可以一目了然地阅读和关注多个新闻网站,而无需从一个网站浏览到另一个网站。

FreshRSS有很多功能,包括:

  • RSS 和 Atom 聚合

  • 您喜欢文章或想稍后阅读,进行标记

  • 过滤和搜索功能有助于轻松查找文章

  • 统计数据显示您关注的所有网站的发布频率

  • 将源导入/导出为 OPML 格式

  • 各类主题

  • 各类扩展

  • 类似“谷歌阅读器”的API,用于连接Android应用程序

  • 该应用程序是“响应式”的,这意味着它可以适应小屏幕,因此您可以将物品放在口袋里

  • 自托管:代码是免费的(在AGPL3许可证下),因此您可以托管自己的FreshRSS实例

  • 多用户,因此您还可以为朋友和家人出租房源

  • 与一堆服务共享文章链接

Github地址:https://github.com/FreshRSS/FreshRSS

官方网站:https://freshrss.github.io/FreshRSS

官方Demo:https://demo.freshrss.org

  • 用户名: demo
  • 密码: demodemo

需求

Software Recommended Also Works With
Web server Apache 2 Nginx, lighttpd
PHP PHP 7.2+
PHP modules Required: libxml, cURL, JSON, PDO_MySQL, PCRE and ctype.

Required (32-bit only): GMP

Recommended: Zlib, mbstring, iconv, ZipArchive.

For the whole modules list see Dockerfile
Database MySQL 5.5.3+ SQLite 3.7.4+, PostgreSQL 9.5+
Browser Firefox Chrome, Opera, Safari, or Edge

下载

稳定版:https://github.com/FreshRSS/FreshRSS/releases/latest

开发者版本:https://github.com/FreshRSS/FreshRSS/archive/edge.zip

或者直接使用 git

1
git clone https://github.com/FreshRSS/FreshRSS.git

配置

数据库(2选1)

  • MySQL

    1
    mysql -u root -p
    1
    2
    3
    4
    5
    CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
    CREATE DATABASE `databaseName`;
    GRANT ALL privileges ON `databaseName`.* TO '<username>'@localhost;
    FLUSH PRIVILEGES;
    QUIT;
  • PostgreSQL

    1
    2
    3
    sudo -i -u postgres psql -c "CREATE DATABASE databaseName;"
    sudo -i -u postgres psql -c "CREATE USER username WITH password 'password';"
    sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE databaseName TO username;"

服务器

官方给的配置文档,根据自己情况更改:

Apache2:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<VirtualHost *:80>
DocumentRoot /var/www/html/

#Default site...

ErrorLog ${APACHE_LOG_DIR}/error.default.log
CustomLog ${APACHE_LOG_DIR}/access.default.log vhost_combined
</VirtualHost>

<VirtualHost *:80>
ServerName rss.example.net
DocumentRoot /path/to/FreshRSS/p/

<Directory /path/to/FreshRSS/p>
AllowOverride AuthConfig FileInfo Indexes Limit
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
# Consider piping the logs for cleaning passwords; cf. comment higher up.
CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined

AllowEncodedSlashes On
</VirtualHost>

<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName rss.example.net
DocumentRoot /path/to/FreshRSS/p/

<Directory /path/to/FreshRSS/p>
AllowOverride AuthConfig FileInfo Indexes Limit
Require all granted
</Directory>

ErrorLog ${APACHE_LOG_DIR}/freshrss_error.log
CustomLog ${APACHE_LOG_DIR}/freshrss_access.log combined

<IfModule mod_http2.c>
Protocols h2 http/1.1
</IfModule>

# For the API
AllowEncodedSlashes On

SSLEngine on
SSLCompression off
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
# Additional SSL configuration, e.g. with LetsEncrypt
</VirtualHost>
</IfModule>

Nginx:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
server {
listen 80;
listen 443 ssl;

# HTTPS configuration
ssl on;
ssl_certificate /etc/nginx/server.crt;
ssl_certificate_key /etc/nginx/server.key;

# your server’s URL(s)
server_name rss.example.net;

# the folder p of your FreshRSS installation
root /srv/FreshRSS/p/;

index index.php index.html index.htm;

# nginx log files
access_log /var/log/nginx/rss.access.log;
error_log /var/log/nginx/rss.error.log;

# php files handling
# this regex is mandatory because of the API
location ~ ^.+?\.php(/.*)?$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
# By default, the variable PATH_INFO is not set under PHP-FPM
# But FreshRSS API greader.php need it. If you have a “Bad Request” error, double check this var!
# NOTE: the separate $path_info variable is required. For more details, see:
# https://trac.nginx.org/nginx/ticket/321
set $path_info $fastcgi_path_info;
fastcgi_param PATH_INFO $path_info;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location / {
try_files $uri $uri/ index.php;
}
}

注意事项

  • 服务器指向目录为 ./p/ 并授权

    1
    2
    chown -R www-data:www-data /path/to/FreshRSS/p
    chmod -R 755 /path/to/FreshRSS/p
  • 授权 ./data/

    1
    2
    chown -R www-data:www-data /path/to/FreshRSS/data
    chmod -R 755 /path/to/FreshRSS/data
  • 更多设置可以在 config.default.php 中查看

  • 使用Apache2的话,需要启用 AllowEncodedSlashes 来更好的适配手机端

访问

重启服务器,并访问。

  1. 选择语言

  2. 检查

  3. 数据库配置

  4. 常规配置

  5. 安装成功

  6. 返回登录界面

  7. 登录成功

使用

试着添加阮一峰的网络日志:http://www.ruanyifeng.com/blog/atom.xml

回到主界面,已经可以看到文章了。

点击进去也可以正常阅读。

应用、扩展

FreshRSS 支持手机应用以及各类扩展。

访问:https://github.com/FreshRSS/FreshRSS#extensions 获取更多。

最后

针对目前国内的情况,RSS订阅源越来越少,而且现在信息化时代,垃圾信息太多,想要找到一个优质的订阅源还是有点困难的。如果可以找到一些优质订阅源,这个程序可以让我们节省很多时间。