一直在用 RSS 来组织信息源,建立个人信息输入系统。之前发现 RSSHub 这个国人编写的 Feed 制作神器,通过它可以订阅不提供 RSS 功能的网络内容来源。于是 Inoreader 中的订阅源数量就暴增。但是从去年起 Inoreader 免费版只能添加最多 100 个订阅源,付费版又超贵而且用不到那么多功能,再次体验到免费的服务迟早让人不爽又无法反驳,毕竟企业要生存。如果使用本地 RSS 阅读软件,又无法实现多客户端同步,那只剩一个办法,自己搭建个 RSS 阅读器。Tiny Tiny RSS(简称 TTRSS)貌似是开源界同类软件中最有名的,教程也多,就选这个了。

作为编程小白,所谓搭建过程,就是先大概理解下教程中的原理,然后复制粘贴运行命令行。嗯嗯,就是这么任性,不懂也能折腾成功,感谢互联网上的分享。

99%的操做都遵循无影人的这篇教程 《在 Debian 9 上安装 TT-RSS》,最后运行 TTRSS 时候遇到一个小问题,会在后面说道。


1 更新系统

1
2

sudo apt update && sudo apt upgrade

2 安装 PHP

1
2
3
4
5
6

sudo apt install php7.0-cli php7.0-curl php7.0-mbstring \

php7.0-json php7.0-gd php7.0-pgsql php7.0-xml \

php7.0-opcache php7.0-fpm

3 安装、配置 PostgreSQL

3.1 安装

1
2

sudo apt install postgresql

3.2 配置

1
2
3
4
5
6
7
8

sudo -u postgres psql

postgres=# CREATE USER "www-data" WITH PASSWORD 'yourpasshere';

postgres=# CREATE DATABASE ttrss WITH OWNER "www-data";

postgres=# \quit

yourpasshere 替换为你自己的密码,建议使用密码生成器产生的高强度密码。

4 安装 TTRSS

建立目录/var/www/,并属于 www-data:www-data

1
2
3
4

sudo mkdir /var/www

chown -R www-data:www-data /var/www

然后下载安装 TTRSS。

1
2
3
4

cd /var/www/

sudo -u www-data git clone https://tt-rss.org/git/tt-rss.git tt-rss

5 安装 Caddy

Caddy 是一个用 Golang 写成的 Web 服务器,相较于 Nginx,Caddy 的配置文件相当简单,而且 Caddy 可以自动签发 Let’s Encrypt 证书,对于新手相当的友好。

如果想更多的了解 Caddy 可以阅读 这篇博文

5.1 安装 Caddy

安装 Caddy 以及服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20

curl https://getcaddy.com | sudo bash -s personal http.git,http.cache



sudo curl -s https://raw.githubusercontent.com/mholt/caddy/master/dist/init/linux-systemd/caddy.service -o /etc/systemd/system/caddy.service

sudo mkdir /etc/caddy

sudo chown -R root:www-data /etc/caddy

sudo touch /etc/caddy/Caddyfile



sudo mkdir /etc/ssl/caddy

sudo chown -R www-data:root /etc/ssl/caddy

sudo chmod 0770 /etc/ssl/caddy

允许 Caddy 绑定低位端口:

1
2

sudo setcap cap_net_bind_service=+ep $(which caddy)

如果上述命令出错,尝试 sudo apt install libcap2-bin

重载服务

1
2
3
4

sudo systemctl daemon-reload

sudo systemctl enable caddy.service

5.2 配置 Caddy

 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

example.com { #你的域名

gzip

cache

tls i@example.com #你的邮箱,用于申请 Let’s Encrypt 证书

root /var/www/tt-rss

ext .html .htm .php

git https://tt-rss.org/git/tt-rss.git #自动更新 tt-rss

fastcgi / /run/php/php7.0-fpm.sock php

status 404 { #保护敏感文件

  /.editorconfig

  /.git

  /.gitignore

  /.gitlab-ci.yml

  /CONTRIBUTING.md

  /README.md

  /COPYING

  }

}

将上述内容写入 /etc/caddy/Caddyfile, 确保域名指向本机后(不要开启 CDN),启动服务。

1
2

sudo systemctl start caddy.service

5.3 自动更新 Caddy (可选)

由于 Caddy 不在官方仓库中,可以通过创建服务实现 Caddy 自动更新。

 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

# /etc/systemd/system/upgrade_caddy.service

[Unit]

Description=Upgrade Caddy



[Service]

Type=oneshot

Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

ExecStart=/bin/bash -c "curl https://getcaddy.com | bash -s personal http.git,http.cache && systemctl restart Caddy.service"

# /etc/systemd/system/upgrade_caddy.timer

[Unit]

Description=upgrade caddy



[Timer]

OnCalendar=weekly

Persistent=true



[Install]

WantedBy=timers.target

创建上述文件,然后重载服务,Caddy 将每周检查一次更新。

1
2
3
4
5
6

sudo systemctl daemon-reload

sudo systemctl enable upgrade_caddy.timer

sudo systemctl start upgrade_caddy.timer

6 配置 TTRSS

访问你的 TTRSS 服务的网址https://example.com/

你将会看到如下的配置界面。

如上图进行配置,参数意义如下:

| Database type: | PostgreSQL |

| ————– | ———————- |

| Username: | www-data |

| Password: | yourpasshere |

| Database name: | ttrss |

| Host name: | |

| Port: | 5432 |

| RSS URL: | https://example.com/ |

7 配置 Feed 更新服务

创建以下路径和名称的文件,

1
2

touch /etc/systemd/system/ttrss_backend.service

写入下面的内容,

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

# /etc/systemd/system/ttrss_backend.service

[Unit]

Description=ttrss_backend

After=network.target mysql.service postgresql.service



[Service]

User=www-data

ExecStart=/var/www/tt-rss/update_daemon2.php



[Install]

WantedBy=multi-user.target

重载服务。

1
2
3
4
5
6

systemctl daemon-reload

systemctl enable ttrss_backend.service

systemctl start ttrss_backend.service

8 开启 PHP 7 OPcache (性能优化,可选)

打开 /etc/php/7.0/fpm/php.ini 文件,做出下面的调整:

 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

To enable the OPcache, change to the following lines of your php.ini file:



;opcache.enable=0

;opcache.memory_consumption=64

;opcache.max_accelerated_files=2000

;opcache_revalidate_freq = 2



Change to:



opcache.enable=1

opcache.memory_consumption=128

opcache.max_accelerated_files=4000

opcache_revalidate_freq = 240

遇到的问题

可能由于安装的 TTRSS 版本不同,按照以上步骤安装完成后,浏览器登录 TTRSS 网址,提示以下错误:

PHP UConverter class is missing, it’s provided by the Internationalization (intl) module

查了下,应该是缺少php7.0-intl模块造成的,于是安装该模块,再重新加载 TTRSS 服务,

 1
 2
 3
 4
 5
 6
 7
 8
 9
10

sudo apt install php7.0-intl



systemctl daemon-reload

systemctl enable ttrss_backend.service

systemctl start ttrss_backend.service

再次用浏览器登录,没有提示错误,问题解决。到此 TTRSS 就已经搭建成功了。


这时候访问你的 TTRSS 域名 https://example.com/,使用 username: admin, password: password 登录 TT-RSS ,修改密码,根据需求创建帐户,之后就可以开心的使用免费无限制订阅源的 RSS 阅读器了。