Tiny Tiny RSS 搭建教程

昨天讲了 RSS 的一些使用技巧,今天就来讲讲如何搭建专属于我们自己的 Tiny Tiny RSS 服务器以及一些需要注意的点吧。这可能是目前最好的教程了吧。

搭建要求

  1. 一台服务器(我是 Debian 10,以它为例),能连上外网最好
  2. 知道 Linux 基本命令

安装方式

  1. 传统方式安装,通过 git clone 的方式安装 TTRSS,这种方式安装比较慢,而且难度比较大,这里不介绍这种方式,如果有兴趣的话可以去官方 wiki 瞅瞅。
  2. Docker 安装,可以将 Docker 看作 虚拟机,但是又有占用小、启动快等优点,这里采用的是 @HenryQW 的通过 docker-compose 部署。戳这里查看文档

开始安装

安装 Docker

首先升级系统到最新

apt update && apt upgrade

可以选择使用一键脚本安装 Docker,优点是方便快速,缺点是有可能不稳定,如果使用此方法运行下面的命令后跳过后面的步骤直接到下一步。想一步步安装的请无视。

curl https://get.docker.com/ | sh

然后安装一些软件包使 apt 支持 https

apt install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common

添加 Docker 官方的 GPG 密钥

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

添加 Docker CE 稳定版的库(nightlytest 版本可通过替换 stable 实现),这里是 amd64 架构的,其他架构自行替换。

sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"

接下来更新 apt 包索引

apt update

安装最新的 Docker CE 和 containerd(非必选)

apt install docker-ce docker-ce-cli containerd.io

测试 docker 是否安装成功

docker run hello-world

将 Docker 加入开机自启

systemctl enable docker

成功运行示意图

安装 docker-compose

安装 docker-compose 最新版的命令可以在这里查看:https://github.com/docker/compose/releases

通过 docker-compose 部署

下载 docker-compose.yml 至任意目录或者新建 docker-compose.yml 拷贝我的内容进去。

注意事项:

  1. 包含了:TTRSSPostgreSQLMercury Parser APIOpenCC API 四个镜像,后面两个为可选项,可以安装也可以不安装。
  2. 请务必更改 postgres 用户密码。
  3. 默认通过 181 端口访问 TTRSS,
  4. 默认账户:admin 密码:password,请第一时间更改。
docker-compose.yml
version: '3'

services:
database.postgres:
image: postgres:alpine
container_name: postgres
restart: always
environment:
- PG_PASSWORD=password # 务必修改密码!
- DB_EXTENSION=pg_trgm
volumes:
- ./postgres/data/:/var/lib/postgresql/ # 将数据库数据保存到当前目录的 postgres/data/ 文件夹中

service.rss:
image: wangqiru/ttrss:latest
container_name: ttrss
restart: always
ports:
- 181:80
environment:
- SELF_URL_PATH=http://localhost:181/ # 更改为你自己的域名或者 IP!
- DB_HOST=database.postgres # 数据库地址
- DB_PORT=5432 # 数据库端口
- DB_NAME=ttrss # 数据库名称
- DB_USER=postgres # 数据库用户名
- DB_PASS=password # 务必修改密码(应与上面修改的密码相同)
- ENABLE_PLUGINS=auth_internal,fever # 在系统层面启用的插件名称(为所有用户启用),auth_internal 为必选
stdin_open: true
tty: true
command: sh -c 'sh /wait-for.sh database.postgres:5432 -- php /configure-db.php && exec s6-svscan /etc/s6/'

service.mercury: # 在插件页 API 地址填写 `service.mercury:3000` 启用插件
image: wangqiru/mercury-parser-api:latest
container_name: mercury
restart: always
expose:
- 3000

service.opencc: # 在插件页 API 地址填写 `service.opencc:3000` 启用插件
image: wangqiru/opencc-api-server:latest
container_name: opencc
restart: always
environment:
- NODE_ENV=production
expose:
- 3000

支持的环境变量列表:

  • SELF_URL_PATH: TTRSS 实例地址
  • DB_HOST: 数据库地址
  • DB_PORT: 数据库端口
  • DB_NAME: 数据库名字
  • DB_USER: 数据库用户名
  • DB_PASS: 数据库密码
  • ENABLE_PLUGINS: 在系统层面启用的插件名称,其中 auth_internal 为必须启用的登录插件
  • SESSION_COOKIE_LIFETIME: 使用网页版登陆时 cookie 过期时间,单位为小时,默认为 24 小时

修改完成后在同目录下运行 docker-compose up -d 等待部署完成即可。此时通过域名(域名需解析到这个 VPS)或 ip 加刚刚设置的端口已经可以开始使用 TTRSS 了,出来登录的界面后先去改个密码,然后来开启 HTTPS 访问。

配置 HTTPS

首先安装 nginx 并将其加入开机自启:

apt install nginx
systemctl enable nginx

然后编写 ttrss 反向代理配置文件

新建 /etc/nginx/conf.d/ttrss.conf 并将一下内容写入,注意替换域名。

nano /etc/nginx/conf.d/ttrss.conf
/etc/nginx/conf.d/ttrss.conf
upstream ttrssdev {
server 127.0.0.1:181;
}

server {
listen 80;
server_name youdomain.com;
#return 301 https://youdomain.com$request_uri;
#rewrite ^(.*)$ https://$host$1 permanent;
}

server {
listen 443 ssl;
gzip on;
server_name youdomain.com;

access_log /var/log/nginx/ttrssdev_access.log combined;
error_log /var/log/nginx/ttrssdev_error.log;

location / {
proxy_redirect off;
proxy_pass http://ttrssdev;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Frame-Options SAMEORIGIN;

client_max_body_size 100m;
client_body_buffer_size 128k;

proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}

然后使用 nginx -t 查看有无错误,没有错误后使用 nginx -s reload 重启 Nginx 服务。此时使用域名或 ip 应该可以直接访问了,不过这时还是 http。

然后使用 Let’s Encrypt 官方推荐的 Certbot 获取免费的 SSL 证书。

打开 Certbot 说明 后选择 Nginx 和运行的系统后就可以查看官方详细地说明,跟着做一遍就好了。

Cerbot 说明界面

有证书之后再再访问我们的 TTRSS 服务器令人喜爱的小绿锁是不是就出来呢(可能需要重启 Nginx 服务)。

到这个界面就算是告一段落了,撒花!

TTRSS 界面

TTRSS 插件

Mercury 全文获取

Mercury 全文获取插件需要配合单独的 Mercury Parser API 服务器使用,docker-compose 部署方式已经包含 HenryQW/mercury-parser-api 服务器。

设置步骤:

首先去 TTRSS 的偏好设置中开启 Mercury。

开启 Mercury

再在设置中填写 mercury 容器的地址。

填写 Mercury API 地址

再右键点击源选择编辑信息源,在插件中对这个源开启插件。

对单个源开启插件

OpenCC 繁简转换

OpenCC 是一个开源的简繁转换项目,需要配合单独的 Mercury Parser API 服务器使用,docker-compose 部署方式已经包含 HenryQW/OpenCC.henry.wang 服务器。

开启 opencc

再在设置中填写刚刚查看的 Opencc 容器的地址。

填写 Opencc API 地址

备注:t2s为繁体转简体,其他的转换方式如下:

  • s2t: Simplified Chinese to Traditional Chinese 简体到繁体
  • t2s: Traditional Chinese to Simplified Chinese 繁体到简体
  • s2tw: Simplified Chinese to Traditional Chinese (Taiwan Standard) 简体到台湾正体
  • tw2s: Traditional Chinese (Taiwan Standard) to Simplified Chinese 台湾正体到简体
  • s2hk: Simplified Chinese to Traditional Chinese (Hong Kong Standard) 简体到香港繁体(香港小学学习字词表标准)
  • hk2s: Traditional Chinese (Hong Kong Standard) to Simplified Chinese 香港繁体(香港小学学习字词表标准)到简体
  • s2twp: Simplified Chinese to Traditional Chinese (Taiwan Standard) with Taiwanese idiom 简体到繁体(台湾正体标准)并转换为台湾常用词汇
  • tw2sp: Traditional Chinese (Taiwan Standard) to Simplified Chinese with Mainland Chinese idiom 繁体(台湾正体标准)到简体并转换为中国大陆常用词汇
  • t2tw: Traditional Chinese (OpenCC Standard) to Taiwan Standard 繁体(OpenCC 标准)到台湾正体
  • t2hk: Traditional Chinese (OpenCC Standard) to Hong Kong Standard 繁体(OpenCC 标准)到香港繁体(香港小学学习字词表标准)

这个插件同样需要去订阅源的编辑源信息中开启。

Fever API

提供 Fever API 支持,对于使用 Reeder 的用户十分有用。该插件默认作为系统插件启用。

首先在设置中启用 API

启用 API

然后在插件中设置 Fever API 密码

填写 Fever API 密码

在支持 Fever 的阅读器使用 https://youdomain.com/plugins/fever/ 作为服务器地址,使用刚刚设置的密码登录。由于该插件使用未加盐的 MD5 加密密码进行通信,强烈建议使用应用专用密码并开启 HTTPS