一直在用 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 替换为你自己的密码,建议使用密码生成器产生的高强度密码。
建立目录/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
|
访问你的 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 阅读器了。